Node.js 蠶食計劃(一)—— 模塊化編程

衆所周知,Node.js 的出現造就了全棧工程師,由於它讓 JavaScript 的舞臺從瀏覽器擴大到了服務端node

而 Node.js 的強大也得益於它龐大的模塊庫,因此學習 Node.js 第一步還得從模塊開始~npm

 

1、安裝 Node.js 和 npmjson

Node.js 中文網下載合適的安裝包瀏覽器

安裝的過程十分簡單,只須要一直點 next 就行。安裝 node.js 的同時會自帶 npm (node package manager) app

安裝完成後,使用命令行工具輸入 node -vnpm -v,若是能顯示出版本號,就說明安裝成功。異步

 

而後輸入 node 進入環境,就能夠運行 JavaScript 語句了ide

連按兩次 Ctrl+C 就能退出 Node.js 環境函數

 

 

2、建立模塊工具

上面只是在命令行中運行 Node 程序,在實際開發的時候須要一個集成開發環境學習

我通常使用 Visual Studio Code 做爲開發工具,具體的環境搭建能夠參考廖雪峯大神的視頻講解

 

手動建立一個項目結構:

其中 app.js 是入口文件,wise_module 用來存放模塊, .vscode 是開發工具生成的配置目錄

而後在 wise_module 目錄下建立 hello.js

// hello.js
 'use strict'; function hello(name) { console.log('hello', name); } module.exports = hello;

這個 hello.js 就是一個模塊,經過 module.exports 將函數 hello 做爲輸出結果暴露出來

別的模塊就可以經過 require 引入 hello 函數:

// app.js

'use static'; let hello = require('./wise_module/hello'); hello('wise wrong');

運行結果:

 

 

3、深刻解析 require

能夠看到 app.js 中的 require 後面接的是相對路徑

 

若是改爲這樣:

就會提示找不到對應模塊

 

這是由於在沒有具體路徑的時候,require 會首先檢查 node.js 核心模塊(如 "fs"),

而後檢查 node_modules,最後檢查環境變量 NODE_PATH 指定的目錄

 

這裏咱們能夠新建一個 node_modules 文件夾,將 hello.js 挪過去

 

這時就能正常運行了

 

上面的 hello 模塊是一個 js 文件,若是 hello 是一個文件夾,就須要在目錄下建立一個 index.js 做爲模塊的入口

實際項目中,node_modules 是由 package.json 生成,裏面用來存放第三方依賴庫

本身開發的模塊仍是須要放到其餘文件目錄下,而後經過 require( /*相對路徑*/ ) 引入

 

在 Node 這個由異步操做構成的環境中,require 是少有的幾個同步 I/O 操做之一

爲了不堵塞,建議只在程序最初加載的時候使用 require,在程序中 I/O 密集的地方就要避免使用。

 

 

4、模塊的兩種導出方式

把上面示例中 hello.js 放回 wise_module 目錄,而後把導出方式改寫一下:

 

exports 這種方式導出的時候,將 hello 函數做爲導出對象的一個鍵值給暴露出來

在 app.js 中調用的時候就須要這樣調用:

 

若是把導出的代碼改成下面這樣,也能正常工做

 

看起來 exports 變量和 module.exports 變量彷佛是同一個變量

但實際上仍是有些區別,好比 exports 不能直接賦值

 

這是由於 exports 只是對 module.exports 的一個全局引用,會在程序加載時初始化爲一個空對象

而這個對象 exports 不能被賦值或者重寫,那樣 exports 就再也不指向 module.exports

 

不過 module.exports 就沒有這個顧慮,能夠隨意的賦值重寫

在須要導出多個模塊的時候,還能夠這麼寫:

 

 exports 做爲 module.exports 的衍生產物,雖然能夠應對大多數狀況,但仍有不足之處

因此模塊導出的時候,建議使用  module.exports = *  這種方式來輸出

相關文章
相關標籤/搜索