前端开发中常见模块规范

commonjs 规范

主要是正像服务端(后端)的模块规范,尤其是在nodejs发展起来后得到快速发展。

事例1:

//file a moduleA
//模块通过module.exports导出对外的变量或接口
module.exports = function( value ){
    return value * 2;
}
//-------- 分割线 ----
//fileb
//通过 require() 来导入其他模块的输出到当前模块作用域中
var fs = require('fs');
// ea6 语法
import fs from 'fs'; 
//using
fs.readFile('/path/file_a.js', (err, data) => {
  if (err) throw err;
  console.log(data);
});

AMD规范

常见与requirejs中,特点:声明加载前置,能很好的表明加载间的依赖关系,也有很好的包装特性。
缺点是在项目中资源前置加载导致阻塞加载引起的页面加载缓慢问题。

define(id?: String, dependencies?: String[], factory: Function|Object);
//定义
define('myModule', ['jquery'], function($) {
    // $ 是 jquery 模块的输出
    $('body').text('hello world');
});
// 使用
define(['myModule'], function(myModule) {});

CMD规范

常见与seajs中,由阿里玉伯推动。特点,也就是常说的懒加载,就近声明就近加载。

// define(function(require, exports, module) {})

//CMD
define(function (requie, exports, module) {
    //依赖可以就近书写
    var a = require('./a');
    a.test();
    ...
    //软依赖,根据条件加载
    if (status) {
        var b = requie('./b');
        b.test();
    }
});

UMD 规范

为了兼容以上规范,一些常见的js库使用这种规范,如:jQuery/Zepto/Underscore等

(function (window, factory) {
    if (typeof exports === 'object') {

        module.exports = factory();
    } else if (typeof define === 'function' && define.amd) {

        define(factory);
    } else {

        window.eventUtil = factory();
    }
})(this, function () {
    //module ...
});

参考:
CommonJS规范
AMD, CMD, CommonJS和UMD —- 我是豆腐不是渣

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值