nodejs 使用 js 模塊

来源:https://www.cnblogs.com/weihanli/archive/2018/12/03/10057074.html
-Advertisement-
Play Games

nodejs 使用 js 模塊 Intro 最近需要用 nodejs 做一個爬蟲,Google 有一個 Puppeteer 的項目,可以用它來做爬蟲,有關 Puppeteer 的介紹網上也有很多,在這裡就不做詳細介紹了。 node 小白,開始的時候有點懵逼,模塊導出也不會。 官方文檔上說支持 .mj ...


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

希望你能有所收穫


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 聲明 本系列文章內容全部梳理自以下幾個來源: 《JavaScript權威指南》 "MDN web docs" "Github:smyhvae/web" "Github:goddyZhao/Translation/JavaScript" 作為一個前端小白,入門跟著這幾個來源學習,感謝作者的分享,在其基 ...
  • React Router是一個基於React之上的強大路由庫,可以讓你嚮應用中快速的添加視圖和數據流,同時保持頁面與URL間的同步。 1.安裝: 2.問題說明: 剛開始的時候由於沒有註意到版本信息,導致出現了一些錯誤,現在記錄如下: 這是我package.js中的版本信息, 說明1:react-ro ...
  • "前言" 繼上一次webpack的基礎配置分享之後,本次將分享一些工作中項目常用的配置插件、也會包含一些自己瞭解過覺得不錯的插件,如有分析不到位的,歡迎糾錯, 嗯,這些東西文檔都有,大佬可繞過 。 Wepack4之後廢棄了很多的插件,這裡只會講解webpack4還支持的( ),已經廢棄的將不再闡述。 ...
  • 初來乍到,算是一個博客園的新人,受了園裡許多前輩的啟發正在一點點定製自己的小空間。 也希望我的文章能夠成為大家DIY的啟發,就算是拋磚引玉了。效果可以直接在我的博客中看到,所以不另外貼圖了。 引入js文件與css文件 引入js文件需要先申請js許可權,語言誠懇一點幾個小時(?)就可以拿到許可權了。 引入 ...
  • 上一篇寫的是左右寬高固定,中間自適應,根據上一篇的內容,總結了下上下寬高固定,中間自適應的幾種佈局方式,話不多說,直接上代碼。 下邊圖片是代碼運行的效果圖,大家可以運行代碼試試看。 自己總結的,有不對的地方歡迎大家指正! ...
  • 最近在開發一個網站時,有個需要是 如果有新預警信息要在網頁中播放提示音。頁面打開會請求是否有新信息,有則播放提示音。在Chrome的最新瀏覽器中,播放會報錯,控制台顯示Uncaught (in promise) DOMException: play() failed because the user ...
  • 事件的觸發權很多時候都屬於用戶,有些情況下會產生問題: 向後臺發送數據,用戶頻繁觸發,對伺服器造成壓力 一些瀏覽器事件:window.onresize、window.mousemove等,觸發的頻率非常高,會造成瀏覽器性能問題 如果你碰到這些問題,那就需要用到函數節流和防抖了。 一、函數節流(thr ...
  • 項目代碼 "從零開始簡書項目" ​ 從我第一次接觸 這個框架已經過了快一年的時間,陪伴我從前端小白到前端工程師,前端時間也是使用了 +`vue vue`這一塊,也算是比較熟練了,對底層也有一些瞭解,我開始了react的產生了一些興趣 ​ 第一次看 慕課網上的一個免費課程 "React 16實現訂單列 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...