Node与包管理工具
nvm
①nvm用于管理多个版本的Node环境。
②安装Node。
③设置淘宝镜像源。
npm install -g cnpm --registry=https://registry.npm.taobao.org
npm config set registry https://registry.npm.taobao.org
package.json
①package.json
是包描述文件,也用于配置项目的其他功能。
②scripts
内置了钩子,在包安装或卸载时执行。也可以设置输入命令行执行指定脚本文件。
{
"scripts": {
"preinstall": "1.js",
"install": "2.js",
"uninstall": "3.js"
}
}
npm
npm -v # 查看当前NPM版本
npm init -y # 生成包描述文件
npm install # 根据包描述文件自动安装依赖包
npm i -g '依赖包名' # 安装全局依赖包
npm i -D '依赖包名' # 安装开发依赖包
npm publish '路径' # 发布依赖包
npm ls # 列出所有安装的依赖包
yarn
lerna
CommonJS
模块暴露和引用
const moduleName = require('模块名或路径');
module.exports = {}
模块机制
①模块是在运行时动态加载的,经历路径分析、文件定位和编译执行三个步骤,每个模块都是一个对象。
②路径分析时,Node会沿着路径向上逐级递归查找node_modules
中是否存在该模块。
③文件定位时,分析路径是文件还是目录,并补全文件的扩展名。
④编译执行时,Node会将JS文件内容进行包装,引入全局变量,隔离作用域。
(function (exports, require, module, __filename, __dirname) {'JS文件内容'});
事件循环
setTimeout()
setInterval()
setImmediate()
process.nextTick()
内置模块
fs
os
path
crypto
http与https
stream
常用其他模块
Express
①创建应用对象,创建路由规则,其中request
和response
是对请求报文和响应报文的封装,监听端口启动服务。
const express = require('express');
const app = express();
app.get('/', (request, response) => {
// 设置响应头
response.setHeader('Access-Controll-Allow-Origin', '*');
// 设置响应体
response.send('data');
});
app.post ('/', (request, response) => {
// 设置响应头
response.setHeader('Access-Controll-Allow-Origin', '*');
// 设置响应体
response.send('data');
});
app.listen(8000, ()=> {console.log('服务启动')});
②启动服务器
node xxx.js