node
?
?
?
Table of Contents
- 1. 全局對象
- 2. 代碼執(zhí)行優(yōu)先級
- 3. 模塊導(dǎo)入
- 4. 模塊加載
- 4.1. 文件模塊優(yōu)先級
- 4.2. 文件夾加載優(yōu)先級
- 4.2.1. 包(文件夾)下的入口文件優(yōu)先級
- 4.2.2. 包加載優(yōu)先級
- 5. 核心模塊的簡單使用
- 5.1. events
1 全局對象
- global
- console
- exports, require, module, _filename, _dirname(模塊參數(shù))
2 代碼執(zhí)行優(yōu)先級
同步代碼優(yōu)先,例子如下
// 代碼執(zhí)行優(yōu)先級 setTimeout(function () {setTimeout(function () {console.log('time out');}, 0);new Promise(resolve => {setTimeout(function () {console.log('start in Promise');}, 1);console.log('beg');resolve();console.log('end');setTimeout(function () {console.log('end in Promise');}, 0);}).then(() => {console.log('finish');});console.log('不要調(diào)皮'); }, 100);// beg // end // 不要調(diào)皮 // finish // time out // start in Promise // end in Promise3 模塊導(dǎo)入
同步導(dǎo)入,module.exports = exports ==> true
{ test } ? tree . ├── index.js └── test.js ./index.js console.log("index.js"); ./test.js require('./index.js'); console.log('test.js');output: 導(dǎo)入之后才會繼續(xù)執(zhí)行代碼
index.js test.js4 模塊加載
4.1 文件模塊優(yōu)先級
這里只考慮 .js .json文件路徑加載
文件結(jié)構(gòu) . ├── a.js ├── a.json ├── b.json └── test.js a.js module.exports = "js文件優(yōu)先"; a.json {"s": "json文件優(yōu)先" } b.json {"main" : "json 文件也支持省略擴(kuò)展名的方式加載" } test.js // 測試js文件先加載 console.log(require('./a')); // 證明json也可以加載 console.log(require('./b')); output4.2 文件夾加載優(yōu)先級
4.2.1 包(文件夾)下的入口文件優(yōu)先級
. ├── a │?? ├── index.js │?? ├── m.js │?? └── package.json ├── b │?? ├── index.js │?? └── package.json ├── c │?? └── index.js └── test.js
index.js module.exports = "index.js文件優(yōu)先"; m.js module.exports = "package.json文件優(yōu)先"; package.json {"name": "a","version": "1.0.0","main" : "m.js" }
index.js module.exports = "./b/index.js文件優(yōu)先"; package.json {"name": "a","version": "1.0.0" }
index.js module.exports = "index.js支持默認(rèn)加載";
// 優(yōu)先加載packagae.json文件 console.log(require('./a')); // packagae.json中main屬性指定加載某文件 console.log(require('./b')); // index.js也支持默認(rèn)加載 console.log(require('./c'));
package.json文件中有main優(yōu)先于index.js文件
package.json文件優(yōu)先 ./b/index.js文件優(yōu)先 index.js支持默認(rèn)加載4.2.2 包加載優(yōu)先級
文件結(jié)構(gòu) . ├── fs │?? └── index.js └── test.js ./fs/index.js module.exports = "路徑加載優(yōu)先級高"; ./fs/test.js // 加載核心模塊 console.log(require('fs')); // 第三方模塊 console.log(require('./fs')); output
路徑加載優(yōu)先級高于核心模塊
{appendFile: [Function: appendFile],appendFileSync: [Function: appendFileSync],access: [Function: access],accessSync: [Function: accessSync],chown: [Function: chown],promises: [Getter]..........//還有很多 } 路徑加載優(yōu)先級高文件結(jié)構(gòu) . ├── node_modules │?? ├── fs │?? │?? └── index.js │?? └── tts │?? └── index.js └── test.js ./nodenodules./fs/index.js module.exports = "./node_nodules./fs"; ./nodenodules./tts/index.js module.exports = "./node_nodules./tts"; ./test.js // 判斷第三方模塊和核心模塊的優(yōu)先級 console.log(require('fs')); // 第三方模塊可以加載 console.log(require('tts')); output
文件結(jié)構(gòu) . ├── a │?? ├── b │?? │?? ├── c │?? │?? │?? ├── node_modules │?? │?? │?? │?? └── tts1 │?? │?? │?? │?? └── index.js │?? │?? │?? └── t.js │?? │?? └── node_modules │?? │?? └── tts2 │?? │?? └── index.js │?? └── node_modules │?? └── tts3 │?? └── index.js └── node_modules└── tts4└── index.js module.paths 中列表的順序查找
5 核心模塊的簡單使用
5.1 events
繼承了事件類,自身不用實(shí)現(xiàn)事件類
const events = require('events');class Teacher extends events {constructor(sec = 2000) {super();this.sec = sec;this.doing();}doing() {let cnt = 0;setInterval(() => {++cnt;this.emit('class', {cnt});}, this.sec);} }const t = new Teacher(); t.on('class', function (args) {console.log('time to class:', args.cnt); });Created: 2019-06-26 周三 09:31
Validate
轉(zhuǎn)載于:https://www.cnblogs.com/heidekeyi/p/11075506.html
總結(jié)
- 上一篇: 建行大山白年费多少?可以免年费吗?
- 下一篇: Spring Cloud(F版)搭建高可