zoukankan      html  css  js  c++  java
  • node.js 16 模块系统

    本文参考原文-http://bjbsair.com/2020-03-22/tech-info/2817.html

    const http = require('http')
    

    在node.js中,一个应用程序由若干模块组成,而这些模块,我们可以理解为是一个JavaScript文件,以.js结尾的文件。

    原生模块

    对于上述的'http'是原生模块,在node.js安装后是系统自带的。使用模块时只需要通过 require 进行引入即可。

    在这段代码中,使用require函数来引用http模块,该函数返回http模块,将该对象赋值给http之后即可以通过http来访问http模块中的属性及方法。

    const http = require('http')

    http.createServer(function (request, response) {

    //回调函数内容

    }

    块又称之为核心模块,常用的核心模块如下:

    • assert 断言处理
    • buffer 缓冲数据的存储与转换
    • child_process 子进程的创建与管理
    • cluster 多进程
    • console 控制台
    • debugger 内置调试器
    • dns DNS相关
    • events 事件处理
    • http HTTP服务器端及客户端
    • https HTTPS服务器端及客户端
    • net TCP服务端及客户端
    • os 操作系统信息
    • path 文件路释
    • querystrmg 处理HTTP请求中使用的查洵字符串
    • repl 实现REPL(Read-Eval-Print-Loop)
    • zlib 通过zlib类库来实现数据的压缩及解压处理

    自定义模块的导入

    在实际工作中,仅仅使用原生模块是不够的,我们需要使用自己团队定义的其他模块,也就是.js文件。那么如何进行使用?

    跟使用原生模块一样,也通过require函数,不同的是,需要写名模块文件的路径。

    const circle = require('./circle.js');
    

    示例中的circle.js文件就是一个自定义模块文件。实际工作中,往往会在根目录下建立node_modules目录,把不同模块按照业务规则建立对应目录。

    exports导出模块

    一个模块中的变量和方法只能用于当前模块。如果希望被其他模块使用,就需要通过exports来导出该模块的对象,方法,属性

    接下来我们看一下circle.js的内容

    const PI = 3.14;  
    exports.area = (r) => PI * r ** 2;  
    exports.circumference = (r) => 2 * PI * r;  
    exports.PI = PI;
    

    上例中我们可以看到这是一个计算圆面积和周长的模块。在模块中使用了exports导出了

    • 两个方法,area(r) 和 circumference(r)
    • 一个属性,PI

    那么回到我们原先的代码中,由于我们引入了circle.js,只需要写出如下代码就可以进行调用circle.area(r)这个方法。

    const circle = require('./circle.js');  
    console.log(`半径为4的园面积:  ${circle.area(4)}`);  
    console.log(`PI =  ${circle.PI}`);
    

    将源文件保存为appCircle.js,运行appCircle.js后得到下列结果

    D:Projects odejsNodeDemo>node appCircle.js

    半径为4的园面积: 50.24

    PI = 3.14

    将模块定义为类并导出

    上面的例子我们看到了导出模块的属性和方法。那么从面向对象的角度,我们是否可以将模块定义为类并导出。下面就是一个示例保存在square.js中。

    module.exports = class Square {  
      constructor(width) {  
        this.width = width;  
      }  
      
      area() {  
        return this.width ** 2;  
      }  
    };
    

    示例中,可以直接使用"module.exports" 来导出类。导出的类名为Square,是用来计算平方数的。该类的构建器通过width构建,使用方法为area(),返回平方数。

    调用的时候我们只需要引入类,然后直接调用area()方法即可。

    const Square = require('./square.js'); //引入类  
    const mySquare = new Square(2); //构建Square类  
    console.log(`平方数: ${mySquare.area()}`); //调用类方法  
    
    

    输出结果:

    D:Projects odejsNodeDemo>node appSquare.js

    平方数: 4

    node.js模块的介绍就到这里。

  • 相关阅读:
    AS将一个项目导入到另一个项目中
    Android Studio出现:Cause: unable to find valid certification path to requested target
    小米手机Toast带app名称
    PopupWindow 点击外部区域无法关闭的问题
    EditText inputType类型整理
    Fragment通过接口回调向父Activity传值
    Android selector一些坑
    Installation failed with message Failed to commit install session 634765663 with command cmd package
    旷视上海研究院机器人方向招聘
    语义SLAM的数据关联和语义定位(四)多目标测量概率模型
  • 原文地址:https://www.cnblogs.com/lihanlin/p/12562481.html
Copyright © 2011-2022 走看看