zoukankan      html  css  js  c++  java
  • 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 :感谢&参考 官方资料及菜鸟教程

  • 相关阅读:
    json
    mybatis 一对一关联对象查询
    下拉框多级联动
    时间轴和操作元素属性
    上传
    多选框获取和全选
    字符串操作,截取最后一个逗号
    idea快捷键使用
    获取下拉框的文本和值,下拉框默认选中
    toString()函数分析
  • 原文地址:https://www.cnblogs.com/haimengqingyuan/p/12189260.html
Copyright © 2011-2022 走看看