模块的加载

模块的加载

AMD

  AMD(异步模块定义) 被requireJS,NodeJs,Dojo,JQuery使用

/**
 * @param name  模块标识,可以省略
 * @param dependencyModule 所依赖的模块,可以省略
 * @param moduleFactoryOrObject 模块的实现,或者一个JavaScript对象
 * 执行过程:
 *     1:会异步调用第二个参数中所列出的模块
 *     2:当所有模块被载入完成后
 *     3:执行第三个参数回调
 **/
var name = "module-name";
var dependencyModule = ["a", "b", "c"];
var moduleFactoryOrObject = function(a, b, c) {};
define(name, dependencyModule, moduleFactoryOrObject);
/**
 * 匿名模块
 * 这个时候文件名就是模块名 => 模块高度可重用
 **/
define(["a", "b", "c"], function(a, b, c) {});

export

  • 值是动态更新
  • 在编译的时候就执行了(所以不能使用表达式和变量 =>这个在运行时才得到结果)
  • 导出(可以使用as修改别名)
export var firstName = 'Michael';
export var lastName = 'Jackson';
export var year = 1958;
// 等价于

const firstName = 'Michael';
const  lastName = 'Jackson';
const  year = 1958;
// 提倡使用这中方法
export {firstName, lastName, year as time};
/**
 * 默认导出
 * defalult =>对外输出的接口
 **/
export default 42;
export default {
firstName: 'aaa',
lastName: 'bbb'
}

import

  • 在编译的时候就执行了(所以不能使用表达式和变量 => 这个在运行时才得到结果)
  • 不准许在加载模块的脚本里面,改写接口
  • 如果某个接口是对象的话,就准许修改对象的属性(建议不要这样搞)
// 没有大括号,随便命名
import  name from '.........'; 
import {firstName as surName, lastName, time} from '......';
// 整体模块的加载
import * as info from '.......'(可以采用info.firstName);

  转载请注明: 迷一样的自信 模块的加载

 上一篇
reduce reduce
reduce基本用法/** * @param {callback} 执行数组中每个值的函数,包含四个参数 * 1、previousValue (上一次调用回调返回的值,或者是提供的初始值(initialValue)) * 2、cu
2018-03-31
下一篇 
作用域、作用域链、闭包 作用域、作用域链、闭包
作用域、作用域链、闭包执行上下文 在执行代码之前,把将要用到的所有的变量都事先拿出来,有的直接赋值了,有的先用undefined占个空 作用域 函数可以创建作用域 作用域在函数定义时就已经确定了。而不是在函数调用时确定 作用域链
2018-03-18
  目录