1. 程式人生 > >node(基礎三)_模塊系統基礎

node(基礎三)_模塊系統基礎

第三方模塊 技術 all 成員 訪問 結果 查看 優先 cnp

一、前言

這篇文章主要涉及:

1、模塊中exprots和module.exprots

2、require加載標識符分析

3、npm常用指令總結

二、主要內容

1、 exprots和module.exprots

(1)在node中,每個模塊內部都有一個自己的module對象, 而字module中,也有一個對象叫:exprots也是一個對象

比如:

技術分享圖片

(2)如果需要對外導出對象,只要把導出的成員掛載到module.exports中,,如果每次訪問都要通過module.exports.xxx=xxxx 所以有如下:

技術分享圖片

技術分享圖片

(3)當一個模塊需要導出單個成員的時候,直接exports=xxx 是不管用的

(4)對象最終返回的還是module.exports,,所以給exprots賦值是不管用的

比如:

技術分享圖片

(5)exprots=module.exprots會重新建立引用

技術分享圖片

2、require標識符分析

(1)優先從緩存加載

比如有如下三個文件:

技術分享圖片

加載關系如圖所示:

技術分享圖片

結果如圖所示:優先從緩存中加載,所以a中已經加載了b,main中又加載b,會直接從緩存中加載

技術分享圖片

(2)模塊標識

路徑形式: ./ ../不可以省略 /xxx標識當前文件模塊所在的磁盤根目錄(幾乎不用) 絕對路徑也幾乎不用

核心模塊:核心模塊文件已經被編譯到了二進制文件中,我們只需按照名字來加載就可以

如: require(‘fs‘) require(‘http‘)

第三方模塊:第三方模塊必須通過npm來下載,也用require來加載

不可能有任何一個第三方包和核心模塊的名字是一樣的

拿art-template來舉例,看看是如何標識的:

第一步:加載的時候 先找到當前文件所處目錄中的node_modules目錄

第二步:找到node_modules/art-template

第三步:找到node_modules / art-template / package.json文件

第四步:找到package.json文件中的main屬性,main屬性中就記錄了art-template的入口模塊

第五步:做完前面幾步,就加載使用第三方包,

如果package.json文件不存在或者mian指定的入口模塊沒有,則會自動去找該目錄下的inde.js index.js是一個默認備選項

如果還找不到,就會找上一級目錄中的node_modules目錄查找,如果還沒有,繼續往上一級,一直到磁盤根目錄,如果還沒找到就報錯:

can not find module xxxx

3、npm

(1)

查看版本:npm –version

升級: npm: npm install –global npm

Npm init 生成 package npm init –y 可以快速生成

Npm install 包名:只下載, 一次性將dependencies選項中的依賴項全部安裝

Npm install –save 包名:下載並且保存依賴項 npm i –S

Npm uninstall 包名:只刪除,如果有依賴項會依然保存

Npm uninstall –save 包名 :刪除的同時會將依賴信息也去除

Npm help: 查看使用幫助

Npm 命令 –help

(2)由於npm加載的時候是訪問的國外的網站,比較慢,這裏可以用淘寶提供的cnpm鏡像參考:http://npm.taobao.org

三、總結

node(基礎三)_模塊系統基礎