nodejs笔记

简介: process.nextTick() --定时器(setTimeout()和setInterval()与浏览器中的API是一致的,定时器的问题在于,他并非精确的(在容忍范围内)。尽管事件循环十分快,但是如果某一次循环占用的时间较多,那么下次循环时,他也许已经超时很久了。

一、基础模块


1.http


//引用模块
var http = require("http");
//创建一个服务器,回调函数表示接收到请求之后做的事情
var server = http.createServer(function(req,res){
res.writeHead(200,{"Content-Type":"text/html;charset=UTF8"});
//req 参数表示请求,res 表示响应
  console.log("服务器接收到了请求" + req.url);
  res.end(); // End 方法使 Web 服务器停止处理脚本并返回当前结果
});
//监听端口
server.listen(3000,"127.0.0.1");


2.url


url.parse() 解析 URL
url.format(urlObject) //是上面 url.parse() 操作的逆向操作
url.resolve(from, to) 添加或者替换地址
var result = url.parse(req.url,true);
console.log(result);
console.log('aid='+result.query.aid);


二、npm


1. npm -v 查看 npm 版本


2. 使用 npm 命令 安装模块


npm install Module Name
如安装 jq 模块:
npm install jquery


3. npm uninstall moudleName  卸载模块


npm uninstall ModuleName


4. npm list 查看当前目录下已安装的 node 包


npm list


5. npm info jquery 查看 jquery 的版本


npm info 模块 //查看模块的版本


6. 指定版本安装 npm install jquery@1.8.0


三、package.json


package.json 定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称、 版本、许可证等元数据)


1、创建 package.json


npm init
npm init –yes


2、package.json 文件


{
  "name": "test",
  "version": "1.0.0",
  "description": "test",
  "main": "main.js",
  "keywords": [
    "test"
  ],
  "author": "wade",
  "license": "MIT",
  "dependencies": {
    "express": "^4.10.1"
  },
  "devDependencies": {
    "jslint": "^0.6.5"
  }
}
^表示第一位版本号不变,后两位取最新的
~表示前两位不变,最后一个去最新
*表示全部取最新


3、安装模块并把模块写入 package.json(依赖)


npm install babel-cli --save-dev
npm install 模块 --save
npm install 模块 --save-dev


4、dependencies 与 与 devDependencies  之间的区别?


使用 npm install node_module –save 自动更新 dependencies 字段值;
使用 npm install node_module –save-dev 自动更新 devDependencies 字段值;
dependencie 配置当前程序所依赖的其他包。
devDependencie 配置当前程序所依赖的其他包,只会下载模块,而不下载这些模块的
试 测试和文档框架
"dependencies": {
  "ejs": "^2.3.4",
  "express": "^4.13.3",
  "formidable": "^1.0.17"
}
^表示第一位版本号不变,后面两位取最新的
~表示前两位不变,最后一个取最新
*表示全部取最新


四、fs模块


1.fs.stat 检测是文件还是目录


const  fs  =  require ( 'fs')
fs.stat( 'hello.js', (error, stats) =>{
  if(error){
    console.log(error)
  }  else {
    console.log(stats)
    console.log(` ` 文件:${stats.isFile()}` `)
    console .log(` ` 目录:${stats.isDirectory()}` `)
  }
})


2.fs.mkdir 创建


const  fs  =  require ( 'fs')
fs.mkdir( 'logs', (error) => {
  if(error){
    console.log(error)
  }  else {
    console.log(' ' 成功创建目录: logs')
  }
})


3. fs.writeFile 创建 写入文件


fs.writeFile( 'logs/hello.log', ' ' 您好 ~ \ \n n' ', (error) => {
  if(error) {
    console.log(error)
  }  else {
    console.log(' ' 成功写入文件' ')
  }
})              --如果hello.log不存在,会自动创建的


4.fs.appendFile 追加文件


fs.appendFile( 'logs/hello.log',  'hello ~ \ \n n' ', (error) => {
  if(error) {
    console.log(error)
  }  else {
    console.log(' ' 成功写入文件' ')
  }
})                 --如果hello.log不存在,会自动创建的


5.fs.readFile  读取文件


const fs =  require ( 'fs')
fs.readFile( 'logs/hello.log',  'utf8', (error, data) =>{
  if (error) {
    console.log(error)
  } else {
    console.log(data)
  }
})


6.fs.readdir  读取


const  fs  =  require ( 'fs')
fs.readdir( 'logs', (error, files) => {
  if (error) {
    console .log(error)
  } else {
    console .log(files)
  }
})


7.fs.rename  重命名


const fs  =  require ( 'fs')
fs.rename( 'js/hello.log',  'js/greeting.log', (error) =>{
  if (error) {
    console.log(error)
  }else {
    console.log(' ' 重命名成功' ')
  }
})


8. fs.rmdir 删除目录


