nodejs特点及应用场景
- 非阻塞的IO (与其他技术的最大区别,文件读取,【php服务器 多线程处理,多核CPU能力;编程复杂,消耗性能,计算量大的任务适合php】【nodejs 单进程,事件循环机制eventLoop,同步操作的异步化问题】)
- web应用;api编写;中间层
运行,调试,模块系统
在NodeJS中,Node模块允许开发者从被引入的文件中选择要暴露给外界的函数或变量。机制是通过exports对象的属性或module.exports属性进行模块暴露。NodeJS模块系统正是通过这样一种机制来避免了全局作用域的污染,从而避免了命名冲突。
- 内建模块
const os=require('os')
const mem=os.freemem()/os.totalmem()*100
console.log(`内存占用率${mem}%`)
- 第三方模块
cnpm install cpu-stat
const cupStat = require("cpu-stat");
cupStat.usagePercent((err, percent) => {
console.log(`CPU占用${percent.toFixed(2)}%`);
});
- 自定义模块
//1
module.exports=function(){}
//使用
const conf=require('./config');
console.log(conf);
//2
exports.rmbToDollar=function(r){return r/6}
//使用
const {rmbToDollar}=require('./currency')
console.log(rmbToDollar(20));
//3 可配置的模块
let rate;
function rmbToDollar(r){return r/rate}
module.exports=function(r){
rate=r;
return {rmbToDollar}
}
//使用
const {rmbToDollar}=require('./currency')(6)
console.log(rmbToDollar(20));
nodejs 核心api
global
process
fs
//同步,阻塞操作,不建议,不执行完不做下一步
fs.readFileSync('./XX')
//异步操作
fs.readFile('./xx',(err,data)=>{})
//异步代码同步化
1.1 promise
const {promisify}=require('util')
const readFile=promisify(fs.readFile)
readFile('./xx').then(data=>{})
1.2 10.0 fs promise API 实验性质
const {promises}=require('fs')
promises.readFile('./xx',(err,data)=>{})
2.generator
3.async await
buffer
1字=2字节(1 word = 2 byte)
1字节=8位(1 byte = 8bit)

http
const http=require('http');
http.createServer((req,res)=>{}).listen(3000)
stream
const fs=require('fs'),
rs=fs.createReadStream('./xx.js'),//读取流
ws=fs.createWriteStream('./xx2.js');//写入流
rs.pipe(ws)

简版express
路由
请求流程控制

源码逻辑


导出工厂函数

网友评论