1. 程式人生 > >nodejs 使用 js 模組

nodejs 使用 js 模組

nodejs 使用 js 模組

Intro

最近需要用 nodejs 做一個爬蟲,Google 有一個 Puppeteer 的專案,可以用它來做爬蟲,有關 Puppeteer 的介紹網上也有很多,在這裡就不做詳細介紹了。 node 小白,開始的時候有點懵逼,模組匯出也不會。

官方文件上說支援 *.mjs 但是還要改副檔名,感覺有點怪怪的,就沒用,主要是基於js的模組使用。

模組匯出的兩種方式

因為對 C# 比較熟悉,從我對 C# 的理解中,將 nodejs 中模組匯出分成兩種形式:

  1. 一個要例項化才能呼叫的模組
  2. 一個不需要例項化就可以呼叫的靜態類,提供一些靜態方法
  • 匯出一個要例項化的類

    module.exports = exports = function (){ };

    module.exports = exports = function() {
    
      this.syncCompanyList = async function(developerName){
          await syncCompanyInfo(developerName);
      };
    
      async function syncCompanyInfo(developerName){
          // ...
      }
    }
  • 匯出一個靜態類

    exports.funcName = function (){};

    
    var getDistrictCode = function (districtName) {
        if (districtName) {
            for (let i= 0; i< DistrictInfo.length; i++) {
                let district = DistrictInfo[i];
                if (district["name"] == districtName || district["aliasName"] == districtName) {
                    return district["code"];
                }
            }
        }
        return "";
    };
    
    var getNormalDistrictName = function (districtName) {
        if (districtName) {
            if (districtName.indexOf('區') > 0) {
                return districtName;
            }
            for (let i= 0; i< DistrictInfo.length; i++) {
                let district = DistrictInfo[i];
                if (district["name"] == districtName || district["aliasName"] == districtName) {
                    return district["name"];
                }
            }
        }
        return "";
    }
    
    // 設定匯出的方法及屬性
    exports.getDistrictCode = getDistrictCode;
    exports.getNormalDistrictName = getNormalDistrictName;

引用匯出的模組方法

在 node 裡使用 require 來引用模組

  • 引用 npm 包

    const log4js = require("log4js");
  • 引用自己編寫的模組

    const districtUtil = require("./utils/districtUtil");

使用匯出的模組

要使用某一模組,需要先引用某一模組,引用模組可以參考上一步

  • 例項類

    const company = require("./company");
    // ...
    // 例項化一個 company 物件
    var comp = new company();
    // 呼叫 company 裡的 syncCompanyList 
    comp.syncCompanyList ();
  • 靜態類

    const districtUtil = require("./utils/districtUtil");
    // ...
    // 呼叫 districtUtil 裡的 getDistrictCode
    let districtNme = districtUtil.getDistrictCode('districtName');

End

希望你能有所收穫