NodeJS
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine
- Node使用CommonJS模块规范;
- 每个模块内都有一个module对象,代表当前模块[1];
- module.exports表示当前模块向外输出的变量,其他文件加载该模块 (可使用require),读取的就是module.exports变量
- require 文件,路径 '/'开头为绝对路径,'./'开头为相对路径 相对于脚本执行的位置,非'/'和'./'开头则按顺序搜索文件
example
:脚本/home/user/projects/foo.js执行了require('bar.js')命令,Node会依次搜索以下文件: (默认搜索指定的文件名,若搜索不到会尝试为文件名加.js、.json、.node后缀后再去搜索)
/usr/local/lib/node/bar.js (优先去NODE_PATH中找,npm get prefix 可查看NODE_PATH)
/home/user/projects/node_modules/bar.js
/home/user/node_modules/bar.js
/home/node_modules/bar.js
/node_modules/bar.js
- require 目录,发现参数字符串指向一个目录后,会自动查看该目录的package.json文件,然后找到文件中的main字段指定的入口文件 并加载,若没有package.json文件,或其中没有main字段 则会加载该目录下的index.js或index.node文件 [2]
NPM
NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:[3]
- 允许用户从NPM服务器下载别人编写的第三方包到本地使用。
- 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
- 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。
npm install <模块名>@<version>
version可以是具体版本号,也可以是版本号范围(1.1.x),或latest(表示最新版本)等tag文字,
命令 | 参数 | 释义 |
---|---|---|
npm install | <模块名> | 安装在命令执行当前目录下的 node_modules目录(通过require引入的包需要安装在本地node_modules目录) |
<模块名> --save | 模块名和版本信息保存在package.json的dependencies节中 | |
<模块名> --save-dev | 模块名和版本信息保存在package.json的devDependencies节中 | |
npm install | <模块名> -g | 安装在node的安装目录(where node) |
npm install | 按照package.json中的信息安装模块(devDependencies和dependencies中的都安装) | |
npm insatll | --production | 按照package.json中的信息安装模块(不安装devDependencies中的信息,安装dependencies中的模块) |
package.json
npm托管的项目,目录下存在package.json,用于定义包的属性
name、version、main(入口)、scripts(在此目录下执行npm run 脚本名 执行的内容)
tips:
[4]
依赖的模块的版本号前尝有波浪号(~)和插入符号(^),以1.2.2版本为例:
~1.2.2:大版本和次要版本不变,安装1.2.x 的最新版本,版本号不低于1.2.2
^1.2.2:大版本不变,安装1.x.x 的最新版本,版本号不低于1.2.2。
若大版本号是0,插入符号与波浪号意义相同,大版本和次要版本都不变