欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談node模塊與npm包管理工具

 更新時(shí)間:2018年01月03日 11:18:28   作者:范小飯_  
這篇文章主要介紹了node模塊與npm包管理工具,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

在Node.js中,以模塊為單位劃分所有的功能,并且提供了一個(gè)完整的模塊加載機(jī)制,所以我們可以將應(yīng)用程序劃分為各個(gè)不同的部分,并且對(duì)這些部分進(jìn)行很好的協(xié)同管理。通過(guò)將各種可重用代碼編寫(xiě)在各種模塊中的方法,可以大大減少應(yīng)用程序的代碼量,提高應(yīng)用程序的開(kāi)發(fā)效率以及應(yīng)用程序代碼的可讀性。通過(guò)模塊加載機(jī)制,可以將各種第三方模塊引入到我們的應(yīng)用程序中。

在node.js中,提供npm包管理工具,用于從第三方網(wǎng)站上下載各種Node.js包。

一、模塊

1.1 加載模塊

在Node.js中,以模塊為單位劃分所有的功能,一個(gè)Node.js應(yīng)用程序由大量的模塊組成,每一個(gè)模塊都是一個(gè)JavaScript文件,在加載node.js中預(yù)先定義的核心模塊,我們只需要require('模塊名'),例如require('http'),在將第三方類庫(kù)引入到我們的應(yīng)用程序時(shí),需要指定該文件的完整路徑及文件名,例如 require('./script/foo.js')

1.2 訪問(wèn)模塊

1.2.1使用exports對(duì)象訪問(wèn)

在一個(gè)模塊文件中定義變量、函數(shù)或?qū)ο笾辉谠撃K內(nèi)有效,當(dāng)你需要從外部模塊引用這些變量、函數(shù)或?qū)ο髸r(shí),需要再改模塊內(nèi),例如,建一個(gè)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中使用這些變量、函數(shù)或?qū)ο?,可在http.js中書(shū)寫(xiě)如下代碼:

var test1 = require('./testModule.js');
// 通過(guò)test1訪問(wèn)testModule.js模塊內(nèi)的testVar變量 和funName函數(shù)
console.log(test1.testVar)
test1.funName('Luckfine')

node 運(yùn)行下這個(gè)http.js node http.js

運(yùn)行結(jié)果如下


1.2.2使用module.exports對(duì)象訪問(wèn)

當(dāng)你需要從外部模塊引用這些變量、函數(shù)或?qū)ο髸r(shí),使用exports對(duì)象,也可以使用module.exports,但是需要將模塊定義一個(gè)類時(shí),只能用module.exports。

例如定義一個(gè)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;
};
// 設(shè)置私有變量_name的變量值
foo.prototype.SetName = function(name){
  _name = name;
}
// 獲取私有變量_age的變量只
foo.prototype.GetAge = function(age){
  return _age;
};
// 設(shè)置私有變量_name的變量值
foo.prototype.SetAge = function(age){
  _age = age;
}
foo.prototype.name = name;
foo.prototype.age = age;
module.exports = foo;

那么我們想在http.js中使用這個(gè)類的變量、函數(shù)或?qū)ο螅稍趆ttp.js中書(shū)寫(xiě)如下代碼:

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中運(yùn)行node http.js命令,運(yùn)行結(jié)果如下所示


總結(jié)以上:

也就是說(shuō),js文件和js文件之間有兩種合作的模式:
1) 某一個(gè)js文件中,提供了函數(shù),供別人使用。 只需要暴露函數(shù)就行了; exports.msg=msg;
2) 某一個(gè)js文件,描述了一個(gè)類。 module.exports = People;

二、npm包管理

npm是跟隨Node.js一起的包管理工具,能解決Node.js代碼部署上的很多問(wèn)題,當(dāng)我們使用npm去安裝一些第三方庫(kù)的時(shí)候,安裝包會(huì)放在運(yùn)行npm命令時(shí)所在的目錄中的node_modules文件夾中,如果當(dāng)前目錄下沒(méi)有node_modules,會(huì)在當(dāng)前目錄下生成node_modules目錄,并把我們需要的第三方庫(kù)放在node_modules中。

所以在安裝的時(shí)候,要注意,命令提示符所在的位置。

安裝第三方庫(kù)的命令  npm install 模塊名字, 假如我們需要安裝express,那么只需要在命令行中輸入npm install express

1.我們的依賴包,可能在隨時(shí)更新,我們永遠(yuǎn)想保持更新,或者某持某一個(gè)版本;
2.項(xiàng)目越來(lái)越大的時(shí)候,給別人看的時(shí)候,沒(méi)有必要再次共享我們引用的第三方模塊。

所以我們可以使用package.json來(lái)管理依賴包。

在cmd中,使用npm init可以初始化一個(gè)package.json文件,用回答問(wèn)題的方式生成一個(gè)新的package.json文件。

生成package.json的作用就是,如果一不小心我們丟了什么依賴,那么只要我們直接npm install就可以安裝package.json中的缺失的依賴;

package.json中版本號(hào)前面有一個(gè)尖角號(hào),表示固定版本,即固定使用我現(xiàn)在安裝的版本;

