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
- pm2 以进程方式后台运行 node 文件。
使用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();