node.js是什么?
node.js,是js的一个解释器。
JS是脚本语言,脚本语言都需要一个解析器才能运行。对于写在HTML页面里的JS,浏览器充当了解析器的角色。而对于需要独立运行的JS,NodeJS就是一个解析器。
每一种解析器都是一个运行环境,不但允许JS定义各种数据结构,进行各种计算,还允许JS使用运行环境提供的内置对象和方法做一些事情。例如运行在浏览器中的JS的用途是操作DOM,浏览器就提供了document之类的内置对象。而运行在NodeJS中的JS的用途是操作磁盘文件或搭建HTTP服务器,NodeJS就相应提供了fs、http等内置对象。
所以node.js可以实现,服务器功能。
node有什么用处?
包(package):基本就是一个项目(由多个模块文件构成的项目)
每个包(也就是多个模块文件,构成的一个大模块),有一个入口文件,在require之后调入执行。默认是index.js文件
package.json:一个配置文件,标明了这个包的各项信息。例如:入口文件等
重要字段:
devDependencies依赖文件,因为用户下载包时,npm会自动下载这个字段的包,帮助用户处理依赖。
而且npm install会自动为项目下载dev中的依赖。所以记得,–save-dev列表项目
这是一个标准的package.json文件:
{
"name": "Hello World",//包名
"version": "0.0.1",
"author": "张三",
"main": "main.js",//定义入口文件
"description": "第一个node.js程序",
"keywords":["node.js","javascript"],
"repository": {
"type": "git",
"url": "https://path/to/url"
},
"license":"MIT",
"engines": {"node": "0.10.x"},
"bugs":{"url":"http://path/to/bug","email":"bug@example.com"},
"contributors":[{"name":"李四","email":"lisi@example.com"}],
"scripts": {
"start": "node index.js"
},
"dependencies": {
"express": "latest",
"mongoose": "~3.8.3",
"handlebars-runtime": "~1.0.12",
"express3-handlebars": "~0.5.0",
"MD5": "~1.2.0"
},
"devDependencies": { //对第三方包的依赖,用户在下载这个包的时候,npm会自动下载这些包
"bower": "~1.2.8",
"grunt": "~0.4.1",
"grunt-contrib-concat": "~0.3.0",
"grunt-contrib-jshint": "~0.7.2",
"grunt-contrib-uglify": "~0.2.7",
"grunt-contrib-clean": "~0.5.0",
"browserify": "2.36.1",
"grunt-browserify": "~1.3.0",
}
}
node中模块的管理:npm
npm:nodejs,包管理工具。方便管理我们对第三方库的下载使用。
node_modules目录是存放,第三方包的位置。
下载包:全局下载和本地下载。全局下载,包会存放在全局位置(npm root -g),所有项目都可以用。本地下载包会存在当前项目的,node_modules目录中。深度解析下,什么使用使用全局,什么时候使用本地安装。如果只需要require(‘gulP’)则本地安装,如果在命令行中使用gulp task就需要安装在全局。
小结:npm init: 为项目创建package.json文件 npm install xxx --save-dev:注意养成习惯加 --save-dev!!! npm install -g gulp npm install argv@0.0.1 下载特定版本号 npm install :在package.json中的devDependencies字段中写明依赖的第三方包,然后就可以批量下载第三方包了
npm一些常用方法:
1.npm install yo–verbose:可以查看node模块安装的过程,容易发现错误。
nodejs中的模块:模块的使用,require()
参考文献:
http://www.infoq.com/cn/articles/msh-using-npm-manage-node.js-dependence