关于RequireJs

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

  • 解决命名冲突
  • 依赖管理
  • 提高代码可读性
  • 代码解耦,提高复用性

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

这三个规范都是基于javascript模块化,使代码能够更好的管理与维护,需要哪个模块就加载哪个模块,便于团队合作。

  1. CMD
  • CMD(Common Module Definition),是SeaJs推崇的规范。他和amd不同,虽然两者都是二者皆为异步加载模块,但是cmd是需要加载哪个模块的时候才加载,也就是松散加载。在CMD规范中,一个模块就是一个文件。
  • 语法
  //定义 module.js
  define(function(requie, exports, module){
    // 模块代码
    var $ = require('jquery.js')
    $('div').addClass('active');

  // 加载模块
  seajs.use(['myModule.js'], function(my){
    
  });
})
  1. AMD
  • AMD 即Asynchronous Module Definition,就是“异步模块定义”。它是一个在浏览器端模块化开发的规范,也是RequireJs推崇的规范。他与CMD不同在于,它是依赖前置模块,并提前加载,也就是所有的require都被提前执行。
  • 语法
import markdown
// a.js 模块
  define(['jquery'],function($){
      var a =1;
      return {
          add1:function(){
               return  ++a
            },
          goShow:function(){
              return $('div').show()
          }
      }
})
// main.js 
  require(['a'],function(a){
      console.log(a.add1()) // 2
})
  1. COMMONJS
  • CommonJS是服务器端模块的规范,Node.js采用了这个规范。Node.JS首先采用了js模块化的概念。
  • 根据CommonJS规范,一个单独的文件就是一个模块。每一个模块都是一个单独的作用域,也就是说,在该模块内部定义的变量,无法被其他模块读取,除非定义为global对象的属性。其实它和cmd规范差不多,都是按需加载,只是CommonJS不能应用于浏览器端。
  • 语法
// a.js
var people = {
  name:'huo',
  sayName:function(){
    console.log(this.name);
  }
}
module.exports = people; // 暴露接口
// b.js
var p = require('./a');
console.log(p);
p.sayName()

实战

企业站

你可能感兴趣的:(关于RequireJs)