目 录CONTENT

文章目录

CommonJS

Administrator
2024-05-26 / 0 评论 / 0 点赞 / 37 阅读 / 0 字 / 正在检测是否收录...

出现时间: 2009年

背景: 在Node.js诞生之前,JavaScript主要作为浏览器端的脚本语言存在,缺乏模块化的概念。随着Node.js的兴起,服务器端JavaScript开发逐渐流行,但JavaScript的规范远远落后且存在诸多缺陷,如缺乏模块系统、标准库较少等。为了弥补这些缺陷,Mozilla的工程师Kevin Dangoor在2009年提出了CommonJS规范,旨在构建更好的JavaScript生态系统,包括服务器端和浏览器端。

简要概述

CommonJS规范定义了服务器端JavaScript的模块化机制,使用require和module.exports来导入和导出模块。它主要针对服务端开发,支持同步加载模块。

特点

为服务器端JavaScript提供了一个基本的模块系统。它允许你定义模块、导出模块的API以及在其他模块中导入这些API。CommonJS规范的核心思想是每个文件都是一个模块,有自己的作用域。模块可以多次加载,但是只会在第一次加载时运行一次,然后运行结果就被缓存了,以后再加载,就直接读取缓存结果。

  • 同步加载模块,模块输出的是一个值的拷贝,而不是引用。
  • 简单易用,可以在服务器端和客户端使用(但在浏览器端需要转换)。

优点

  • 简单易用,代码可复用于Node.js环境下。
  • 通过Npm发布的很多第三方模块都采用了CommonJS规范。

缺点

  • 不能异步加载模块,因此在浏览器端使用时需要使用打包工具进行转换。
  • 同步加载可能导致浏览器端性能问题。

例子

  1. 假设我们有一个名为 mathFunctions.js 的模块,它定义了一些数学函数:
// mathFunctions.js  
  
// 定义一个加法函数  
function add(x, y) {  
    return x + y;  
}  
  
// 定义一个减法函数  
function subtract(x, y) {  
    return x - y;  
}  
  
// 导出这两个函数  
module.exports.add = add;  
module.exports.subtract = subtract;
  1. 然后,在另一个文件中,我们可以使用require函数来导入并使用这个模块:
// main.js  
  
// 导入mathFunctions模块  
const mathFunctions = require('./mathFunctions');  
  
// 使用mathFunctions模块中的函数  
console.log(mathFunctions.add(2, 3)); // 输出:5  
console.log(mathFunctions.subtract(5, 2)); // 输出:3
0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin
Traffmonetizer VPS 回血赚取额外收益

评论区