Node.js笔记

2020/06/14 Node 本文共1493字,阅读全文约需5分钟 本文总阅读量

  Node.js 笔记。

nodejs 的启动方式

原始 node 命令

  • 直接命令行中使用 node 命令

    node xxx.js
    
  • 安装 nodemon,使用 nodemon 启动方便在开发阶段热部署代码改动

    npm i nodemon -g
    nodemon xxx.js
    

webstorm 方式

  • webstorm 中,需要执行的文件的上,右键->run,右上角出现 js 文件,点击下拉箭头->Edit Configurations。
  • 选择 Node iterpreter,apply。
  • 文件上右键->run。即可使用 webstorm 中的内置控制台运行 nodejs 文件。

pm2

  • 全局安装 pm2
cnpm i pm2 -g
  • 用 pm2 运行 nodejs
pm2 start xxx.js

使用Node.js原生API写一个web服务器

使用Node.js原生API写一个web服务器

常用方法

自动创建文件脚本

var fs = require('fs');
var path = require('path');

var config = [
  {
    filename: 'searchSupplierLikeSpnName.js',
    url: '/supplier/rest/v1/supplier/searchSupplierLikeSpnName',
    comment: '根据供应商名称模糊查询获取供应商信息ForCache',
  }
];

function verify() {
  console.log(
    config.length,
    fs.readdirSync(path.join(__dirname, '/server/api')).length
  );
}

// 创建文件
function writeFileAuto(filePath, item) {
  fs.writeFileSync(
    filePath,
    `/**
* ${item.comment}
*/
const { Controller, Joi } = require('ukoa');

module.exports = class ${item.filename.split('.')[0]} extends Controller {
    init() {
        this.schema = {
            Params: Joi.object().default({}).notes('参数'),
            Action: Joi.string().required().notes('Action')
        };
    }

    // 执行函数体
    async main() {
        const { http_supply_chain } = this.ctx.galaxy;
        const [data] = await http_supply_chain("${
          item.url
        }", this.params.Params, { throw: true });
        return this.ok = data.obj;
    }
};
`
  );
}

function exec() {
  config.forEach((item) => {
    var filePath = path.join(__dirname, '/server/api/', item.filename);
    // 判断文件/文件夹是否已存在(避免覆盖对已存在文件的修改)
    fs.exists(filePath, function (exists) {
      if (exists) {
        console.log(`文件${item.filename}已存在!`);
      } else {
        console.log(`创建文件:${item.filename}`);
        writeFileAuto(filePath, item);
      }
    });
  });
}

exec();

Search

    欢迎与我交流「提供字节跳动内推」

    江南逰子

    Table of Contents