export CommonJS AMD ES6
export
https://www.cnblogs.com/fayin/p/6831071.html
导入文件: a - b - c ,对象隔代消失,可转成函数返回
default 为关键字 不可作为赋值
1. export
普通导出
type.js export const a = 1 export const b = [1,2,3] export function c(){...} export const d = function (){...} 等价于 const a = 1
const b = [1,2,3] function c(){...} const d = function (){...} export {a,b,c,d} // 导出 import {a,b,a,d} from '@/utils/type' 2. export default
一个文件 一个 export default,存在多个时,只认第一个
export default后面不可以用 var、let、const 可用 export default function(){} function add(){}
export default function (name) {
console.log(name)
}
// 导出
import file from '@/utils/type'
file(5) // 3. export + export default
混合导出 export const fileType = function (name) {
console.log(name)
} export default function (name) {
console.log(name)
} // 导入 import * as fileType from '@/utils/type' fileType.fileType ('aaa') // aaa fileType.default ('sss') // sss // 或者 import fileTypedefault,{ fileType } from '@/utils/type' fileType ('aaa') // aaa fileTypedefault ('sss') // sss 4.同时导入导出
a.js
export const fileType = function (name) {
console.log(name)
} export default function (name) {
console.log(name)
} b.js 导入 a.js 后,导出自己
import xxx,{fileType } from './a' // xxx 为default 别名
export {xxx,fileType} 5. as
export function sampleA (name) {
console.log(name)
} export function sampleB (name) {
console.log(name)
} export function sampleC (name) {
console.log(name)
} export default function (name) {
console.log(name)
} // 导出 多个使用别名 import {
sampleA as funE,
sampleB as funF,
sampleC
} from '@/utils/type' // 或者 import sample, {
sampleA as funE,
sampleB as funF
} from '@/utils/type' funE('333') // funF('555') // sampleC('666') // sample('default') // default
其他细节
细节点一 default
export default命令其实只是输出一个叫做default的变量,所以它后面不能跟变量声明语句
// 正确
export var a = 1;
// 正确
var a = 1;
export default a;
// 错误
export default var a = 1; function add(x, y) { return x * y;}
export {add as default};
// 等同于
// export default add; import { default as foo } from 'modules';
// 等同于
// import foo from 'modules'; 细节点二 export 复合导出 ( 转发 )
export { foo, bar } from 'my_module';
写成一行以后,foo和bar实际上并没有被导入当前模块,只是相当于对外转发了这两个接口,
导致当前模块不能直接使用foo和bar。
// 接口改名
export { foo as myFoo } from 'my_module';
// 整体输出
export * from 'my_module'; 细节点三 默认接口、具名接口 转换
默认接口
export { default } from 'foo';
具名接口改为默认接口
export { es6 as default } from './someModule';
// 等同于
import { es6 } from './someModule';
export default es6;
默认接口也可以改名为具名接口
export { default as es6 } from './someModule';
CommonJS AMD ES6
CommonJS规范
同步模块化规范,适用于服务端 (Node使用CommonJS模块规范)
加载一次模块,后续使用缓存
module变量代表当前模块。
这个变量是一个对象,它的exports属性(即module.exports)是对外的接口。
加载某个模块,其实是加载该模块的module.exports属性。
( var exports = module.exports; 引用,故不能重新赋值,但可以改变属性,所有涉及模块地方生效 )
module.exports.x = x; require方法用于加载模块
var example = require('./example.js'); AMD
异步加载模块,适用于浏览器
define(['package/lib'], function(lib){
function foo(){
lib.log('hello world!');
} return {
foo: foo
};
}); ES6
使用 export 和 import 来导出、导入模块
按需加载,只加载导入部分
export CommonJS AMD ES6的更多相关文章
- amd、cmd、CommonJS以及ES6模块化
AMD.CMD.CommonJs.ES6的对比 他们都是用于在模块化定义中使用的,AMD.CMD.CommonJs是ES5中提供的模块化编程的方案,import/export是ES6中定义新增的 什么 ...
- JavaScript模块化CommonJS/AMD/CMD/UMD/ES6Module的区别
目录 JS-模块化进程 原始的开发方式 CommonJS && node.js AMD && Require.js CMD && Sea.js UMD ...
- 深入 CommonJs 与 ES6 Module
目前主流的模块规范 UMD CommonJs es6 module umd 模块(通用模块) (function (global, factory) { typeof exports === 'obj ...
- JavaScript模块化编程 - CommonJS, AMD 和 RequireJS之间的关系
这几天在学习CommonJS的时候突然在StackOverflow上搜索到一个非常好的一个帖子,是关于CommonJS, AMD和RequireJS之间的关系的问答贴.我感觉写的非常好,鉴于没有找到相 ...
- CommonJS与ES6 Module的使用与区别
CommonJS与ES6 Module的使用与区别 1. CommonJS 1.1 导出 1.2 导入 2. ES6 Module 2.1 导出 2.2 导入 3. CommonJS 与 ES6 Mo ...
- Webpack - CommonJs & AMD 模块打包器
Webpack 是一个 CommonJs & AMD 模块打包器.可以把你的 JavaScript 代码分离为多个包,在需要的时候进行加载,支持预处理文件,例如 json, jade, cof ...
- CommonJS, AMD, CMD是什么及区别--简单易懂有实例
CommonJS, AMD, CMD都是JS模块化的规范. CommonJS是服务器端js模块化的规范,NodeJS是这种规范的实现. AMD(异步模块定义)和CMD(通用模块定义)都是浏览器端js模 ...
- 前端模块化(CommonJs,AMD和CMD)
前端模块规范有三种:CommonJs,AMD和CMD. CommonJs用在服务器端,AMD和CMD用在浏览器环境 AMD 是 RequireJS 在推广过程中对模块定义的规范化产出. CMD 是 S ...
- JavaScript模块化演变 CommonJs,AMD, CMD, UMD(一)
原文链接:https://www.jianshu.com/p/33d53cce8237 原文系列2链接:https://www.jianshu.com/p/ad427d8879cb 前端完全手册: h ...
随机推荐
- 深度学习之DCGAN
1.知识点 """ DCGAN:相比GAN而言,使用了卷积网络替代全连接 卷积:256*256*3 --- > 28*28*14 -->结果 ,即H,W变小, ...
- 一百一十六:CMS系统之使用阿里大于sdk发送短信验证码
阿里大于短信平台:https://dysms.console.aliyun.com/dysms.htm#/overview 使用教程:https://blog.csdn.net/qq103189393 ...
- laravel redis存数组并设置过期时间
$data = [ 'zoneList'=>$zoneList, 'eqList' => $eqList, 'mdateList' => $mdateList ]; Redis::s ...
- Leetcode之动态规划(DP)专题-746. 使用最小花费爬楼梯(Min Cost Climbing Stairs)
Leetcode之动态规划(DP)专题-746. 使用最小花费爬楼梯(Min Cost Climbing Stairs) 数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 cost ...
- 【并行计算-CUDA开发】__syncthreads的理解
__syncthreads()是cuda的内建函数,用于块内线程通信. __syncthreads() is you garden variety thread barrier. Any thread ...
- 【ARM-Linux开发】Linux的SOCKET编程详解
Linux的SOCKET编程详解 1. 网络中进程之间如何通信 进 程通信的概念最初来源于单机系统.由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进 程之间既互不干扰又协调一致工作,操作系 ...
- 【VS开发】关于线程安全一些细节体会
[VS开发]关于线程安全一些细节体会 标签(空格分隔): [VS开发] 利用C++进行GUI界面开发,最大的问题往往是多线程安全问题,由于C++不具备收集内存垃圾的功能,所以必须由程序员负责维护,因此 ...
- Flash中的SLC/MLC/MLC--基础
参考 1.http://www.upantool.com/jiaocheng/qita/2012/slc_mlc_tlc.html 2.http://www.2ic.cn/html/10/t-4324 ...
- sql普通语句
select DISTINCT t_id from nrc_newsDISTINCT不会输出相同的值select top 5 * from nrc_news;检索前五行select * from nr ...
- zping ping包工具20180605.exe测试版
链接: https://pan.baidu.com/s/1WB3BZn0r9n4DRU_8bNC65g 提取码: mybi zping的第一个exe版本由于未对兼容性进行测试,使用python3.6编 ...