node.js學習筆記01-cmd0node0全局數據0異步事件

Author:Mr.柳上原

  • 付出不亞於任何的努力
  • 願我們所有的努力,都不會被生活辜負
  • 不忘初心,方得始終

Nodejs
node規範:
CommonJS
CommonJS是一種規範,NodeJS是這種規範的實現

AMD
A-ajax,是CommonJS規範的延伸,是一種異步的,需要對應的模塊支持(requirejs)

CMD
是CommonJS規範的延伸,模塊的定義和引入

控制檯的使用
cmd 打開控制檯(黑窗口)

cmd命令:
ls(查看當前文件夾內的文件)
cd 文件名(進入此文件夾)

node命令:
node -v (Node版本號)
node 文件名(運行當前文件)
node ./文件名/文件名(運行當前文件夾的xxx文件夾下的xxx文件)

nodejs的使用
node的頂層對象是global(全局),不再是window

導入模塊
文件一.js:
let obj1 = require("./文件二"); 
./表示當前目錄,../表示上層目錄,/表示根目錄
注意點:導入的文件後綴爲js的時候,.js可以不用寫,導入文件時,文件名前面必須加./,只有node官方的核心模塊和網上下載的模塊可以不用加./

定義跨文件的全局變量
文件一.js:
console.log(global.xxx); // 123

文件二.js:
global.xxx = 123; 
把需要的屬性掛載到global下面
node會把每個導入的文件包裝到一個函數裏function(){},所以導入的文件的數據都是局部數據

獲取跨文件的數據
文件一.js:
console.log(obj1); // {123, function (){}}

文件二.js:
module.exports = {} 
module.exports裏的值默認是對象,require導入的其實是文件裏的module.exports的值

多個值的寫法一:擴展屬性或鍵值對
module.exports.num = 123;
module.exports.fn = function (){}
module.exports = {
num: 1,
fn: function (){}
}

多個值的寫法二:exports
node底層global.exports = module.exports,exports = module.exports
exports.num = 123;
exports.fn = function (){}

nodejs的執行
文件一.js:
在控制檯裏,進入當前js所在的文件夾
node 文件一 回車 // 後綴.js可以不用寫

nodejs把所有的行爲抽象成爲事件
nodejs用來執行代碼的過程叫做事件循環
while(true){} 
相當於node在執行的開始生成了一個無限循環的while

node的異步事件處理:
setImmediate(() => { // setImmediate的回調函數是異步
console.log(1);
})
promise.resolve("2") // promise是同步
.then(res => { // then的回調函數是異步
console.log(res);
})
process.nextTick(() => { // process的回調函數是異步
consloe.log(3);
})
console.log(4); // 同步
js全部的代碼都是同步的,真正的異步是事件的回調函數

事件隊列
macro-task:script(全部的代碼),setInterval,setTimeout,setImmediate,I/O // setInterval和setTimeout優先級相同,默認時間下誰先寫隨先執行

micro-task:process.nextTick,promise(then) // 優先級

第一步:script(全部的代碼)
第二步:執行清空micro-task裏的所有代碼
第三步:執行macro-task的下一個代碼
第四步:再次執行清空micro-task裏的所有代碼
第五步:執行macro-task的下下一個代碼
第六步:再再次執行清空micro-task裏的所有代碼
......

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章