国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

淺析node.js的模塊加載機制

2024-05-06 15:33:54
字體:
來源:轉載
供稿:網友

在node.js中,模塊使用CommonJS規范,一個文件是一個模塊

node.js中的模塊可分為三類

    內部模塊 - node.js提供的模塊如 fs,http,path等 自定模塊 - 我們自己寫的模塊 第三方模塊 - 通過npm安裝的模塊

node.js提供了大量的模塊供我們使用,比如 想解析一個文件的路徑,可以使用path模塊下的相應方法實現:

const path = require('path');//返回目標文件的絕對路徑console.log(path.resolve('./1.txt'));

運行結果:

/Users/cuiyue/workspace/test/1.txt

使用require引入相應的模塊,即可使用。

__dirname和__filename

node.js的每個模塊都有這兩個參數,它們都是一個絕對路徑的地址,區別是__filename存放了從根目錄到當前文件名的路徑,__dirname只存放從根目錄到模塊的所在目錄:

console.log(__dirname);console.log(__filename);

運行結果:

/Users/cuiyue/workspace/test
/Users/cuiyue/workspace/test/module.js

vm模塊

vm模塊是node.js提供在V8虛擬機中編譯和運行的工具,node.js中的模塊內部實現就是通過此模塊完成。

說說vm的基本用法。

在js環境中有一個eval函數,它可以運行js的代碼字符串,比如:

eval('console.log("Hello javascript.")'); //輸出Hello javascript.

可以看到,eval函數的參數是一段字符串,它可以運行字符串形式的js代碼,但它可以使用上下文環境中的變量:

var num=100;eval('console.log(num)'); //輸出100

以上是可以正確訪問num的值。

vm模塊提供了方法創建一個安全的沙箱,在指定的上下文環境中運行代碼,不受外界干擾。

const vm = require('vm');var num = 100;vm.runInThisContext('console.log(num)');

運行結果:

console.log(num)
            ^
ReferenceError: num is not defined

可以看到代碼報錯了,說明在vm創建了指定的上下文環境中,拿不到外界的參量。

CommonJS規范

在以前,由于javascript的歷史原因導致它的模塊機制很差,由于這些缺點使得javascript不太善于開發大型應用,于是提出了CommonJS規范以彌補javascript的不足。

CommonJS規范主要分為三塊內容:模塊導入導出、模塊定義、模塊標識。

模塊導入導出

CommonJS中使用require()函數進行模塊的引入。

const mymodule = require('mymodule');

使用exports導出模塊

module.exports = {  name: 'Tom'};

引用的名稱可以不帶路徑,若不帶路徑表示引入的是node提供的模塊或是npm安裝的第三方模塊(node_modules)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 霍林郭勒市| 弥渡县| 分宜县| 闵行区| 阿荣旗| 乌拉特中旗| 宜宾县| 沙湾县| 隆昌县| 格尔木市| 大理市| 信宜市| 綦江县| 花莲县| 乐昌市| 黄龙县| 镇宁| 惠安县| 新泰市| 石阡县| 林周县| 西丰县| 东方市| 彭山县| 紫云| 乌拉特后旗| 利津县| 江阴市| 蒙自县| 怀柔区| 永川市| 策勒县| 宣恩县| 鄂尔多斯市| 远安县| 容城县| 子洲县| 简阳市| 车致| 塘沽区| 罗源县|