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 :感谢&参考 官方资料及菜鸟教程

原文地址:https://www.cnblogs.com/haimengqingyuan/p/12189260.html