JS模块化的几种规范

一个模块是能实现特定功能的文件,有了模块就可以方便的使用别人的代码,想要什么功能加载什么模块


common JS 模块化

开始于服务端的模块化, 同步定义的模块化,每个模块都有一个单独的作用域。

模块输出

const xxx = require(xxx)
// 第三方模块: 参数为模块名(包名)
// 自定义模块 参数为路径

模块引入

// 方式一
exports.xxx = any
// 方式二
module.exports = any

浏览器打包工具 browserify

commonJS的优缺点

  • 优点
    • 服务点模块重用
    • NPM中模块丰富
  • 缺点
    • 加载模块是同步(阻塞加载)的,只有加载完成后才能执行后面的操作

AMD模块化

鉴于浏览器的特殊情况,AMD模块化可以实现异步加载依赖模块,专用于浏览器端

模块输入

// 没有依赖的模块
define(function(){return 模块})
// 定义有依赖的模块
define(['module','module1'],function(m1,m2){
    return 模块
})

模块引入

require(['module','module'],function(m1,m2){})

文件配置

require.fonction({
    paths:{
        模块名:"模块路径"
    }
})

打包工具 Require.js

AMD的优缺点

  • 优点
    • 在浏览器环境中异步加载模块
    • 并行加载多了模块
  • 缺点
    • 开发成本高,代码的阅读和书写比较困难
    • 模块定义方式的语义不通顺
    • 不符合通用的模块化思维方式

CMD

CMD规范和 AMD 很相似,尽量保持简单,并与 CommonJS 和 Node.js 的 Modules 规范保持了很大的兼容性。

模块输出

// 定义模块
define(function(require,export,module){
    // 引入依赖(同步)
    var xxx = require("依赖模块路径")
    // 引入依赖(异步)
    require.async("路径",function(m3){})
    exports.xxx = value
})

模块引入

define(function(require){
    var m1 = require('模块路径')
    var m2 = require("路径")
    m1()
    m2()
})

打包工具 sea.js

CMD的优缺点

  • 优点
    • 依赖就近,延迟执行 可以很容易在Node.js中运行
  • 缺点
    • 依赖SPM打包,模块的加载逻辑偏重

ES6模块规范

在ES6之前, JS没有提供官方的模块化, CommonJs 和 AMD 两种模块化规范较为活跃, 前者用于服务端,后者用于浏览器. ES6 在语言标准的层面上,实现了模块功能,而且实现得相当简单,完全可以取代 CommonJS 和 AMD 规范,成为浏览器和服务器通用的模块解决方案。

模块输出

// 方式一 统一输出
function a (){}
function b (){}
export {a,b}
// 方式二 逐个输出
export function xxx(){}
export var a = []
// 方式三 默认暴露
export default value

模块引入

// 方式一和方式二 引入方式
import {a , b} from "路径"
​
// 方式三 引入方式
import xxx from "路径"
​
// 第三方引入
import $ from "jquery"

打包工具

Babel 将 ES6 编译成 ES5
或者
Browserify 编译打包

评论

  1. 刘如意
    4 年前
    2021-7-13 15:13:16

    试下评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