美文网首页程序员@IT·互联网
关于模块化(AMD_CMD_RequireJS)

关于模块化(AMD_CMD_RequireJS)

作者: 柏龙 | 来源:发表于2017-05-17 13:24 被阅读0次

为什么要使用模块化?

  • 解决命名冲突
  • 实现依赖管理
  • 模块的版本管理
  • 提高可维护性
  • 前端性能优化
  • 跨环境共享模块

AMD(Asynchronous Module Definition) 异步模块定义,AMD是采用异步方式加载模块,应用在require.js

/**
 * 书写方式 
 * require([module], callback);
 * 第一个参数[module],是一个数组,里面的成员就是要加载的模块;第二个参数callback,则是加载成功之后的回调函数。
 */
// 定义module.js
define(['dependencies'],function(){
    var name = 'Array';
    function printName(){console.log(name)}
    return {printName: pirintName}
})
// 加载模块
require(['module'],function(module){
    module.printName();
})

CMD(Common Module Definition) 通用模块定义,CMD是按需加载,应用在sea.js

/**
 * 书写方式 
 * define(factory);
 * factory 为函数时,表示是模块的构造方法。执行该构造方法,可以得到模块向外提供的接口。
 * factory 方法在执行时,默认会传入三个参数:require、exports 和 module
 * require是一个方法,接受模块标识作为唯一参数,用来获取其他模块提供的接口
 * exports是一个对象,用来想外提供模块接口
 * module是个对象,上面存储了与当前模块相关的属性和方法
 */
// 在a.js中使用模块
define(function(require, exports, module) {
    var $ = require('jquery.js');
    $.each = function(index, el) {
        // 实现代码
    };

});
// 在b.js中使用模块
defind(function(require, exports, module){
    var util = require('./util.js');
    exports.init = function() {
        // 实现代码
    };
})

Commonjs 是个模块化规范,将javascript语言用于服务器端编程,采用同步加载模块的方式。

/**
 * 一个单独的文件就是一个模块,每个模块都是一个单独的作用域,在模块内部定义的变量,无法被其他模块读取,除非定义为global对象的属性
 * 加载模块 加载模块使用require方法,该方法读取一个文件并执行,返回文件内部的module.exports对象,如果请求的模块不能返回,那么"require"必须抛出一个错误。
 * 模块输出 module.exports对象,需要把模块输出的内容放入该对象
 */

// 模块定义 model.js
var name = "jirengu";

function printName(){
    console.log(name);
}
function printFullName(firstName){
    console.log(firstName + name);
}
module.exports = {
    printName: printName;
    printFullName: printFullName
}

//加载模块
var nameModule = require("./model.js");
nameModule.printName();             // "jirengu"
nameModule.printFullName("Hello "); // "Hello jirengu"

使用 requirejs 完善任务,包括如下功能:

  1. 首屏大图为全屏轮播
  2. 有回到顶部功能
  3. 图片区使用瀑布流布局(图片高度不一),下部有加载更多按钮,点击加载更多会加载更多数据
  4. 使用 r.js 打包应用
    查看源代码
    预览效果

相关文章

  • 关于模块化(AMD_CMD_RequireJS)

    为什么要使用模块化? 解决命名冲突 实现依赖管理 模块的版本管理 提高可维护性 前端性能优化 跨环境共享模块 AM...

  • 代码模块化.AMD_CMD_RequireJS

    为什么要使用模块化? 模块化可以使代码低耦合,功能模块直接不相互影响。 1.可维护性:根据定义,每个模块都是独立的...

  • 关于Android的模块化开发

    关于模块化 关于模块化就不过多介绍了,感兴趣的可以看一下Android 模块化探索与实践和安居客 Android ...

  • es6总结

    1.模块化 /*关于模块化的了解 非模块化有以下缺点: 1.命名冲突 2.文件依赖 前端流行的模块化:AMD re...

  • 关于前端模块化开发

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

  • 模块化思想与最小可工作案例法

    1 模块化思想 长期以来,关于模块化思想,我们中国人已经听得耳朵生茧了吧。但问题却是我们中国人真的理解模块化思想了...

  • 关于JS模块化时循环加载的那些事儿

    关于JS模块化时循环加载的那些事儿 关于JS模块化的相关知识有很多,一些基本的知识平时都会有注意到,但是在实践中发...

  • 前端javascript模块化

    JavaScript js 模块化 关于js模块化的理解写法一 写法二 写法三 写发四(不推荐) 写发五 (错误写...

  • webpack打包基本使用

    关于模块化的好处什么、其他的如:AMD、CMD、CommonJS等模块化的介绍、规范这里就不多说了,直接就说现在流...

  • 关于模块化

    什么是模块化? 模块化可以更加清晰的将文件与文件之间的引用关系更好的配合.当文件与文件之间有很多引用关系时,我们不...

网友评论

    本文标题:关于模块化(AMD_CMD_RequireJS)

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