例如我們現(xiàn)在新建一個(gè)文件夾

1、新建文件夾

我們現(xiàn)在需要安裝一個(gè)第三方庫(kù)express,就先進(jìn)入這個(gè)文件夾,打開(kāi)命令行,在此輸入 npm install express'' 等命令行完成之后,我們會(huì)看到在文件夾中就新建了一個(gè)node_modules文件夾,并且把我們需要的庫(kù)已經(jīng)安裝在文件夾中

2、安裝后文件夾中內(nèi)容

然后我們需要一個(gè)package.json管理我們的包,就可以在命令行中輸入npm init,這時(shí)可已根據(jù)命令行的提示回答問(wèn)題建立package.json

3、建立package.json

那么我們這個(gè)項(xiàng)目的一些依賴,版本號(hào),描述,作者等都可以通過(guò)package.json進(jìn)行相應(yīng)管理。

4、包管理

我這個(gè)包管理內(nèi)容比較少,那么正常情況下package.jaon都有如下內(nèi)容

 

三、模塊對(duì)象的屬性

這個(gè)作為更深入的了解。

在模塊文件內(nèi)部,可以訪問(wèn)當(dāng)前模塊的如下一些屬性。

module.id : 表示該模塊文件的絕對(duì)路徑。

module.filename :屬性值為當(dāng)前模塊的文件名

module.loaded :屬性值為布爾值,當(dāng)屬性值為false時(shí)表示模塊尚未加載完畢,反之為加載完畢。

module.parent:屬性值為當(dāng)前模塊的父模塊對(duì)象,即調(diào)用當(dāng)前模塊的模塊對(duì)象

module.children:屬性值為一個(gè)數(shù)組,其中存放了當(dāng)前模塊所有子模塊對(duì)象,即當(dāng)前模塊中已加載的所有模塊對(duì)象。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • node.js配置Token驗(yàn)證的2種方式總結(jié)

    node.js配置Token驗(yàn)證的2種方式總結(jié)

    token驗(yàn)證,在設(shè)計(jì)登錄注冊(cè)和一些權(quán)限接口時(shí)發(fā)揮作用,下面這篇文章主要給大家介紹了關(guān)于node.js配置Token驗(yàn)證的2種方式,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • node中的__filename和__dirname的使用詳解

    node中的__filename和__dirname的使用詳解

    本文主要介紹了node中的__filename和__dirname的使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 安裝nodejs和yarn及配置淘寶源過(guò)程記錄

    安裝nodejs和yarn及配置淘寶源過(guò)程記錄

    這篇文章主要介紹了安裝nodejs和yarn及配置淘寶源過(guò)程記錄的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • 教你如何在Node.js中使用jQuery

    教你如何在Node.js中使用jQuery

    本文給大家分享的是如何在Node.js中使用jQuery的方法,包含步驟以及出錯(cuò)的處理,非常的詳細(xì),有需要的小伙伴可以參考下
    2016-08-08
  • NodeJs的fs讀寫(xiě)刪除移動(dòng)監(jiān)聽(tīng)

    NodeJs的fs讀寫(xiě)刪除移動(dòng)監(jiān)聽(tīng)

    這篇文章主要介紹了NodeJs的fs讀寫(xiě)刪除移動(dòng)監(jiān)聽(tīng),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-04-04
  • Nodejs實(shí)現(xiàn)的一個(gè)簡(jiǎn)單udp廣播服務(wù)器、客戶端

    Nodejs實(shí)現(xiàn)的一個(gè)簡(jiǎn)單udp廣播服務(wù)器、客戶端

    這篇文章主要介紹了Nodejs實(shí)現(xiàn)的一個(gè)簡(jiǎn)單udp廣播服務(wù)器、客戶端,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2014-09-09
  • 詳解用node.js實(shí)現(xiàn)簡(jiǎn)單的反向代理

    詳解用node.js實(shí)現(xiàn)簡(jiǎn)單的反向代理

    本篇文章主要介紹了詳解用node.js實(shí)現(xiàn)簡(jiǎn)單的反向代理,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • Express下采用bcryptjs進(jìn)行密碼加密的方法

    Express下采用bcryptjs進(jìn)行密碼加密的方法

    本篇文章主要介紹了Express下采用bcryptjs進(jìn)行密碼加密的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • 解決node-sass下載不成功的問(wèn)題

    解決node-sass下載不成功的問(wèn)題

    這篇文章主要介紹了解決node-sass下載不成功的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • NodeJS去除BOM和轉(zhuǎn)換UTF8編碼

    NodeJS去除BOM和轉(zhuǎn)換UTF8編碼

    使用NodeJS編寫(xiě)前端工具時(shí),操作得最多的是文本文件,但遺憾的是,GBK編碼不在NodeJS自身支持范圍內(nèi),UTF8文件還可能帶有BOM,在讀取不同編碼的文本文件時(shí),需要將文件內(nèi)容轉(zhuǎn)換為JS使用的UTF8編碼字符串后才能正常處理
    2023-11-11

最新評(píng)論