1. 程式人生 > >nodejs中npm深入理解

nodejs中npm深入理解

1.Node.js中,一個JavaScript檔案中定義的變數、函式,都只在這個檔案內部有效。例如下圖中,foo.js中定義的變數僅僅能夠在當前檔案中訪問。



當需要從此JS檔案外部(例如上圖中06.js)引用這些變數、函式時,必須使用exports物件進行暴露。使用者要用require()命令引用這個JS檔案。這個就是node.js 遵循的common js規範。(其中,foo.js中8.9.10行中的exports ,可以改為module.exports效果是一樣的。

看上述圖片和執行結果,就能瞭解使用規則。

2.看懂了上面的案例後,我們進一步引申,看下面程式碼


people.js檔案中通過module.exports一個構造方法,就可以在05.js檔案中引用了,就可以完成對所暴露出來的構造方法進行例項化。

3. 進步一擴充套件,我們通過上述可以看到,05.js 或者06.js 都引用了一個相對路徑 ,require('./test/People.js')和require(‘./test/foo.js)  ,如果我們不寫相對路徑的話呢,只寫成

require('People.js')和require('foo.js')會怎樣呢,看下面程式碼:


那就需要把foo.js放到node_modules檔案加中,可以看到控制檯中結果完全正確,程式碼執行過程中,會自動往當前同級別node_modules檔案加中去找並載入,如果沒有node_modules檔案中,就會往上層目錄中去找node_modules檔案加,以此找下去。

4.看懂上述後,進一步擴充套件,如果,require('People.js')和require('foo.js')中,改為require('People')和require('foo') 那麼,這樣改怎麼找呢


如上圖就會把bar 當成一個資料夾,去該資料夾下去找index.js,如果找不到index.js就會報錯。當然這也並不很絕對,如果該資料夾下有package.json檔案,就會其中找main對應的js檔案

5.上面內容是不是解答了你的很多疑惑呢。有了上面的基礎,我們說一下npm


這是在npm上隨便找的一個包,那麼按照所給出的命令進行 安裝  npm install  dateformat


進行第一步安裝之後,第二步在左邊目錄中自動生成一個node_modules資料夾,然後下面自動生成dateformat模組,第三步引用,第四步生成程式碼。但是我們在開發過程中,

還要在cmd 中進行npm init操作。如下圖所示


上面進行npm init 安裝時候,會自動成成package.json檔案。引文node_modules資料夾中已經有dateformat檔案夾了,所以,package.json資料夾中dependencies中,會有dateformat內容。如果今後再次安裝相關包,可以通過npm install ***  --save 進行安裝,那麼dependencies中就會包含該安裝包,這樣有個什麼用呢?

如果你把node_modules資料夾刪除(因為,拷貝專案給別人時候,沒必要把這個包拷過去),你只要保留最外層的package.json資料夾,(也就是通過npm init時候自動生成的那個package.json)那麼,通過命令npm install 命令就會生成node_modules資料夾以及下面各種安裝包。