node.js學習筆記01-cmd0node0全局數(shù)據(jù)0異步事件

Author:Mr.柳上原

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

Nodejs
node規(guī)范:
CommonJS
CommonJS是一種規(guī)范,NodeJS是這種規(guī)范的實現(xiàn)

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

CMD
是CommonJS規(guī)范的延伸,模塊的定義和引入

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

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

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

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

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

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

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

獲取跨文件的數(shù)據(jù)
文件一.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的執(zhí)行
文件一.js:
在控制臺里,進入當前js所在的文件夾
node 文件一 回車 // 后綴.js可以不用寫

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

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

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

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

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

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容