AMD和CMD

作者: sunny519111 | 来源:发表于2017-07-13 09:30 被阅读23次

题目1: 为什么要使用模块化?

1. 解决命名冲突
2. 依赖管理
3. 可以提高代码的可读性
4. 提高代码的复用性
5. 避免污染全局变量

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

- **AMD(异步模块定义)**:由于浏览器加载脚本天生异步,AMD是一个在浏览器模快化开发的规范,但是由于元素的js并没有define()和require(),所以AMD规范运用了requirejs库。

- ** CMD(通用模板定义)**:也是异步加载模块,它和AMD只是模块定义的方式和模块记载的时机不同

AMD和CMD的区别以及运用

  1. 都运用于浏览器端的异步加载资源
  2. AMD是全部加载后,然后需求使用,而CMD是按需加载,就近依赖
  3. AMD在加载模块完成后就会执行模块,所有模快都记载完成后,就会进入required的回调函数,执行主逻辑函数,,这样的效果就是依赖模块的执行顺序和书写顺序不一定一致,看网络速度,哪个先下载下来,哪个先执行,但是主逻辑一定在所有依赖加载完成后才执行。
  4. CMD加载完某个依赖模块后并不执行,只是下载而已,在所有依赖模块加载完成后进入主逻辑,遇到require语句的时候才执行对应的模块,这样模块的执行顺序和书写顺序是完全一致的
```
  //AMD
  define(['jquery','dailog','carousel'],function(jquery,dailog,Carousel){
    var $=jquery;
    var dailog=dailog;
    var Carousel=Carousel;
  })
  //CMD
  //1. 定义一个模快myModule.js
  define(function(require,exports,module){
    var $=require(jquery);
    $("div").addClass("active");
    exports.add=function(){
      var i=0;
      i++
      return i
    }
  })
  define(function(require,exports,module){
    var sum=require("myModule").add;
    console.log(sum)
  })
```
  • CommonJS:是服务器端模快的规范,Node.js就是运用这个规范,使用与同步加载资源,一个单独的文件就是一个模快,每一个模快都有一个单独的作用域。

    1. 不需要引用其它的库,node.js自动封装了一个2个对象用于模快的输出和请求
    2. module.exports 模快的唯一出口,我们需要把模快要输出的东西放入该对象。
    3. require()   加载模块使用`require`方法,该方法读取一个文件并执行,返回文件内部的`module.exports`对象
    
      //定义一个a.js文件
      var name="hcc";
      function printName(){
        console.log(name)
      }
      module.exports={
        printName:printName
      }
      //在b.js中引用a.js
      var b= require('./a')  //接受a.js的exports的值 
      b.printName()    //输出hcc
    

    浏览地址

    代码地址

相关文章

  • js的模块方案:CommonJS、AMD和CMD

    什么是CommonJS、AMD和CMD CommonJS、AMD和CMD都是js的模块加载方案,JS在最初设计的时...

  • Amd和Cmd

    AMD 规范在这里:https://github.com/amdjs/amdjs-api/wiki/AMD CMD...

  • AMD和CMD

    1.不同的模块化规范 对于依赖的模块AMD是提前执行,CMD是延迟执行CMD推崇依赖就近,AMD推崇依赖前置 2....

  • AMD和CMD

    以代码爱好者角度来看AMD与CMD 随着浏览器功能越来越完善,前端已经不仅仅是切图做网站,前端在某些方面已经媲美桌...

  • AMD和CMD

    题目1: 为什么要使用模块化? 题目2:CMD、AMD、CommonJS 规范分别指什么?有哪些应用 AMD和CM...

  • AMD 和 CMD

    一、前言 这是我们经常写在 HTML 中的语句,引用了很多 js 文件,但是看不清他们彼此之间的依赖关系: 删除 ...

  • AMD CMD

    AMD CMD AMD,CMD是浏览器端模块加载器的两种规范。AMD的代表是requireJS和SeaJS。今天主...

  • [读]高大上的AMD和CMD的区别

    高大上的AMD和CMD的区别

  • 前端模块化(CommonJs,AMD和CMD)

    前端模块规范有三种:CommonJs,AMD和CMD。CommonJs用在服务器端,AMD和CMD用在浏览器环境A...

  • 2017年4月看面试题记

    AMD 和 CMD 的区别有哪些?AMD 是 RequireJS 在推广过程中对模块定义的规范化产出。CMD 是 ...

网友评论

      本文标题:AMD和CMD

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