模塊加載痛點(diǎn)
大家也或多或少的了解node模塊的加載機(jī)制,最為粗淺的表述就是依次從當(dāng)前目錄向上級查詢node_modules目錄,若發(fā)現(xiàn)依賴則加載。但是隨著應(yīng)用規(guī)模的加大,目錄層級越來越深,若是在某個(gè)模塊中想要通過require方式以依賴名稱或相對路徑的方式引用其他模塊就非常麻煩,影響開發(fā)效率和美觀。
示例demo:
// 當(dāng)前目錄: /usr/local/test/index.js // gulp模塊所在路徑為 /usr/lib/node_modules var gulp = require('../../lib/gulp');
gulp.task('say',function(){ console.log('hello wolrd');
});
目前的條件下,只有采用上述中相對路徑的方式引用依賴模塊,可以看出上述引用的缺點(diǎn):
-
丑陋,十分繁雜
-
容易出錯(cuò),難以維護(hù)
第二個(gè)缺點(diǎn)是最難以接受的,在多次引用模塊的情況下問題會(huì)被放大,因此急需尋找某種方案解決多層目錄依賴引用,本文將會(huì)討論筆者在開發(fā)過程中的一些嘗試,并歡迎大家一起討論其他可行性方案。
全局變量法
由于目標(biāo)是解決毫無美觀又難以理解的相對目錄層級,那么可以嘗試使用變量完成目錄層級的替代。這種方案最為直接,且node加載該依賴的速度最快,無需遍歷其他各級目錄。但是為了更為通用,筆者常采用全局變量的方式綁定目錄關(guān)系:
demo:
// 當(dāng)前目錄: /usr/local/test/index.js // gulp模塊所在路徑為 /usr/lib/node_modules global._root = '/u