【第四節 Node.js模塊和包】
阿新 • • 發佈:2017-11-10
可選 obj hello keyword tor 簡單 enc mod ima 概念:模塊(Module)和包(Package)是Node.js最重要的支柱。開發一個具有一定規模的程序不可能只用一個文件,通常需要把各個功能拆分、分裝、然後組合起來。模塊正式為了實現這種方式而誕生,在瀏覽器JavaScript中,腳本模塊的拆分和組合通常使用HTML的script標簽來實現,Node.js提供了require函數來調用其他模塊,而且模塊都是基於文件,機制非常簡單,模塊和包的區別是透明的,因此經常不作區分。
一、模塊
1.什麽是模塊
模塊和文件是一一對應的。一個Node.js文件就是一個模塊,這個文件可能是JavaScript代碼、JSON或者編譯過的C/C++擴展。
var http=require(‘http‘),其中http是Node.js的一個核心模塊,通過require函數獲取這個模塊,然後使用其中的對象
2.創建及加載模塊
(1)創建模塊
Node.js提供了exports和require兩個對象,其中exports是模塊公開的接口,require用於從外部獲取一個模塊的接口,即獲取模塊的exports對象
通過同級下兩個js文件:module.js和getModule.js的實現:
運行結果:
(3)覆蓋exports
有時我們只是想把一個對象封裝到模塊中,例如
定義模塊:singleobejct.js
引入模塊使用:getSingleObject.js
A.繁瑣:exports.hello=hello;
引入:require("./singleobject").hello;
B.簡易:module.exports=hello;
(1)作為文件夾的模塊
somepackage文件夾
最簡單的包,就是一個作為文件夾的模塊,
創建一個文件夾 somepackage,裏面有一個index.js,裏面提供一個方法sayHello()
var somepackage=require(‘./somepackage‘);
somepackage.sayHello();
我們使用這種方法可以把文件夾封裝成一個模塊,即所謂的包。包通常是一些模塊的集合,在模塊的基礎上提供了更高層的抽象,相當於提供了一些固定接口的函數庫,通過定制package.json,我們可以創建更復雜、更完善、更符合規範的包用於發布。
![技術分享](http://images2017.cnblogs.com/blog/1249501/201711/1249501-20171110150539153-2072492217.png)
運行結果:
![技術分享](http://images2017.cnblogs.com/blog/1249501/201711/1249501-20171110151254028-997660013.png)
![技術分享](http://images2017.cnblogs.com/blog/1249501/201711/1249501-20171110151642997-230659123.png)
![技術分享](http://images2017.cnblogs.com/blog/1249501/201711/1249501-20171110151905122-469950367.png)
運行結果:
![技術分享](http://images2017.cnblogs.com/blog/1249501/201711/1249501-20171110152623278-164106172.png)
![技術分享](http://images2017.cnblogs.com/blog/1249501/201711/1249501-20171110153125403-2096554468.png)
(2)package.json 前面的例子,在somepackage文件夾下,我們創建一個package.json的文件,內容 { ‘main‘:‘./lib/index.js‘ } Node.js在調用某個包時,會檢查包中package.json文件的main字段,將其作為包的接口模塊,如果package.json或main字段不存在,會常事尋找index.js或index.code作為包的接口 package.json:
![技術分享](http://images2017.cnblogs.com/blog/1249501/201711/1249501-20171110152932794-1760272739.png)
註意路徑和文件格式package.js:
![技術分享](http://images2017.cnblogs.com/blog/1249501/201711/1249501-20171110153840216-330403897.png)
【第四節 Node.js模塊和包】