2016年4月20日 星期三

Node.js-使用外部Module

Tool:Visual Studio 2015 Enterprise Update 1、Node.js Tools 1.1.1 for Visual Studio 2015
OS:Windows 10
Node.js、JavaScript

Q:如何使用外部Module檔案中的程式碼?

A: 建立一個新Blank Node.js Console Application測試,在主程式app.js檔案中加入:

function StringDemo(str) {
   
    this.concat = function (s) {
        str = str + s;
        return this;
    }
   
    this.toUpperCase = function () {
        str = str.toUpperCase();
        return this;
    }
   
   
    this.getResult = function (callback) {
        callback(str);
        return this;
    }
    return this;
}

new StringDemo("a")
  .concat("b")
  .concat("c")
  .concat("d")
  .toUpperCase()
  .getResult(function (result) {
    console.log(result);
});

按F5,會印出執行結果 :ABCD

若在專案中加入一個StringDemo.js檔案,將StringDemo的定義移到此檔案中:

function StringDemo(str) {
   
    this.concat = function (s) {
        str = str + s;
        return this;
    }
   
    this.toUpperCase = function () {
        str = str.toUpperCase();
        return this;
    }
   
   
    this.getResult = function (callback) {
        callback(str);
        return this;
    }
    return this;
}

若在起始的app.js檔案,想要使用這個建構函式,使用以下程式碼:

new StringDemo("a")
  .concat("b")
  .concat("c")
  .concat("d")
  .toUpperCase()
  .getResult(function (result) {
    console.log(result);
});

想當然,當執行此程式時,會出現找不到StringDemo的錯誤訊息:

image

若要叫用外部module的程式碼,可以將StringDemo.js檔案程式修改如下,在檔案最後匯出module:

function StringDemo(str) {
   
    this.concat = function (s) {
        str = str + s;
        return this;
    }
   
    this.toUpperCase = function () {
        str = str.toUpperCase();
        return this;
    }
   
   
    this.getResult = function (callback) {
        callback(str);
        return this;
    }
    return this;
}
module.exports = StringDemo;

然後在app.js檔案中,叫用require方法匯入module

var StringDemo = require('./StringDemo.js')

new StringDemo("a")
  .concat("b")
  .concat("c")
  .concat("d")
  .toUpperCase()
  .getResult(function (result) {
    console.log(result);
});

這樣就可以呼叫到StringDemo,執行結果參考:

image

沒有留言:

總網頁瀏覽量