模块化

作者: Zzzoecho | 来源:发表于2017-06-19 21:54 被阅读0次

为什么要使用模块化?

  • 解决命名冲突
  • 依赖管理
  • 模块的版本管理。通过别名等配置,配合构建工具,可以比较轻松地实现模块的版本管理。
  • 提高代码可维护性和可读性
  • 前端性能优化
  • 可以很方便实现模块的跨服务器和浏览器共享

CMD、AMD、CommonJS 规范分别指什么?有哪些应用

CommonJs

CommonJS是服务器端模块的规范,Node.js采用了这个规范并首先采用了js模块化的概念。
根据CommonJS规范,一个单独的文件就是一个模块。加载模块使用require方法,该方法读取一个文件并执行,最后返回文件内部的exports对象。

//add.js
exports.add = function(){...};

//calculate.js
var cc = require('add');
exports.add = function(n){
   return cc.add(val,n);
};

然而CommonJS规范并不适用于浏览器端,由于浏览器端的瓶颈在于带宽/网络,
如果客户端同步加载一个个文件,然后执行,那么就会出现假死情况
因此诞生了AMD,CMD,异步模块加载机制

CMD(Common Module Definition)

CMD是SeaJS 在推广过程中对模块定义的规范化产出
与AMD的不同在于, AMD推崇依赖前置会在一开始加载好所有需要的模块,而CMD则推崇依赖就近,当需要时才加载

//math.js
define(function(require, exports, module) {
  exports.add = function() {
    var sum = 0, i = 0, args = arguments, l = args.length;
    while (i < l) {
      sum += args[i++];
    }
    return sum;
  };
});

//increment.js
define(function(require, exports, module) {
  var add = require('math').add;  //需要用到math时加载模块
  exports.increment = function(val) {
    return add(val, 1);
  };
});
AMD (Asynchronous Module Definition, 异步模块定义)

AMD属于依赖前置,把项目中需要用到的依赖提前声明,等获取之后执行callback

//创建文件check_amd.js, 定义模块
define(['check'], function(){
    var flag = true;
    function check(){
        return flag;
    }
    return {
        check: check
    };
});

//在需要用到的页面加载模块
require(['check_amd'], function (check){
    if(check.check()){
        console.log("哈哈哈");
    }
});

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

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

预览链接
代码地址

相关文章

  • ES6学习笔记 II

    模块化 注意:模块化需要放到服务器环境使用模块化: 定义模块化如下 export export const a =...

  • 前端开发——模块化(css模块化开发)

    掌握模块化开发的思想是我们进行模块化开发的基础。他有以下几部分组成: 模块化开发的优势 css模块化 css模块化...

  • Node.js模块化学习

    模块化的基本概念Node.js 中模块化npm与包模块的加载机制 模块化的基本概念 什么是模块化 模块化是指解决一...

  • webpack基础笔记

    webpack基础 1.前端工程化 实际的前端开发: 模块化:(js的模块化,css的模块化,资源的模块化) 组件...

  • 模块化开发

    js模块化开发vue模块化开发

  • Vue前端工程化

    1.模块化的分类 A.浏览器端的模块化 B.服务器端的模块化 C.ES6模块化 小结:推荐使用ES6模块化,因为A...

  • 前端工程化

    1.模块化的分类 A.浏览器端的模块化 B.服务器端的模块化 C.ES6模块化 小结:推荐使用ES6模块化,因为A...

  • vue5

    es6新内容 class 解构赋值 扩展对象 模块化 什么是模块化 模块的作用 怎么实现模块化 模块化的标准 Co...

  • Vue基础教程之-组件核心概念(四)

    一、模块化 1.1 为什么需要模块化 没有模块化的世界:全局变量污染、难以管理的依赖。常见的模块化标准:Commo...

  • vue项目基建

    路由模块化 , 高频全局组件模块化 权限

网友评论

      本文标题:模块化

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