[MAN鐵人賽]Day 17:NodeJS - Require & Module

摘要:[MAN鐵人賽]Day 17:NodeJS - Require & Module

h2>前言

簡單介紹了NodeJS,接著要來介紹他的兩個重要的內容Require與Module,要寫出模組化的程式讓模組間的耦合力降低與模組內的內聚力(Cohesion and)提升,就必須把程式切分的清楚與乾淨。NodeJS遵照 CommonJS 的慣例, 用 require 以及 exports 來作檔案和模組之間的溝通。

CommonJS

由於JavaScript原生缺少一些功能:

  • 没有模組系统。没有原生的支持封閉作用區塊或相互依赖的管理作用範圍區。
  • 没有標準API檔案库概念。除了一些核心檔案庫外,没有文件系统的API,没有IO處理的API等。
  • 没有標準的接口。如Web Server或者資料库沒有统一接口。
  • 没有打包管理的系统概念。不能自動载入和安装依賴(參考)。

基於上述原因为了建造屬於JavaScript並使用於包括Web服务器,桌面,命令指令工具,與網頁瀏覽器方面的使用情境,於是便有了CommonJS的出现,CommonJS制定了解决这些问题的一些规范。

而NodeJS遵照 CommonJS 的慣例, 用 require 以及 exports 來作檔案和模組之間的溝通。

Require & Module

要建議一個新的模組(Module)非常簡單,這邊我們將昨天的helloworld改成模組的功能,首先先建立一個say.js的檔案並輸入以下內容

var defaultWords = "大家好,我是一個say模組產生出來的";
exports.say = function (words) {
if(typeof(words)==='undefinded'||words!=null){
    return words;   
}else{
return defaultWords;
}
};

接著我們打開原本的helloworld.js並修改為以下內容

var http = require('http'),
SayModule = require('./say.js');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end(SayModule.say()+'\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');

然後我們在透過terminal執行下面指令讓網站起來

node helloworld.js

而這就是我們所看到的畫面了

參考好文

結語

學會NodeJS中兩個重要的元素Require & Module,目前你已經可以開發一些複雜的後台服務了,而之後介紹的NPM套件管理工具則會讓你更加喜歡上NodeJS這個迷人的小玩意,Day-17 over!


如果覺得文章還不錯麻煩請在文章最上面給予推薦,你的支持是小弟繼續努力產出的動力!