node.js笔记 node笔记 npm 笔记
安装node.js
node -v //出现版本号,就表示安装成功 执行js文件 node 1.js //执行1.js
添加系统变量(一般win安装nodejd时候就已经配置好了)

在当前的win用户添加了
;C:\Program Files\nodejs\
作用就是可以在调用cmd窗口中写node.js命令,如:

安装完成node之后,就可以使用node的内置模块,其中常用的有:
buffer fs http path querystring url 调用: var http=require('http') (注意:没路径和.js)
node.js中的全局函数
可以使用console.log(global);查看有哪些全局函数
setTimeout
clearTimeout
setInterval
clearInterval
require
require.main //检查此模块是否为主模块。 node 1.js,1.js被称为主模块
require.resolve //获取此模块本地路径。D:\\1.js
require.cache //查看缓存了哪些模块
__filename // d:\test\2.js
__dirname // d:\test
node.js事件(跟DOM可以监听click事件类似)
request //当用户在输入url回车时候就触发
例如: var http=requrie('http'); var server=http.createServer(); server.on('request',fn) //当服务器接受到数据时就触发事件
node_modules目录管理模块
利用node_modules目录,可以在此目录里面创建的文件夹就可以以文件夹名称当作模块来加载。
自行下载:node项目
只需要运行node app.js,就能够加载foo下的index.js文件。npm管理工具其实也就是用这种方式来打包模块的。
模块属性
例如:
//在app.js最后面添加
console.log(module.id)
console.log(module.filename) // C:\app.js
console.log(module.loaded) //true时,表示加载完成
module.parent
module.children
node安装完成后就默认已经也安装了npm包管理工具,通过npm可以下载我们需要的模块,可以理解为下载jquery插件一样。
文件操作
node自带fs模块
var fs=require(‘fs’); //加载
创建、追加内容
fs.writeFile(‘./a.txt’,’哈哈’,fn) //创建文件和内容
fs.writeFile(‘./a.txt’,’追加内容’,{flag:’a’},fn) //追加内容,不加{flag:’a’}则是覆盖内容
fs.appendFile(‘./a.txt’,’要追加的内容’,’utf8′,fn) //追加内容
查看内容
fs.readFile(‘./1.txt’,’utf8′,function(){}) //异步,可以使用回调形式。一般情况都使用这个
fs.readFileSync(‘./1.txt’,’utf8′) //同步,不能使用回调形式。很少用
目录创建、读取
fs.mkdir(‘./mk’,fn) //创建一个mk目录
fs.readdir(‘./’,function(err,dir){}) //读取目录
查看文件属性
fs.stat(‘./a.txt’,function(err,stats){})
fs.lstat(‘./a.txt’,function(err,stats){}) //查看
检查文件、目录是否存在
fs.exists()
获取绝对路径
fs.realpath
移动文件
fs.rename
//支持事件 fs.createReadStream('./1.txt',{encoding:'utf8'}) .on('open',function(){ console.log('读取文件'); }) .on('data',function(data){ console.log(data) }) .on('end',function(){ console.log('内容都读取完了'); }) .on('close',function(){ console.log('文件被关闭'); }) .on('error',function(){ console.log('读取文件失败'); });
(fs模块功能过多,具体自行查资料)
————————————
path模块 (路径操作)
———————————-
http模块 (提供http和https服务器)
var http=require('http'); http.createServer(function(req,res){ req //获取客户端发来的信息 res //获取服务器端发来的信息 }).listen('1337','127.0.0.1');
————————————–
url 参数操作
node提供url模块和querystring模块
//querystring模块 querystring.parse('user=123&name=陈','&'); { user: '123', name: '陈' }
//url模块 url.parse('http://127.0.0.1:1338/1.php?user=hello&name=chenchen#hash') { protocol: 'http:', slashes: true, auth: null, host: '127.0.0.1:1338', port: '1338', hostname: '127.0.0.1', hash: '#hash', search: '?user=hello&name=chenchen', query: 'user=hello&name=chenchen', pathname: '/1.php', path: '/1.php?user=hello&name=chenchen', href: 'http://127.0.0.1:1338/1.php?user=hello&name=chenchen#hash' }
npm使用
增
npm install //安装package.json中的所有包
npm install gulp //局部安装
npm install -g gulp //全局安装
npm install express@3.0 //安装指定版本
(全局安装和局部安装的区别就是,安装在全局的模块包好处也就是内置的命令可以在任意目录下使用,如果要调用模块,例如
var express =require(‘express’),必须安装在局部目录中。对于那些要命令操作的模块包推荐安装在全局中)
删
npm uninstall gulp //卸载局部模块
npm uninstall -g gulp //卸载全局模块
npm cache clean //清楚缓存包
npm uninstall express@4.10.2 //卸载指定版本:
改
npm config set prefix “d:\node” //修改全局安装路径,以后全局安装路径就是d:\node\node_modules 推荐
看:https://sdeno.com/?p=4740
npm update gulp //升级局部路径的包
npm update -g gulp //升级局部路径的包
npm update //升级局部路径的所有包
npm update -g //升级全局路径所有包
查
npm root -g //查看全局模块安装包的路径,如d:\npmConfig\npm\node_modules
npm config get prefix //查看npm当前安装路径,如d:\npmConfig\npm
npm list //查看局部路径安装了哪些模块,如果没有package.json就会报错
npm list -g //查看全局安装了哪些模块的详细信息
npm list –global //同上
npm list -g –depth=0 //只显示全局模块已安装的包和版本号,避免冗长
npm search express //搜索包是否存在
npm config ls -l //查看当前npm的设置
npm config get cache //查看npm缓存目录
创建package.json 管理依赖模块
npm init npm init --yes //快速创建
安装提示一直回车:

yes以后,在当前目录下就能看见package.json
以后安装模块时使用–save-dev后缀,卸载时也一样devDependencies字段会更新这样能保持实施更新package.json文件,如
//安装 npm install mysql --save-dev
//卸载 npm uninstall mysql --save-dev
//批量安装,记录在package.json中的模块将会自动批量安装 npm install
如果使用–save后缀是dependencies字段更新。
-S:--save的简写,安装的模块一般是正式环境需要的,会记录在dependencies字段中 -D:--save-dev的简写,一般是用于测试时所需要的模块,正式上线是不需要的记录在devDependencies字段中
devDependencies:主要安装此字段的模块是用户用于项目依赖的模块,对正式上线的项目来说是多余的仅仅是用来测试而已。
dependencies:该字段里面的模块是正式上线的项目正则所依赖的,缺少一个都不行。
"scripts": { "preinstall": "echo here it comes!", "postinstall": "echo there it goes!", "start": "node index.js", "test": "tap test/*.js" } 将过长的命令简约化,我们就可以执行npm run preinstall相当于执行了echo here it comes!命令
在node_modules目录中创建属于自己的模块
//在node_modules目录里面创建名为ceshi的目录,并在ceshi目录里面创建index.js,内容为: function xx() { console.log('测试'); } exports.xx=xx; (在node_modules的模块中入口名称默认是index.js如果想自定义就在模块根目录下创建一个package.json,并在修改"main":"xxx.js"即可)
调用:
在项目根目录中创建一个1.js的文件
var get_xx=require('ceshi'); get_xx.xx();
运行node 1.js就可以调用node_modules里面的ceshi模块了