美文网首页
Node 中的模块系统

Node 中的模块系统

作者: 輪徊傷 | 来源:发表于2021-08-23 22:21 被阅读0次

使用 Node 编写应用程序主要是使用

  • EcmaScript 语言(和游览器中不一样,在 Node 中没有 BOM、DOM)
  • 核心模块
    • 文件操作的 fs
    • http 服务的 http
    • url 路径操作模块
    • path 路径处理模块
    • os 操作系统信息
  • 第三方模块(必须通过npm下载才可以使用)
    • art-template
  • 自己系的模块
    • 自己写的文件

什么是模块化

  • 文件作用域
  • 通信规则
    • 加载 require
    • 导出

CommonJS 模块规范

Commonjs是前端模块化的一种规范,同步加载模块,主要使用于服务器端模块化开发,目前使用该规范的有nodejs
AMD:是由commonjs衍生出来的用在浏览器端的异步模块加载规范,实现该规范的技术有require.js
CMD:同步模块加载规范,实现该规范的技术有sea.js

在 Node 中的 JavaScript 还有一个很重要的概念,模块系统

  • 在 Node 中只有模块作用域 (外部访问不到内部,内部也访问不到外部)
  • 使用 require 方法来加载模块
  • 使用 exports 接口对象来导出模块中的成员

导出 exports

  • Node 中是模块作用域,默认文件中的所有成员只在当前文件模块有效
  • 如果希望文件模块内的成员能被其他模块访问,我们需要把公开的成员都挂载到 exports 接口对象上就可以了
    导出多个成员(拿到的导出值在 exports 对象中)
exports.foo = "LBipanda"
exports.obj = {
  name: "LB",
  age: 15
}
var height = 175
exports.height = height

exports.add = function(x,y){
    return x + y
}

导出单个成员(拿到的导出值是:函数、字符串......)

module.exports = "heelo"

以这个为准,后者覆盖前者
module.exports =  function(x,y){
    return x + y
}

也可以这样来到出多个成员

module.exports = {
    add: function(x,y){
        return x + y
    },
    name: "LBipanda"
}

原理解析

exports 是 module.exports 的一个引用

console.log(exports === module.exports) // =>  true
exports.foo = 'bar'
等价于
module.exports.foo = 'bar'

加载 require

require 方法加载规则

  • 核心模块
    • 模块名
  • 第三方模块
    • 模块名
  • 用户自己写的
    • 路径
      语法
var 自定义名称 = require("需要加载的模块名")

require 优先从缓存加载
所以这里不会重新加载,但是可以拿到其中的接口对象
这样做的目的是为了避免重复加载,提高加载效率(可以在 node => 03 => require加载规则 文件中查看)

相关文章

  • Node.js教程(02)|基础知识篇(下)

    Node.js 模块系统 模块系统,便于各个文件之间的相互调用。在node.js中,模块就是文件,文件也是模块,这...

  • 无标题文章

    node模块与包管理 在Node中,使用的是Commonjs模块标准,commonjs模块系统是文件之间共享对象或...

  • node中的核心模块

    node的模块有很多,但常用的只有几个核心模块,例如fs文件系统模块,path模块,http模块等。node中的J...

  • 01-Node 基础使用

    Node 基础使用Node 介绍Node 模块化开发模块成员的导出模块成员的导入Node 系统模块 path 和 ...

  • Nodejs的模块引入与回调函数

    Node.js模块系统 在 Node.js 中,引入一个模块 如: var http=require('fs');...

  • Node 中的模块系统

    使用 Node 编写应用程序主要是使用 EcmaScript 语言(和游览器中不一样,在 Node 中没有 BOM...

  • node中的模块系统

    1.http:搭建后台服务器 fs 文件操作模块 读取文件 写文件 fs模板结合http模板请求不同文件

  • 4_Node模块系统

    [TOC] Node.js模块系统 为了让Node的文件可以相互调用,Node提供了一个简单的模块系统模块是Nod...

  • Node学习(6)--模块系统

    Node.js模块系统 为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统。模块是No...

  • node.js(十一)

    Node.js模块系统为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统。模块是Nod...

网友评论

      本文标题:Node 中的模块系统

      本文链接:https://www.haomeiwen.com/subject/ueqmyktx.html