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 ...
随机推荐
- 数据分析 - pandas 模块
数据读取结构 - DataFrame Series (collection of values) DataFrame (collection of Series objects) Panel (co ...
- 侧方、s弯道、坡起相关
侧方: 方向盘上端对准路中箭头直行,当前面箭头头部尖角刚刚消失,停车,挂倒档,倒,当箭头尾部快要消失时右打死,侧身看左后视镜(这时可以稍微踩一下离合控制速度为低速),当出现库底角回正,坐直,当左侧第一 ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_6-04 自定义Zuul过滤器实现登录
笔记 4.自定义Zuul过滤器实现登录鉴权实战 简介:自定义Zuul过滤器实现登录鉴权实战 1.新建一个filter包 2.新建一个类,实现ZuulFilter,重写里面的方法 3.在类顶部加 ...
- Linux md5sum 命令
Linux md5sum 命令 通过 Linux 的 md5sum 命令,可以对指定的文件,计算出唯一的一个MD5值(128bit). 通过比较文件前后的MD5值,可以判断文件是否发生变化(是否被修改 ...
- 【C# in depth 第三版】温故而知新(1) (转)
声明 本文欢迎转载,原文地址:http://www.cnblogs.com/DjlNet/p/7192354.html 前言 关于这本书(<深入理解C# 第三版>)的详细情况以及好坏,自行 ...
- R语言 我要如何开始R语言_数据分析师
R语言 我要如何开始R语言_数据分析师 我要如何开始R语言? 很多时候,我们的老板跟我们说,这个东西你用R语言去算吧,Oh,My god!什么是R语言?我要怎么开始呢? 其实回答这个问题很简单,首先, ...
- OSS上传图片demo
demo整理来源https://help.aliyun.com/document_detail/32011.html /** * 示例说明 * <p> * HelloOSS是OSS Jav ...
- Centos7 FastDFS 搭建
安装libfastcommon 首先第一步是安装libfastcommon,我这里将libfastcommon上传到的/opt目录下,直接解压: yum -y install gcc-c++ yum ...
- centos6.5 单点kafka测试
一,kafka解压到/usr/local/下后,修改配置文件 vim config/zookeeper.properties 修改如下几行: dataDir=/usr/local/zookeeper/ ...
- 浏览器F12功能键对测试工程师的重要性
F键,功能键,Function键.F12常用于网站界面测试.调试,分析网页所出现的问题,查看html元素.查看响应事件等方面. 打开一个网页,点击F12,弹出一个窗口,其窗口的功能如下: 1 Elem ...