ES6中的export以及import的使用多样性
模块功能主要由两个命令构成:export
和import
。export
命令用于规定模块的对外接口,import
命令用于输入其他模块提供的功能。
一、export导出模块使用部分的几种方式
一个模块就是一个独立的文件。该文件内部的所有变量,外部无法获取。如果你希望外部能够读取模块内部的某个变量,就必须使用export
关键字输出该变量。下面是一个 JS 文件,里面使用export
命令输出变量。
(1)利用default做接口导出
var a=;
export default a;
export default function scc(){}
//错误的使用方式
export default var a=
本质上,export default
就是输出一个叫做default
的变量或方法,然后系统允许你为它取任意名字,正是因为export default
命令其实只是输出一个叫做default
的变量,所以它后面不能跟变量声明语句,而且一个模块中只能有一个default。同时同样地,因为export default
本质是将该命令后面的值,赋给default
变量以后再默认,所以直接将一个值写在export default
之后是可以的:
export default
(2)直接导出变量以及方法
export var a=;
export function fun(){}
但是不能直接使用如下形式:
export ; var a=;
export a //以上两种方式中均直接导出是常量而不是接口
(3)将上诉的方式用对象的形式导出
var a=;
var b=;
function c(){}
export {a,b,c}
或者
export {a}
该方式的导出更直观,通常采用该方式进行。
二、import导入方式
(1)对应第一种导出方式,可以为default任意命名
import name from modulePath;
import{default as name} from modulePath
//两种方式实现的效果是一样的
(2)对应与第二种和第三种方式的导入方式是一样的:
import {a, b,c} from modulePath //按名称一次导入模块直接使用 import * as ddd from modulePath //导出模块的所有部分并重命名为ddd,通过ddd.a的形式进行调用,
//该形式和
var aaa={a:a,b:b,c:c}
export default aaa
import ddd from modulePath
的形式是类似的,相当于导出时对对象进行命名为default,导入的时候重命名
import {a} from modulePath //只导入导出模块的部分
//以上三种方式均没有修改导出部分的名称 import{a as aaa} from modulePath //给a进行重命名,通过aaa进行调用
需要注意的是不要将导入导出的对应弄混了,某则将其不了作用的。
(3)import和export的复合写法
export { foo, bar } from 'my_module'; // 等同于
import { foo, bar } from 'my_module';
export { foo, bar };
三、ES6的导入导出方式和node的require(commonJS)的区别
(1)ES6的import主要用于客户端导入模块,同时导入是出于编译阶段的,因而不能实现按需导入以及在语句块中导入模块,而应该在顶级作用域中。同时不能再import中使用变量
// 报错不能进行条件导入
if (x === ) {
import MyModual from './myModual';
}
// 报错不能使用变量,编译阶段无法识别变量
import aa from '/index'+path
(2)import
命令会被 JavaScript 引擎静态分析,先于模块内的其他模块执行,可以在import的前面调用方法
aa();//不会报错
import aa from modulePath
(3)import是异步加载模块的,require是发生在执行阶段,同步加载的。
注意:在 export default 和其他形式的export是可以同时使用的,导入的时候区别对待就好
export default a=;
export function b(){}; import a,{b} from modulePath;//其中a对应的是default
四、类似require模块引入的方法
import()方法可以实现按需导入,条件导入、动态的模块路径(即路径中含有相关的变量)
ES6中的export以及import的使用多样性的更多相关文章
- ES6中的export和import
1.ES6中的模块加载 ES6 模块是编译时加载,编译时就能确定模块的依赖关系,以及输入和输出的变量,相比于CommonJS 和 AMD 模块都只能在运行时确定输入输出变量的加载效率要高. 1.1.严 ...
- ES6中的export,import ,export default
ES6模块主要有两个功能:export和importexport用于对外输出本模块(一个文件可以理解为一个模块)变量的接口import用于在一个模块中加载另一个含有export接口的模块.也就是说使用 ...
- JavaScript ES6中,export与export default
自述: 本来是对new Vue()和export default比较懵的,查了一下,发现我理解错了两者的关系,也没意识到export与export default的区别,先简单的记录一下基本概念,后续 ...
- ES6 模块化(Module)export和import详解 export default
ES6 模块化(Module)export和import详解 - CSDN博客 https://blog.csdn.net/pcaxb/article/details/53670097 微信小程序笔记 ...
- ES6模块之export和import详解
ES6中的模块即使一个包含JS代码的文件,在这个模块中所有的变量都是对其他模块不可见的,除非我们导出它.ES6的模块系统大致分为导出(export)和导入(import)两个模块. 1.模块导出(ex ...
- es6环境中,export与import使用方法
前言 参考自阮一峰大神的教程:http://es6.ruanyifeng.com/?search=export&x=6&y=5#docs/module#export-命令 声明:如有问 ...
- ES6 模块定义 export 与 import
一般导出 export math.js export function* getFibo() { let a = 1; let b = 1; yield a; yield b; while (true ...
- 解决es6中webstrom不支持import的一个简单方法
代码如下: export_one.js的代码如下: export function one() { console.log('one'); } export function two() { cons ...
- JavaScript ES6中export及export default的区别以及import的用法
本文原创地址链接:http://blog.csdn.net/zhou_xiao_cheng/article/details/52759632,未经博主允许不得转载. 相信很多人都使用过export.e ...
随机推荐
- Ninja 之路:试炼!求生演习——异步 I/O、http
鸣人火影之路的第一步,就是跟着卡卡西学习基本的忍术,让自己先在忍者的世界里生存下来,so,想要在 node 的世界里游刃有余,必须要掌握异步 I/O.http等核心技能. ok,第一步先学会读懂需求 ...
- Xcode8.3.2制作静态库
1. 打开Xcode8.3.2: 2. 如下操作 3. 创建Bundle文件 比如xib或者图片存放 File-new-Target 选择macOS 搜索Bundle文件 4.创建完成如下所示 5. ...
- winows 服务器环境搭建 (碰到了windows服务器,小记一下吧~)
1.连接远程服务器 安装wamp 2.查看wamp 默认端口号是否与对应windows 服务器冲突,如果冲突,则改之 WAMP装好之后默认的端口是80,但是这个80端口呢,可以热门端口啊,迅雷,II ...
- 对JVM运行时常量池的一些理解
1.JVM运行时常量池在内存的方法区中(在jdk8中,移除了方法区) 2.JVM运行时常量池中的内容主要是从各个类型的class文件的常量池中获取,对于字符串常量,可以调用intern方法人为添加,而 ...
- Word Ladder 2015年6月3日
Given two words (beginWord and endWord), and a dictionary, find the length of shortest transformatio ...
- .nomedia文件的作用
.nomedia文件的作用:应用中的图片不被系统图库扫描. 一般开发的应用中会缓存一些图片到本地,不想让系统图库扫描到应用的图片或者不想对用户浏览图片造成影响. .nomedia文件放在任何一个文件夹 ...
- windows搭建代理服务器
系统环境:windows server 2008R2 利用CCProxy软件达成 安装后确保设置正确,如下图: 注意:需要编辑防火墙开启相关端口,或直接关闭内网防火墙. 设置后可用telnet测试端口 ...
- Java类加载器详解
title: Java类加载器详解date: 2015-10-20 18:16:52tags: JVM--- ## JVM三种类型的类加载器- 我们首先看一下JVM预定义的三种类型类加载器,当一个 J ...
- Python列表(一)
列表由一系列特定顺序排列的元素组成,在python中使用[]来表示列表,并用,来进行元素分割. >>> name_list['alben', 'james', 'harden', ' ...
- R语言与分类算法的绩效评估(转)
关于分类算法我们之前也讨论过了KNN.决策树.naivebayes.SVM.ANN.logistic回归.关于这么多的分类算法,我们自然需要考虑谁的表现更加的优秀. 既然要对分类算法进行评价,那么我们 ...