nodejs 使用 js 模块

Intro

最近需要用 nodejs 做一个爬虫,Google 有一个 Puppeteer 的项目,可以用它来做爬虫,有关 Puppeteer 的介绍网上也有很多,在这里就不做详细介绍了。 node 小白,开始的时候有点懵逼,模块导出也不会。

官方文档上说支持 *.mjs 但是还要改文件扩展名,感觉有点怪怪的,就没用,主要是基于js的模块使用。

模块导出的两种方式

因为对 C# 比较熟悉,从我对 C# 的理解中,将 nodejs 中模块导出分成两种形式:

  1. 一个要实例化才能调用的模块
  2. 一个不需要实例化就可以调用的静态类,提供一些静态方法
  • 导出一个要实例化的类

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

    1. module.exports = exports = function() {
    2. this.syncCompanyList = async function(developerName){
    3. await syncCompanyInfo(developerName);
    4. };
    5. async function syncCompanyInfo(developerName){
    6. // ...
    7. }
    8. }
  • 导出一个静态类

    exports.funcName = function (){};


    1. var getDistrictCode = function (districtName) {
    2. if (districtName) {
    3. for (let i= 0; i< DistrictInfo.length; i++) {
    4. let district = DistrictInfo[i];
    5. if (district["name"] == districtName || district["aliasName"] == districtName) {
    6. return district["code"];
    7. }
    8. }
    9. }
    10. return "";
    11. };
    12. var getNormalDistrictName = function (districtName) {
    13. if (districtName) {
    14. if (districtName.indexOf('区') > 0) {
    15. return districtName;
    16. }
    17. for (let i= 0; i< DistrictInfo.length; i++) {
    18. let district = DistrictInfo[i];
    19. if (district["name"] == districtName || district["aliasName"] == districtName) {
    20. return district["name"];
    21. }
    22. }
    23. }
    24. return "";
    25. }
    26. // 设置导出的方法及属性
    27. exports.getDistrictCode = getDistrictCode;
    28. exports.getNormalDistrictName = getNormalDistrictName;

引用导出的模块方法

在 node 里使用 require 来引用模块

  • 引用 npm 包

    1. const log4js = require("log4js");
  • 引用自己编写的模块

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

使用导出的模块

要使用某一模块,需要先引用某一模块,引用模块可以参考上一步

  • 实例类

    1. const company = require("./company");
    2. // ...
    3. // 实例化一个 company 对象
    4. var comp = new company();
    5. // 调用 company 里的 syncCompanyList
    6. comp.syncCompanyList ();
  • 静态类

    1. const districtUtil = require("./utils/districtUtil");
    2. // ...
    3. // 调用 districtUtil 里的 getDistrictCode
    4. let districtNme = districtUtil.getDistrictCode('districtName');

End

希望你能有所收获

nodejs 使用 js 模块的更多相关文章

  1. nodejs js模块加载

    本文地址:http://www.cnblogs.com/jasonxuli/p/4381747.html nodejs的非核心模块(core module)加载主要使用的就是module.js. 项目 ...

  2. node.js零基础详细教程(7.5):mongo可视化工具webstorm插件、nodejs自动重启模块Node Supervisor(修改nodejs后不用再手动命令行启动服务了)

    第七章 建议学习时间4小时  课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑. ...

  3. Node.js学习笔记(二) --- CommonJs和Nodejs 中自定义模块

    一. 什么是 CommonJs? JavaScript 是一个强大面向对象语言,它有很多快速高效的解释器. 然而, JavaScript标准定义的 API 是为了构建基于浏览器的应用程序.并没有制定一 ...

  4. Nodejs:Node.js模块机制小结

    今天读了<深入浅出Nodejs>的第二章:模块机制.现在做一个简单的小结. 序:模块机制大致从这几个部分来讲:JS模块机制的由来.CommonJS AMD CMD.Node模块机制和包和n ...

  5. 大熊君大话NodeJS之------Net模块

    一,开篇分析 从今天开始,我们来深入具体的模块学习,这篇文章是这个系列(大熊君大话NodeJS)文章的第三篇,前两篇主要是以理论为主,相信大家在前两篇的学习中, 对NodeJS也有一个基本的认识,没事 ...

  6. 关于Nodejs的多进程模块Cluster

    关于Nodejs的多进程模块Cluster   前述 我们都知道nodejs最大的特点就是单进程.无阻塞运行,并且是异步事件驱动的.Nodejs的这些特性能够很好的解决一些问题,例如在服务器开发中,并 ...

  7. nodejs的require模块及路径

    在nodejs中,模块大概可以分为核心模块和文件模块. 核心模块是被编译成二进制代码,引用的时候只需require表示符即可,如(require('net')). 文件模块,则是指js文件.json文 ...

  8. 使用nodejs的http模块创建web服务器

    使用nodejs的http模块创建web服务器 laiqun@msn.cn Contents 1. web服务器基础知识 2. Node.js的Web 服务器 3. 代码实现 1. web服务器基础知 ...

  9. 【 js 模块加载 】深入学习模块化加载(node.js 模块源码)

    一.模块规范 说到模块化加载,就不得先说一说模块规范.模块规范是用来约束每个模块,让其必须按照一定的格式编写.AMD,CMD,CommonJS 是目前最常用的三种模块化书写规范.  1.AMD(Asy ...

随机推荐

  1. [Swift]LeetCode112. 路径总和 | Path Sum

    Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all ...

  2. [Swift]LeetCode274.H指数 | H-Index

    Given an array of citations (each citation is a non-negative integer) of a researcher, write a funct ...

  3. [Swift]LeetCode813. 最大平均值和的分组 | Largest Sum of Averages

    We partition a row of numbers A into at most K adjacent (non-empty) groups, then our score is the su ...

  4. 非对称加密技术中,iFace [ 爱妃链 ]人脸密钥技术排名第三,将弥补区块链现有不足

    最近,区块链领域,出现了一个比较热门技术的讨论,人脸密钥技术,可能大家还对这个名词感到很陌生,但是熟悉加密技术的技术大牛可能一听就能够明白大体的意思了,但是也正是这一熟悉而陌生的技术名词,掀起了区块链 ...

  5. Ubuntu12.04下安装NS3.25

    实验室项目的需求,要使用到NS3做仿真,使用实验室的电脑,Ubuntu12.04,版本比较低,建议大家使用16.04,这样安装依赖文件时不会出现版本过低的问题 (没管最后也安装成功了).下面就安装步骤 ...

  6. SpringBoot配置 druid 数据源配置 慢SQL记录

    spring: datasource: url: jdbc:mysql://127.0.0.12:3306/test?autoReconnect=true&useUnicode=true&am ...

  7. Linux中断程序命令

    在运行 python 脚本的时候想要中断程序,发现如下情况: ctrl+c 居然无法中断程序! 这时候尝试 ctrl+d 还是毫无效果,最后尝试 ctrl+\: 查看该程序是否还在运行 ps aux ...

  8. 【Spark篇】---Spark中Master-HA和historyServer的搭建和应用

    一.前述 本节讲述Spark Master的HA的搭建,为的是防止单点故障. Spark-UI 的使用介绍,可以更好的监控Spark应用程序的执行. 二.具体细节 1.Master HA 1.Mast ...

  9. android 工具库

    https://github.com/xybCoder/AndroidCommon android工具类集合

  10. BBS论坛(四)

    4.1.cms登录页面csrf保护 (1)Perfect_bbs.py from flask_wtf import CSRFProtect CSRFProtect(app) 添加csrf保护后,现在再 ...