node基础知识点-node学习笔记
nodejs:一个异步的事件驱动的JavaScript运行时;
nodejs特性:非阻塞I/O 事件驱动
运行node程序:node 文件名 或者 nodemon 文件名(该方式可监听文件改变)
package.json:当创建一个nodejs项目意味着创建了一个模块,该模块的描述文件被称为package.json;该文件可通过npm init生成。
package.json属性说明:
name-包名 version-包当版本号 description-包当描述 homepage-包当官网url author-包的作者 contributors-包的其他贡献者 dependencies/devDependencies 生产/开发环境依赖包列表,它们将被安装在node_modules目录下 repository-包代码的repo信息,包括type/url main-指定了程序的主入口文件 keywords-关键字
{
"name": "test1",
"version": "1.0.0",
"description": "nodebao",
"main": "1.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"cpu-stat": "^2.0.1"
}
}
使用模块,如os,计算内存占用:
const os = require('os');
const mem = os.freemem() / os.totalmem() * 100;
console.log(`内存占用${mem.toFixed(2)}%`)
useModule.js:
// 引用内置模块,不需要install
const os = require('os');
const util = require('util');
const mem = os.freemem() / os.totalmem() * 100;
console.log(`内存占用${mem.toFixed(2)}%`)
// 引用第三方模块需要先install,如npm i cpu-stat -s
const cpuStat = require('cpu-stat');
cpuStat.usagePercent((err,percent) => {
console.log(`cpu占用:${percent.toFixed(2)}%`)
})
const getCpu = util.promisify(cpuStat.usagePercent);
getCpu().then(percent => {
console.log(`cpu占用:${percent.toFixed(2)}%`)
})
const showStat = async () => {
const mem = os.freemem() / os.toFixed() * 100;
console.log(`内存占用${mem.toFixed(2)}%`)
const percent = await getCpu();
console.log(`cpu占用:${percent.toFixed(2)}%`)
}
// 输出为一个模块
module.exports = {
showStat
}
index.js:
const {showStat} = require('./2-useModule');
setImmediate(showStat);
文件系统fs:
// 文件系统
const fs = require('fs');
const path = require('path');
// 同步读取文件 文件读取是个二进制的过程 输出buffer 可以进行转换获得我们认得的文本
const data = fs.readFileSync('index.js');
console.log(data.toString(),'ddd')
const _dirname = '';
// 异步读取 path.resolve将路径进行解析拼接在一起 path.resolve() 方法将路径或路径片段的序列解析为绝对路径
fs.readFile(path.resolve(_dirname,'index.js'), (err, data) => {
if (err) {
return console.error(err);
}
console.log("异步读取: " + data.toString());
});
缓冲器Buffer:
// Buffer 类在全局作用域中,因此无需使用 require('buffer').Buffer
// 创建一个长度为 10、且用零填充的 Buffer。
const buf1= Buffer.alloc(10);
console.log(buf1,'buf1')
// 16进制 返回一个被 string 的值初始化的新的 Buffer 实例
const buf2= Buffer.from('a');
console.log(buf2,'buf2') // <Buffer 61> 十六进制61为a在ascii码中对应的数值
// utf8
const buf3= Buffer.from('中国');
console.log(buf3,'buf3')
// 拼接
const buf4 = Buffer.concat([buf2, buf3]);
console.log(buf4, 'buf4');
console.log(buf4.toString(), 'buf44');
http服务器,运行该文件并在浏览器中打开localhost:3009
// http服务器
const http = require('http');
const server = http.createServer((req, res) => {
res.end('hello d world');
})
server.listen(3009);
// http服务器
const http = require('http');
const fs = require('fs');
const server = http.createServer((req, res) => {
const {url, method} = req;
if(url==='/' && method==='GET'){
// 读取文件数据并作为返回数据
fs.readFile('index.html', (err,data) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/html');
res.end(data);
})
}else if(url==='/users' && method === 'GET'){
res.writeHead(200, {'Content-Type':'application/json'});
res.end(JSON.stringify({name:'abc'}))
}
// res.end('hello d world');
})
server.listen(3009);
PS :感谢&参考 官方资料及菜鸟教程
宝剑锋从磨砺出,梅花香自苦寒来。

浙公网安备 33010602011771号