在Node.js中,以模組為單位劃分所有的功能,並且提供了一個完整的模組載入機制,所以我們可以將應用程式劃分為各個不同的部分,並且對這些部分進行很好的協同管理。透過將各種可重複使用程式碼編寫在各種模組中的方法,可以大幅減少應用程式的程式碼量,提高應用程式的開發效率以及應用程式程式碼的可讀性。透過模組載入機制,可以將各種第三方模組引入到我們的應用程式中。本文主要介紹了node模組與npm套件管理工具,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟著小編過來看看吧,希望能幫助大家。
在node.js中,提供npm套件管理工具,用於從第三方網站下載各種Node.js套件。
一、模組
1.1 載入模組
在Node.js中,以模組為單位分割所有的功能,一個Node.js應用程式由大量的模組組成,每一個模組都是一個JavaScript文件,在載入node.js中預先定義的核心模組,我們只需要require('模組名'),例如require('http '),在將第三方類別庫引入到我們的應用程式時,需要指定該檔案的完整路徑及檔案名,例如require('./script/foo.js')
# 1.2 存取模組
1.2.1使用exports物件存取
在一個模組檔案中定義變數、函數或物件只在該模組內有效,當你需要從外部模組引用這些變數、函數或物件時,需要再改模組內,例如,建立一個testModule.js,程式碼如下:
var testVar = "Can you see me now ? "; var funName = function(name){ console.log('My name is' + name); } exports.testVar = testVar ; exports.funName = funName ;
那我們想在http.js中使用這些變數、函數或對象,可在http.js中書寫如下程式碼:
var test1 = require('./testModule.js'); // 通过test1访问testModule.js模块内的testVar变量 和funName函数 console.log(test1.testVar) test1.funName('Luckfine')
node 運行下這個http.js node http.js
運行結果如下
#1.2.2使用module.exports物件存取
當你需要從外部模組引用這些變數、函數或物件時,使用exports對象,也可以使用module.exports,但是需要將模組定義一個類別時,只能用module.exports。
例如定義一個testModule類,在testModule.js中如下程式碼:
var _name,_age var name = '',age = 0; var foo = function(name,age){ _name = name ; _age = age ; } // 获取私有变量_name的变量只 foo.prototype.GetName = function(name){ return _name; }; // 设置私有变量_name的变量值 foo.prototype.SetName = function(name){ _name = name; } // 获取私有变量_age的变量只 foo.prototype.GetAge = function(age){ return _age; }; // 设置私有变量_name的变量值 foo.prototype.SetAge = function(age){ _age = age; } foo.prototype.name = name; foo.prototype.age = age; module.exports = foo;
那麼我們想在http.js中使用這個類別的變數、函數或對象,可在http.js中書寫如下程式碼:
var foo = require('./testModule.js'); var myFoo = new foo('Luckfine',18); console.log('获取修改前的私有变量值') console.log(myFoo.GetName()); console.log(myFoo.GetAge()); console.log('修改私有变量'); myFoo.SetName('Baby'); myFoo.SetAge(16); console.log('获取修改后的私有变量值') console.log(myFoo.GetName()); console.log(myFoo.GetAge()); console.log('获取修改前的公有变量值') console.log(myFoo.name); console.log(myFoo.age); console.log('修改公有变量') myFoo.name = "Tom"; myFoo.age = 20; console.log('获取修改后的公有变量值') console.log(myFoo.name); console.log(myFoo.age);
然後在iTerm中執行node http.js命令,運行結果如下所示
總結以上:
也就是說,js檔案和js檔案之間有兩種合作的模式:
1) 某一個js檔案中,提供了函數,供別人使用。 只需要暴露函數就行了;exports.msg=msg;
2) 某一個js文件,描述了一個類別。 module.exports = People;
二、npm套件管理
npm是跟隨Node.js一起的套件管理工具,能解決Node.js程式碼部署上的很多問題,當我們使用npm去安裝一些第三方函式庫的時候,安裝套件會放在執行npm指令時所在的目錄中的node_modules資料夾中,如果目前目錄下沒有node_modules,會在目前目錄下產生node_modules目錄,並把我們需要的第三方函式庫放在node_modules中。
所以在安裝的時候,要注意,命令提示字元所在的位置。
安裝第三方函式庫的指令 npm install 模組名字, 假如我們需要安裝express,那麼只需要在命令列中輸入npm install express
1.我們的依賴包,可能隨時更新,我們永遠想保持更新,或某持某一個版本;
2.專案越來越大的時候,給別人看的時候,沒有必要再分享我們引用的第三方模組。
所以我們可以使用package.json來管理依賴套件。
在cmd中,使用npm init可以初始化一個package.json文件,用回答問題的方式產生一個新的package.json文件。
產生package.json的作用就是,如果一不小心我們丟了什麼依賴,那麼只要我們直接npm install就可以安裝package.json中的缺失的依賴;
package.json中版本號前面有一個尖角號,表示固定版本,即固定使用我現在安裝的版本;
例如我們現在新建一個資料夾
1、新資料夾
我們現在需要安裝一個第三方函式庫express,就先進入這個資料夾,打開命令列,在此輸入npm install express'' 等命令列完成之後,我們會看到在資料夾中就新建了一個node_modules資料夾,並且把我們需要的庫已經安裝在資料夾中
2、安裝後資料夾中內容
然後我們需要一個package.json管理我們的包,就可以在命令列中輸入npm init,這時可已根據命令列的提示回答問題建立package.json
#3、建立package.json
那麼我們這個專案的一些依賴,版本號,描述,作者等都可以透過package.json進行相應管理。
4、套件管理
我這個套件管理內容比較少,那麼正常情況下package.jaon都有如下內容
#三、模組物件的屬性
這個作為更深入的了解。
在模組檔案內部,可以存取目前模組的以下一些屬性。
module.id : 表示該模組檔案的絕對路徑。
module.filename :屬性值為目前模組的檔名
module.loaded :屬性值為布林值,當屬性值為false時表示模組尚未載入完畢,反而為載入完畢。
module.parent:屬性值為目前模組的父模組對象,也就是呼叫目前模組的模組物件
module.children:屬性值為一個數組,其中存放了目前模組所有子模組對象,即目前模組中已載入的所有模組對象。
相關推薦:
以上是node模組與npm套件管理工具分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript可用於前端和後端開發。前端通過DOM操作增強用戶體驗,後端通過Node.js處理服務器任務。 1.前端示例:改變網頁文本內容。 2.後端示例:創建Node.js服務器。

