概述
- 是一个开源,跨平台的JavaScript运行时环境,可以看作是一个虚拟机
- 构建在V8引擎之上的,V8引擎是C/C++编写的,所以会将JS代码由C/C++转化后再执行
- 使用异步I/O和事件驱动的设计里面,高效处理大量并发请求
- 使用npm作为包管理工具,类似python的pip或者Android的gradle
- 适合做IO密集型,不适合做CPU密集型
安装
地址:http://www.nodejs.com.cn/
TSL: 长期支持版
Current:尝鲜版
推荐使用nvm进行node版本的管理
github.com/coreybutler…
npm
Node package Manager,是NodeJs的包管理工具,基于命令行,用于安装,移除和升级管理依赖项
www.npmjs.com/
类似python的包管理工具pip,安装和管理python的依赖项
Android的gradle,添加和管理Android需要依赖的jar
npm命令
npm init 初始化一个新的npm项目,创建package.json文件
npm install 安装package.json中dependencies和devDependencies的依赖包
npm install –production 只会下载dependencies中的包
npm install <package-name> 安装最新版本的包到node_modules中,并将包名添加到package.json的dependencies中
npm install <package-name>@xx.xx 安装指定版本的包
npm install <package-name> --save 安装指定的包到node_modules中,并将包名添加到package.json的dependencies中
npm install <package-name> --save-dev 安装指定的包到node_modules中,并将包名添加到package.json的devDependencies中
npm update <package-name> 更新指定的包
npm uninstall <pacgage-name> 卸载指定的包
npm info <package-name> 查看包的详细信息
npm install 安装模块的时候一般是扁平化安装的,但是有时候出现嵌套的情况是因为版本不同
A 依赖 C1.0,
B 依赖 C1.0,
D 依赖 C2.0,
此时C 1.0就会被放到A B的node_moduels,
C2.0 会被放入D模块下面的node_moduels
package.json
通过npm init命令初始化一个package.json
{
"name": "testnode", // 项目名称
"version": "1.0.0", // 项目版本号
"description": "node test project", // 项目描述
"main": "index.js", // 主入口
"scripts": { // 脚本命令,如启动项目
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [ // 项目关键字列表
"node"
],
"author": "tangyuan", // 项目作者
"license": "MIT", // 项目许可证信息
"homepage": "https://www.xxx.xxx", //项目首页
"repository": { // 项目代码仓库
"type": "git",
"url": "https://github.cm/xxx"
},
"dependencies": { // 运行依赖包
"md5": "^2.3.0"
},
"devDependencies": { // 开发依赖包, 如js的压缩包gulp-uglify
"sass": "^1.69.7"
}
}