[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" ```