選擇Python還是JavaScript應基於職業發展、學習曲線和生態系統:1)職業發展:Python適合數據科學和後端開發,JavaScript適合前端和全棧開發。 2)學習曲線:Python語法簡潔,適合初學者;JavaScript語法靈活。 3)生態系統:Python有豐富的科學計算庫,JavaScript有強大的前端框架。

JavaScript框架的強大之處在於簡化開發、提升用戶體驗和應用性能。選擇框架時應考慮:1.項目規模和復雜度,2.團隊經驗,3.生態系統和社區支持。

引言我知道你可能會覺得奇怪,JavaScript、C 和瀏覽器之間到底有什麼關係?它們之間看似毫無關聯,但實際上,它們在現代網絡開發中扮演著非常重要的角色。今天我們就來深入探討一下這三者之間的緊密聯繫。通過這篇文章,你將了解到JavaScript如何在瀏覽器中運行,C 在瀏覽器引擎中的作用,以及它們如何共同推動網頁的渲染和交互。 JavaScript與瀏覽器的關係我們都知道,JavaScript是前端開發的核心語言,它直接在瀏覽器中運行,讓網頁變得生動有趣。你是否曾經想過,為什麼JavaScr

Node.js擅長於高效I/O,這在很大程度上要歸功於流。 流媒體匯總處理數據,避免內存過載 - 大型文件,網絡任務和實時應用程序的理想。將流與打字稿的類型安全結合起來創建POWE

Python和JavaScript在性能和效率方面的差異主要體現在:1)Python作為解釋型語言,運行速度較慢,但開發效率高,適合快速原型開發;2)JavaScript在瀏覽器中受限於單線程,但在Node.js中可利用多線程和異步I/O提升性能,兩者在實際項目中各有優勢。

JavaScript起源於1995年,由布蘭登·艾克創造,實現語言為C語言。 1.C語言為JavaScript提供了高性能和系統級編程能力。 2.JavaScript的內存管理和性能優化依賴於C語言。 3.C語言的跨平台特性幫助JavaScript在不同操作系統上高效運行。

JavaScript在瀏覽器和Node.js環境中運行,依賴JavaScript引擎解析和執行代碼。 1)解析階段生成抽象語法樹(AST);2)編譯階段將AST轉換為字節碼或機器碼;3)執行階段執行編譯後的代碼。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3漢化版
中文版,非常好用

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)