Node.js模組
Node.js 模組和 Node.js 包介紹。
一、Node.js模組
每一個Node.js都是一個Node.js模組,包括JavaScript檔案(.js)、JSON文字檔案(.json)和二進位制模組檔案(.node)。
1. 模組的使用
編寫一個模組:在虛擬機器桌面新建一個檔案mymodule.js,輸入如下程式碼並儲存:
<pre>
function hello() {
console.log('Hello');
}
function world() {
console.log('World');
}
</pre>
這就是一個Node.js模組,但是怎麼在其他模組中引入並使用這個模組呢?我們需要為模組提供對外的介面,這就要用到module.exports和exports
*我們可以這樣寫mymodul.js:
<pre>
function hello() {
console.log('Hello');
}
function world() {
console.log('World');
}
exports.hello = hello;
exports.world = world;
</pre>
*在其他模組中,可以使用require(module_name);載入需要的模組,如,在虛擬機器桌面新建index.js
,輸入如下程式碼並儲存:
<pre>
var hello = require('./mymodule'); // 也可以寫作
var hello = require('./mymodule.js');// 現在就可以使用mymodule.js中的函式了
hello.hello(); // >> Hello
hello.world(); // >> World
</pre>
也可以這樣寫mymodule.js
<pre>
function Hello() {
this.hello = function() {
console.log('Hello');
};
this.world = function() {
console.log('World');
};
}
module.exports = Hello;
</pre>
此時,index.js
就要改成這樣:
<pre>
var Hello = require('./mymodule');
var hello = new Hello();
hello.hello(); // >> Hello
hello.world(); // >> World
</pre>
2. module.exports和exports
module是一個物件,每個模組中都有一個module物件,module是當前模組的一個引用。
module.exports物件是Module系統建立的,而exports可以看作是對module.exports物件的一個引用。
在模組中require另一個模組時,以module.exports的值為準,
因為有的情況下,module.exports和exports它們的值是不同的。
module.exports和exports的關係可以表示成這樣:
<pre>
// module.exports和exports相同的情況
var m = {}; // 表示 module
var e = m.e = {}; // e 表示 exports, m.e 表示 module.exports
m.e.a = 5;
e.b = 6;
console.log(m.e); // Object { a: 5, b: 6 }
console.log(e); // Object { a: 5, b: 6 }
</pre>
二、Node.js包
1. 包
包用於管理多個模組及其依賴關係,可以對多個模組進行封裝,
包的根目錄必須包含package.json檔案,
package.json檔案是CommonJS規範用於描述包的檔案,
符合CommonJS規範的package.json檔案應該包含以下欄位:
- name:包名。包名是唯一的,只能包含小寫字母、數字和下劃線。
- version:包版本號。
- description:包說明。
- keywords:關鍵字陣列。用於搜尋。
- homepage:專案主頁。
- bugs:提交bug的地址。
- license:許可證。
- maintainers:維護者陣列。
- contributors:貢獻者陣列。
- repositories:專案倉庫託管地址陣列。
- dependencies:包依賴。
下面是一個package.json示例:
<pre>
{
"name": "shiyanlou",
"description": "Shiyanlou test package.",
"version": "0.1.0",
"keywords": [
"shiyanlou",
"nodejs"
],
"maintainers": [{
"name": "test",
"email": "test@shiyanlou.com"
}],
"contributors": [{
"name": "test",
"web": "http://www.shiyanlou.com/"
}],
"bugs": {
"mail": "test@shiyanlou.com",
"web": "http://www.shiyanlou.com/"
},
"licenses": [{
"type": "Apache License v2",
"url": "http://www.apache.org/licenses/apache2.html"
}],
"repositories": [{
"type": "git",
"url": "http://github.com/test/test.git"
}],
"dependencies": {
"webkit": "1.2",
"ssl": {
"gnutls": ["1.0", "2.0"],
"openssl": "0.9.8"
}
}
}
</pre>
2. npm包管理工具
由於實驗樓環境網路限制,所以npm命令會連線taobao的源,而不會直接連線官方源。
npm 也可以從第三方網站(http://www.npmjs.org/)上下載第三方Node.js包。
在實驗樓的環境中搜尋包(預設會連線到taobao的Node.js源):
shiyanlou@cqqg0heZ:~$ sudo npm search express
安裝包:
shiyanlou@cqqg0heZ:~$ sudo npm install -g express更新包:
shiyanlou@cqqg0heZ:~$ sudo npm update express解除安裝包:
shiyanlou@cqqg0heZ:~$ sudo npm uninstall express
相關文章
- 【核心模組】node.jsNode.js
- Node.js path模組Node.js
- Node.js模組系統Node.js
- Node.js 的 http模組Node.jsHTTP
- Node.js 的 模組化Node.js
- Node.js之模組機制Node.js
- electron 使用 Node.js 原生模組Node.js
- Node.js 系列 – 模組機制Node.js
- Node.js 系列 - 模組機制Node.js
- Node.js process 模組解讀Node.js
- 6-1 Node.js 模組Node.js
- Node.js util 模組解讀Node.js
- Node.js教程15:net模組初探Node.js
- node.js之path模組的使用Node.js
- 無涯教程: Node.js - Web模組Node.jsWeb
- node.js中的模組實現原理Node.js
- Node.js child_process模組解讀Node.js
- 淺析node.js的模組載入Node.js
- 你需要了解的 Node.js 模組Node.js
- 理解Node.js安裝及模組化Node.js
- 在Node.js中使用C++模組Node.jsC++
- 在Windows上安裝Node.js模組WindowsNode.js
- Node.js 如何處理 ES6 模組Node.js
- Node.js基礎知識之Path模組Node.js
- Node.js 核心模組 Timers 詳解Node.js
- 極簡 Node.js 入門 - 1.2 模組系統Node.js
- Node.js之readline模組的使用Node.js
- Node.js之網路通訊模組淺析Node.js
- node.js debug模組淺析及改進Node.js
- 模組化方式構建Node.js應用程式Node.js
- Node.js(一)——(Node.js安裝及使用,通過Node.js搭建伺服器,模組化及自定義模組,npm/yarn/nvm,內建模組fs的使用,buffer及stream,新聞列表案例)Node.js伺服器NPMYarn
- <node.js學習筆記(4)>stream和http模組Node.js筆記HTTP
- 使用C++為node.js寫擴充套件模組C++Node.js套件
- Node.js中Qt擴充套件模組Node-QtNode.jsQT套件
- Node.js常用模組Module的載入機制與使用Node.js
- [譯]使用 Rust 編寫快速安全的原生 Node.js 模組RustNode.js
- node.js 模組和其下載資源的映象設定Node.js
- <node.js學習筆記(6)>koa-router,模組化Node.js筆記