繼上一節(jié)的思考問題整理

一、import的使用限制

使用node xx.js運(yùn)行的文件,xx.js不能使用import導(dǎo)入其他文件,當(dāng)然,也不能使用export導(dǎo)出模塊,因為這是es6的語法,直接用node命令運(yùn)行肯定是行不通的。

// 例1:不論 a-1 是以何種方式導(dǎo)出的,都提示import的錯
import a1Module from './a-1'
console.log(a1Module);
node中使用import導(dǎo)入報錯
// 例2:node中不能使用export導(dǎo)出模塊
// a-1.js
let name = 'jojo';
function sum(a, b) {
    return a + b;
}
export {
    name,
    sum
}

// a-2.js
const a1Module = require('./a-1')
console.log(a1Module);
node中使用export報錯

二、那webpack構(gòu)建的項目里,為什么就可以隨便使用requireimport?

~我猜~
(1)是在打包的過程中,通過獲取AST并修改節(jié)點,將import的方式都做了處理,node才能夠識別;
(2)通過babel進(jìn)行轉(zhuǎn)化的;
(3)那這就是webpack的處理機(jī)制了,在打包的過程中,會將importexport的語句最終處理或者轉(zhuǎn)化為node能夠識別的形式,所以整個系統(tǒng)才能夠順暢跑起來,完全就是webpack這個偉大構(gòu)建工具的功勞,讓我們的代碼的書寫不再單調(diào),底層和業(yè)務(wù)都可以靈活使用啦?。?!

我理解的,反正中間某一步肯定對import和export做了轉(zhuǎn)換處理

~事實呢~:還需要再研究,等我后面整理了import的導(dǎo)入導(dǎo)出原理,估計就可以回答這個問題了!

反正就是要將require、webpackimport這三個的原理串起來!

三 、NodeJS中的this為什么是一個空對象?

因為所有的NodeJS文件在執(zhí)行的時候都會被包裹到一個函數(shù)中, this都被修改為了空的module.exports,主要是利用了call/apply修改了this的指向,初始值指向一個空對象。

(function (exports, require, module, __filename, __dirname) {
    // 我們編寫的代碼
    // 所以說在這里面拿到的this就是 空的module.exports
});
compiledWrapper.call(module.exports, args);

四、NodeJS中為什么可以直接使用exports, require, module, __filename, __dirname?

因為所有的NodeJS文件在執(zhí)行的時候都會被包裹到一個函數(shù)中, 這些屬性都被通過參數(shù)的形式傳遞過來了

var args = [module.exports, require, module, filename, dirname];
compiledWrapper.apply(this.exports, args);

五、NodeJS中為什么不能直接exports賦值, 而可以給module.exports賦值?

因為直接賦值的方式就相當(dāng)于改變了exports的指向,不再指向module.exports上了,因此就不會修改module.exports的值,因此require拿到的就是一個空對象。

(function (exports, require, module, __filename, __dirname) {
    exports = "jojo";
});
jsScript.call(module.exports, module.exports);
return module.exports;

相當(dāng)于

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

相關(guān)閱讀更多精彩內(nèi)容

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