搜尋
首頁web前端js教程node模組與npm套件管理工具分析

node模組與npm套件管理工具分析

Jan 05, 2018 am 09:50 AM
node分析管理工具

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

相關推薦:

使用nvm管理不同版本的node與npm

##vue元件如何發佈到npm

關於使用NPM#

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

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
JavaScript應用程序:從前端到後端JavaScript應用程序:從前端到後端May 04, 2025 am 12:12 AM

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

Python vs. JavaScript:您應該學到哪種語言?Python vs. JavaScript:您應該學到哪種語言?May 03, 2025 am 12:10 AM

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

JavaScript框架:為現代網絡開發提供動力JavaScript框架:為現代網絡開發提供動力May 02, 2025 am 12:04 AM

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

JavaScript,C和瀏覽器之間的關係JavaScript,C和瀏覽器之間的關係May 01, 2025 am 12:06 AM

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

node.js流帶打字稿node.js流帶打字稿Apr 30, 2025 am 08:22 AM

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

Python vs. JavaScript:性能和效率注意事項Python vs. JavaScript:性能和效率注意事項Apr 30, 2025 am 12:08 AM

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

JavaScript的起源:探索其實施語言JavaScript的起源:探索其實施語言Apr 29, 2025 am 12:51 AM

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

幕後:什麼語言能力JavaScript?幕後:什麼語言能力JavaScript?Apr 28, 2025 am 12:01 AM

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

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脫衣器

Video Face Swap

Video Face Swap

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

熱工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

記事本++7.3.1

記事本++7.3.1

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

SublimeText3 Mac版

SublimeText3 Mac版

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