美文网首页
模块化开发之CommonJS规范

模块化开发之CommonJS规范

作者: 这里王工头 | 来源:发表于2019-02-01 12:46 被阅读0次

欢迎访问我的博客https://qqqww.com/,祝码农同胞们早日走上人生巅峰,迎娶白富美~~~

@TOC

1 前言

随着网站开发的复杂度越来越高,不管是前台还是后台的js文件都越来越多,就出现了几个问题:

  1. 变量命名冲突
  2. 文件依赖复杂度增高
  3. 页面载入过多依赖傻傻分不清,不利于维护

NodeJS 模块化开发解决以上问题妥妥的,NodeJs模块化开发遵循CommonJS规范

2 CommonJS

模块化最初产生于服务端,并引申到客户端,CommonJSNode推广并主要用于服务器

2.1 定义模块

  1. CommonJS规范中,一个单独的JS文件就是一个模块
  2. 每个模块都是一个单独的作用域,也就是说,在该模块内部定义的变量,无法被其他模块读取,除非定义为global对象的属性

2.2 模块导出和载入

模块导出exportsmodule.exports

模块载入require

  1. Node 中,每个模块内部都有一个自己的 module 对象

  2. module 对象中,有一个成员叫:exports 也是一个对象

  3. 通过exports对象导出当前方法或者变量,也可以通过module.exports导出

  4. Node 为了简化程序员的操作,专门提供了一个变量:exports 等于 module.exports,相当于在模块中还有这么一句代码var exports = module.exports

  5. 所以,语法

    1. 导出多个成员exports.xxx = xxx 或者 module.exports = { }
    2. 到处单个成员module.exports
  6. 下面是模拟一个模块的导出

// math.js 该模块专门处理计算方面的操作 ,从该模块导出

// 1. 如果一个模块需要直接导出某个成员,而非挂载的方式
module.exports = 'hello'

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

// 2. 将上述两次导出合成一次的写法
module.exports = {
    add: function (x, y) {
        return x + y
    }, 
    str: 'hello'
}
  1. 下面是模拟一个模块的载入以及require加载顺序
    1. 首先我们先去创建几个模块用来做模拟a.jsb.jsmain.js
    2. 写上一些简单的代码
// a.js
console.log('a.js 被加载了')
var fn = require('./b')

console.log(fn)
// b.js
console.log('b.js 被加载了')

module.exports = function () {
  console.log('hello bbb')
}
require('./a')

var fn = require('./b')

console.log(fn)

分析与结论

  1. 我们看上面三个模块中的代码,他们在后续的程序处理过程中可能会产生依赖,但是在没有加载之前,他们是相互独立的,互不影响
  2. require优先从缓存中加载
  3. 看上面的代码,在main.js中提前加载了a.js,同时在a.jsmain.js中加载b.js,由于a.js已经加载过b.js了,所以在main.js加载b.js的时候只是能拿到借口对象,但是不会重复执行里面的代码,这样做的好处是避免了重复加载,提高模块效率
  4. .js文件后缀可以省略

3 文章推荐

相关文章

  • 模块化开发

    一提到模块化开发,就会提到 CommonJS 规范和AMD规范,这些都是模块化的依据规范, RequireJS 就...

  • 关于前端模块化开发

    关于前端模块化开发 1 前端中有哪些模块化开发的规范以及实现方案 2 模块化的开发的好处 3 CommonJS

  • 前端模块化开发

    前端模块化开发 常见的三大模块化框架。 CommonJS: 1.根据CommonJS规范,一个单独的文件就是一个模...

  • Js 模块

    AMD,CMD,CommonJS是目前最常用的三种模块化书写规范。 CommonJS CommonJS规范是诞生比...

  • JS模块化

    模块化规范:CommonJS,AMD,CMD,UMD,ES6 Module CommonJS CommonJS是服...

  • 模块化开发之CommonJS规范

    欢迎访问我的博客https://qqqww.com/,祝码农同胞们早日走上人生巅峰,迎娶白富美~~~ @TOC 1...

  • 前端工程化的一些理解

    一、模块化 主要是js模块化,可以使用CommonJS、AMD、CMD等模块化规范,其中的区别是CommonJS对...

  • webpack基础

    模块化 CommonJS CommonJS是一种使用广泛的 JavaScript模块化规范,核心思想是通过 req...

  • Webpack原理-从前端模块化开始

    当前主流 JS 模块化方案 CommonJS 规范,nodejs 实现的规范 AMD 规范,requirejs 实...

  • js模块化

    首先梳理一下模块化的发展情况~ 无模块化-->CommonJS规范-->AMD规范-->CMD规范-->ES6模块...

网友评论

      本文标题:模块化开发之CommonJS规范

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