美文网首页
高级任务四

高级任务四

作者: 饥人谷_迪 | 来源:发表于2018-01-19 09:39 被阅读0次

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

  • 最主要目的
  1. 解决命名冲突
  2. 依赖管理
  • 其他价值
  1. 提高代码可读性
  2. 代码解耦,提高复用性

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

  • CommonJS 规范
  1. 定义模块: 根据CommonJs规范,一个单独的文件就是一个模块。每一个模块都是一个单独的作用域,也就是说,在该模块内部定义的变量,无法被其他模块读取,除非定义为global对象的属性

  2. 模块输出: 模块只有一个出口, module.exports 对象,我们需要把模块希望输出的内容放入该对象

3.加载模块:加载模块使用require 方法,该方法读取一个文件执行,返回文件内部的 module.exports 对象

//定义模块 a.js
var people = {
    name: 'ruoyu',
    sayName: function(){
        console.log(this.name);
    }
}

module.exports = people;

//加载模块 b.js
var p = require('./a');
p.sayName();

  • AMD 规范

AMD 是 “Asynchronous Module Definition” 的缩写,意思就是“异步模块定义”。是 RequireJS 在推广过程中的规范化产出。该规范定义了一个函数define,它是全局变量。

requireJS主要解决两个问题

  1. 多个js文件可能有依赖关系,被依赖的文件需要早于依赖它的文件加载到浏览器
  2. js加载的时候浏览器会停止页面渲染,加载文件越多,页面失去响应时间越长
// 定义模块 myModule.js
define(['dependency'], function(){
    var name = 'Byron';
    function printName(){
        console.log(name);
    }

    return {
        printName: printName
    };
});

// 加载模块
require(['myModule'], function (my){
  my.printName(); 
});
  • CMD 规范

CMD 是 SeaJS 在推广过程中的规范化产出。

与 AMD 的区别:

  1. 对于依赖的模块,AMD 是提前执行,CMD 是延迟执行。
  2. CMD 推崇依赖就近,AMD 推崇依赖前置
define(function(require, exports, module) {   
  var a = require('./a')   
  a.doSomething()   
  // 此处略去 100 行   

  var b = require('./b') 
  // 依赖可以就近书写   
  b.doSomething()   
  // ... 
})

  • 应用
  1. CommonJS 适用于服务器端,基于Node,可用于Glup、Webpack之类的打包压缩再用于浏览器环境

  2. AMD 用于浏览器环境, 如RequireJS

3.CMD 用于浏览器环境, SeaJS推广中产出

相关文章

  • 高级任务四

    题目1: 为什么要使用模块化? 最主要目的 解决命名冲突 依赖管理 其他价值 提高代码可读性 代码解耦,提高复用性...

  • 高级-任务2

    this 相关问题 问题1: apply、call 、bind有什么作用,什么区别 apply和call的第一个参...

  • 高级-任务4

    题目1: 为什么要使用模块化? 模块的由来:嵌入网页的JS代码越来越庞大,越来越像桌面程序,需要一个团队去分工协作...

  • 高级-任务5

    题目1: 如何全局安装一个 node 应用? npm install -g 题目2: package.json 有...

  • 高级-任务3

    封装一个轮播组件 封装一个曝光加载组件 封装一个 Tab 组件 封装一个 Modal 组件

  • 高级-任务1

    问题1: OOP 指什么?有哪些特性 OOP: Object Oriented programming面向对象编程...

  • 高级 - 任务5

    课程任务 题目1: 如何全局安装一个 node 应用? 在命令行使用npm install -g xxx即可以全局...

  • 高级任务2

    1、apply、call 、bind有什么作用,什么区别? apply语法--->fun.apply(thisAr...

  • 高级任务3

    1、封装一个轮播组件 预览 代码github 2、封装一个曝光加载组件 预览 代码github 3、封装一个 Ta...

  • 高级任务1

    1、OOP 指什么?有哪些特性 oop--->是object oriented programming的缩写,它是...

网友评论

      本文标题:高级任务四

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