NodeJS
nodejs是js的执行环境。
nodejs是Ryan Dahl在2009年5月发布,从chrome浏览器中将v8引擎分离出来,加入了一些服务器端必要的模块(事件、io、http、文件操作...)。
nodejs可以安装在客户端,可以辅助程序的开发。
nodejs也可以安装在服务器端,可以作为www服务(网站服务器)。
安装
Nodejs英文官网 :Node.js
Nodejs中文官网:Node.js 中文网
lts:长期支持版本。
current:最新版。
建议使用lts。
安装时,安装目录最好不要有中文。如果有中文目录,建议改为英文。
安装完成后可以在命令行下打印版本号:
node -v
v16.17.0
nodejs安装完成后,实际上会自动安装npm(包管理器)。
npm -v
8.15.1
如果提示:npm WARN config global --global
, --local
are deprecated. Use --location=global
instead.
表示npm当前版本与受支持的版本不一致,可以安装npm-windows-upgrade模块:
npm install -g npm-windows-upgrade
然后运行:
npm-windows-upgrade
改变npm的源
npm的数据源在国外,国内访问比较慢,此时,可以设置npm的源为本地源。
npm config set registry https://registry.npmmirror.com/
设置完后,可以查看当前的源地址:
npm config get registry
powshell
powshell默认不允许执行脚本,直接执行脚本会报错,此时,我们需要运行powshell的管理员模式:
set-ExecutionPolicy RemoteSigned
选是(Y)回车,打开执行权限。
nodejs的结构
在nodejs中,不存在window、document、DOM都没有。
nodejs自带内置模块、第三方模块、自己的模块。
全局变量
__filename 表示当前执行文件的全路径
__dirname 表示当前执行文件所在的路径
内置模块
HTTP模块
http模块负责处理http请求
引入模块:
const http = require('http')
创建服务器
const server = http.createServer(function (req, res) {
// console.log(req.url);
res.writeHead(200, { 'Content-Type': 'text/html; charset=UTF-8' });
res.end('这是服务器返回的信息,请求的地址是:' + req.url)
})
req和res是对象,req存储了所有客户端的请求数据,res封装了所有对客户端操作的方法。
设置服务器,让其监听(运行)端口:
server.listen(80, function () {
console.log('服务器启动在80端口');
})
fs模块
fs模块负责服务器上的文件,包括文件、目录的建立、移除、读取、写入
文件的读取:
//异步读取
const data = fs.readFile('作业.txt', 'utf-8', function (err, result) {
if (err) {
console.log('异步读取失败!');
} else {
console.log('异步读取成功!' + result);
}
})
//同步读取
const data1 = fs.readFileSync('作业.txt', 'utf-8');
console.log(data1);
读取到的是buffer对象,使用toString()转换为字符串。
文件写入:
const fs = require('fs');
//异步写入
fs.writeFile('作业.txt', '练习fs同步异步读写', function (err, result) {
if (err) {
console.log('写入失败', err);
} else {
console.log('写入完成', result);
}
})
//同步写入
const rr = fs.writeFileSync('同步写入作业.txt', '同步写入');
console.log(rr);
npm
npm是包管理器,负责整个项目的所有包及项目结构,项目管理器。
npm是官方推荐使用的包管理器,不是唯一,有第三方的包管理器可用yarn、pnpm.
项目的建立
npm init
或者
npm init -y
可以在项目根目录下自动建立package.json
文件。
package.json
很重要,它记录了项目所需的所有包的名称及版本号。
包的安装
npm install <包名1> <包名2>
node_modules 在当前项目的目录下
安装到全局
npm install <包名1> <包名2> -g
node_modules 在nodejs的安装目录下
install 可以简写为 i
包的卸载:
npm uninstall <包名1> <包名2>
npm uninstall <包名1> <包名2> -g
包的更新:
npm update <包名1> <包名2>
npm update <包名1> <包名2> -g
包的列表:
npm list
npm list -g
项目中的node_modules通常很大,node_modules不使用的时候(备份、传递,损坏),删除node_modules目录。
重新执行 npm install 自动查找package.json将其中记录的包顺序安装。