搜尋
首頁web前端js教程如何使用node模組與npm套件管理工具

如何使用node模組與npm套件管理工具

Jun 13, 2018 pm 05:42 PM
nodenpm模組模組管理

這篇文章主要介紹了node模組與npm套件管理工具,現在分享給大家,也給大家做個參考。

在Node.js中,以模組為單位劃分所有的功能,並且提供了一個完整的模組載入機制,所以我們可以將應用程式劃分為各個不同的部分,並且對這些部分進行很好的協同管理。透過將各種可重複使用程式碼編寫在各種模組中的方法,可以大幅減少應用程式的程式碼量,提高應用程式的開發效率以及應用程式程式碼的可讀性。透過模組載入機制,可以將各種第三方模組引入到我們的應用程式中。

在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:屬性值為一個數組,其中存放了目前模組所有子模組對象,即目前模組中已載入的所有模組對象。

上面是我整理給大家的,希望今後對大家有幫助。

相關文章:

ajax請求vue.js渲染頁面載入

#如何解決Vue.js顯示資料的時,頁面閃現

使用vue-router如何設定每個頁面的title方法

在vue中如何實現頁面跳轉後返回原始頁面初始位置

以上是如何使用node模組與npm套件管理工具的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
JavaScript在行動中:現實世界中的示例和項目JavaScript在行動中:現實世界中的示例和項目Apr 19, 2025 am 12:13 AM

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

JavaScript和Web:核心功能和用例JavaScript和Web:核心功能和用例Apr 18, 2025 am 12:19 AM

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

了解JavaScript引擎:實施詳細信息了解JavaScript引擎:實施詳細信息Apr 17, 2025 am 12:05 AM

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python vs. JavaScript:學習曲線和易用性Python vs. JavaScript:學習曲線和易用性Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Python vs. JavaScript:社區,圖書館和資源Python vs. JavaScript:社區,圖書館和資源Apr 15, 2025 am 12:16 AM

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

從C/C到JavaScript:所有工作方式從C/C到JavaScript:所有工作方式Apr 14, 2025 am 12:05 AM

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

JavaScript引擎:比較實施JavaScript引擎:比較實施Apr 13, 2025 am 12:05 AM

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

超越瀏覽器:現實世界中的JavaScript超越瀏覽器:現實世界中的JavaScriptApr 12, 2025 am 12:06 AM

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境