fs.rmdir( 'logs', (error) =>{
  if (error) {
    console.log(error)
  }  else {
    console.log(' ' 成功的删除了目录: logs')
  }
})


9. fs.unlink  删除 文件


fs.unlink( `logs/${file}`, (error) => {
  if (error) {
    console.log(error)
  }  else {
    console.log(` ` 成功的删除了文件 : ${file}` `)
  }
})


10. fs.createReadStream  从文件流中读取数据


const  fs  =  require ( 'fs' ')
var  fileReadStream  = fs.createReadStream( 'data.json')
let  count =0;
var  str = '';
fileReadStream.on( 'data', (chunk) => {
  console.log(` `${ ++ count  } 接收到:${chunk.length}` `);
  str +=chunk
})
fileReadStream.on( 'end', () => {
  console.log(' ' --- 结束 ---' ');
  console.log( count );
  console.log( str );
})
fileReadStream.on( 'error', (error) => {
  console.log(error)
})


11. fs.createWriteStream 写入文件


var  fs  =  require ( "fs");
var  data  = ' ' 我是从数据库获取的数据,我要保存起来' ';
// 创建一个可以写入的流,写入到文件 output.txt 中
var  writerStream  = fs.createWriteStream( 'output.txt');
// 使用 utf8 编码写入数据
writerStream.write( data , 'UTF8');
// 标记文件末尾
writerStream.end();
// 处理流事件 --> finish 事件
writerStream.on( 'finish',  function() { /*finish - 所有数据已被写入到底层系统时触发。*/
  console.log(" " 写入完成。" ");
});
writerStream .on( 'error',  function(err){
  console .log(err. stack);
});
console .log(" " 程序执行完毕" ");


12. 管道流


var  fs  =  require ( "fs");
// 创建一个可读流
var  readerStream  =  fs .createReadStream( 'input.txt');
// 创建一个可写流
var  writerStream  =  fs.createWriteStream( 'output.txt');
// 管道读写操作
// 读取 input.txt 文件内容,并将内容写入到 output.txt 文件中
readerStream.pipe( writerStream );
console.log(" " 程序执行完毕" ");


**补充知识


######1.process.nextTick()    --定时器(setTimeout()和setInterval()与浏览器中的API是一致的,定时器的问题在于, 他并非精确的(在容忍范围内)。尽管事件循环十分快,但是如果某一次循环占用的时间较多,那么下次循环时,他也许已经超时很久了。 比如通过setTimeout()设定一个任务在10毫秒后执行,但是在9毫秒后,有一个任务占用了5毫秒的cpu时间片,再次轮到定时器执行时, 时间就已经过期4毫秒。)


2.setImmediate()


setImmediate()方法与process.nextTicl()方法十分类似,都是将回调函数延迟执行。在node V0.9.1之前,setImmediate()还没有实现,那时候实现类似的功能主要是通过process,nextTick()来完成。


五、events事件


1.监听广播事件


EventEmitter.on('to_parent',function (data) {
// console.log('接收到了广播')
  console.log(data);
  EventEmitter.emit('to_mime','给mime发送的数据')
})


相关文章
|
28天前
|
JSON JavaScript 前端开发
Node.JS第二讲笔记
Node.JS第二讲笔记
30 0
|
8月前
|
前端开发
前端学习笔记202306学习笔记第四十九天-学习node的必要性1
前端学习笔记202306学习笔记第四十九天-学习node的必要性1
33 0
|
8月前
|
JavaScript 前端开发
前端学习笔记202305学习笔记第二十四天-node.js安装
前端学习笔记202305学习笔记第二十四天-node.js安装
34 0
|
5月前
|
Android开发
[慕课笔记]Node入口文件分析和目录初始化
[慕课笔记]Node入口文件分析和目录初始化
23 0
|
5月前
|
前端开发 JavaScript NoSQL
[慕课笔记] node+mongodb建站攻略
[慕课笔记] node+mongodb建站攻略
25 0
|
5月前
|
JavaScript 前端开发 Java
Node.js自学笔记之回调函数
Node.js自学笔记之回调函数
20 0
|
8月前
|
前端开发
前端学习笔记202306学习笔记第四十三天-学习node的必要性1
前端学习笔记202306学习笔记第四十三天-学习node的必要性1
37 0
|
8月前
|
前端开发
前端学习笔记202306学习笔记第四十三天-学习node的必要性2
前端学习笔记202306学习笔记第四十三天-学习node的必要性2
46 0
|
8月前
|
前端开发
前端学习笔记202306学习笔记第四十三天-安装多个版本的node之2
前端学习笔记202306学习笔记第四十三天-安装多个版本的node之2
52 0
前端学习笔记202306学习笔记第四十三天-安装多个版本的node之2
|
8月前
|
前端开发 JavaScript
前端学习笔记202306学习笔记第四十三天-在node版本中运行js之1
前端学习笔记202306学习笔记第四十三天-在node版本中运行js之1
40 0