NodejS
最后更新于:2022-04-02 03:30:36
[TOC]
> [phpstorm 配置 nodejs](https://www.kancloud.cn/book/idcpj/python/preview/PHPStorm/%E9%85%8D%E7%BD%AEnodejs.md)
## require、exports、module
1. require - 引入模块
```
var foo1 = require('./foo'); //js 文件可省略 js 后缀
var data = require('./data.json'); //引入json 默认带了对json的解析
```
2. exports - 导出对象的属性和方法
```
//util/counter.js
exports.count = function () {//对象方法
return 1+1;
};
exports.sum = function () {
return 2+2;
};
exports.page =12; //对象属性
```
```
//main.js
var counter1 = require('./util/counter');
console.log(counter1.page); //调用方法
console.log(counter1.sum());//调用属性
```
3. module - 把默认的到处对象改为到处函数
```
//util/counter.js
module.exports = function () {
console.log('Hello World!');
};
```
```
// main.js
var Hello = require('./util/counter');
console.log(Hello());
```
## 操作文件
1. 小文件操作
```
//main.js
var fs = require('fs');
function copy(src, dst) {
fs.writeFileSync(dst, fs.readFileSync(src));
}
function main(argv) {
copy(argv[0], argv[1]);
}
main(process.argv.slice(2));
```
```
# 把package-lock.json 复制到 同级目录并改为package-lock.json.back
> node main.js package-lock.json package-lock.json.back
```
2. 大文件操作
```
var fs = require('fs');
function copy(src, dst) {
fs.createReadStream(src).pipe(fs.createWriteStream(dst));
}
function main(argv) {
copy(argv[0], argv[1]);
}
main(process.argv.slice(2));
```
## 文本编码
> [七天学会NodeJS](http://nqdeng.github.io/7-days-nodejs/#3.2.3)
1. BOM的移除
2. GBK转UTF8
3. 单字节编码
## 文件监听
```
const fs = require("fs")
fs.watch("./src", (event, filename) => {
if (filename && event === "change") {
console.log(`${filename} file Changed`);
}
});
```
## 文件监听并执行文件
安装
```
npm i -D node-watch
npm i -D shelljs
```
```
var watch = require('node-watch');
var shell = require('shelljs');
watch('example', { recursive: true }, function(evt, name) {
shell.exec('node -v')
});
```
## 环境变量的设置
创建 test.js
`console.error(process.env.TEST)`
在window 中
```
> set test="this is test"
> node test.js //output this is test
```
## 全局变量
在页面中有 `window`
在node 中可使用 `global`或者 留空
```
global.abc = "123"
//等于
abc="123"
```
';