前言

参考自阮一峰大神的教程:http://es6.ruanyifeng.com/?search=export&x=6&y=5#docs/module#export-命令

声明:如有问题,还请各位大神及时指正

es6环境下,一个模块就是一个独立的文件。该文件内部的所有变量,外部无法获取。如果你希望外部能够读取模块内部的某个变量,就必须使用export关键字输出该变量。

初出茅庐 来个Demo(因为最近在学习Vue,所以请先构建好Vue项目)

在src目录下,新建common文件夹,新建profile.js,现在我们在profile.js里面加入以下代码

  1. export var firstName = 'Michael';
  2. export var lastName = 'Jackson';
  3. export var year = 1958;
  4. export const SuccMsgCode=0;

等价于

  1. var firstName = 'Michael';
  2. var lastName = 'Jackson';
  3. var year = 1958;
  4. const SuccMsgCode= 0;
  5. export {firstName, lastName, year, SuccMsgCode};

es6会将,profile.js视为一个模块,所以如果希望外部能访问这三个变量,需要将其导出。但是应该优先考虑使用第二种写法。因为这样就可以在脚本尾部,一眼看清楚输出了哪些变量。

在src目录下的main.js文件中 中加入以下代码:

  1. import {firstName, lastName, year, SuccMsgCode} from 'common/profile';
  2. console.log('firstName\t' + firstName);
  3. console.log('lastName\t' + lastName);
  4. console.log('year\t' + year);
  5. console.log('SuccMsgCode\t' + SuccMsgCode);

就会看到firstName,lastName,year, SuccMsgCode正常输出了,但是此种方法是作为变量导入导出的,所以名称必须一致。除非使用 as 命令指定新的名称,例如:

导入时指定别名

  1. export {firstName, lastName, year, SuccMsgCode};
  2. import {firstName, lastName, year, SuccMsgCode as SuccMsgCode1} from 'common/profile';
  3. console.log('SuccMsgCode\t' + SuccMsgCode1);

我们看到SuccMsgCode1正常显示‘Hello World!’

或者,导出时指定别名

  1. export {firstName, lastName, year, SuccMsgCode as SuccMsgCode2 };
  2. import {firstName, lastName, year, SuccMsgCode2} from 'common/profile';
  3. console.log('SuccMsgCode \t' + SuccMsgCode2);

我们看到SuccMsgCode 正常显示‘Hello World!’

还可以直接使用以下语法:

  1. export { import1 as name1, import2 as name2, …, nameN } from …;

我们建议直接使用此种语法,方便又直观,一般不在import时做别名处理。

export 不仅能导出变量,还能导出函数和类

在profile.js中加入以下代码:

  1. export function multiply (x, y) {
  2. return x * y;
  3. };

上面代码对外输出一个函数multiply。

在main.js 中加入以下代码:

  1. import {multiply} from 'common/profile';
  2. console.log('multiply\t' + multiply);

multiply函数被打印出来

如果将profile.js中的代码修改为:

  1. export multiply = function (x, y) {
  2. return x * y;
  3. };

等价于

  1. function multiply (x, y) {
  2. return x * y;
  3. };
  4. export {multiply};

如果将export 修改为 export default 则之前的导入导出变量皆不能使用,因为export default只允许export出现一次,而且在使用导入时,不需要加{},代码如下

  1. function multiply (x, y) {
  2. return x * y;
  3. };
  4. export default {multiply};
  5. import multiply from 'common/profile';

如果需要导出整个文件,可使用如下代码

  1. export default {
  2. data () {
  3. return {
  4. firstName: 'Michael'
  5. };
  6. },
  7. methods: {
  8. multiply (x, y) {
  9. return x * y;
  10. }
  11. }
  12. };

es6环境中,export与import使用方法的更多相关文章

  1. JavaScript ES6中export、import与export default的用法和区别

    前言 相信很多人都使用过export.export default.import,然而它们到底有什么区别呢? 在看他们之间的区别之前,我们先来看看它们的用法. ES6 import和export的用法 ...

  2. 让node支持es模块化(export、import)的方法

    node版本v7.9.0,支持了大部分es6的功能,但还不支持es6模块化(export.import). 检测ES6 可以使用es-checker来检测当前Node.js对ES6的支持情况. 使用命 ...

  3. ES6 模块化(Module)export和import详解 export default

    ES6 模块化(Module)export和import详解 - CSDN博客 https://blog.csdn.net/pcaxb/article/details/53670097 微信小程序笔记 ...

  4. JS ES6中export和import详解

    1.Export 模块是独立的文件,该文件内部的所有的变量外部都无法获取.如果希望获取某个变量,必须通过export输出, // profile.js export var firstName = ' ...

  5. ES6模块之export和import详解

    ES6中的模块即使一个包含JS代码的文件,在这个模块中所有的变量都是对其他模块不可见的,除非我们导出它.ES6的模块系统大致分为导出(export)和导入(import)两个模块. 1.模块导出(ex ...

  6. 分布式环境中三种Session管理方法的使用场景及优缺点

    在分布式环境,管理Session通常使用下面三种方式: 一.Session Replication 方式管理 (即session复制)         简介:将一台机器上的Session数据广播复制到 ...

  7. ES6 模块定义 export 与 import

    一般导出 export math.js export function* getFibo() { let a = 1; let b = 1; yield a; yield b; while (true ...

  8. hanlp在Python环境中的安装失败后的解决方法

    Hanlp是由一系列模型与算法组成的javag工具包,目标是普及自然语言处理再生环境中的应用.有很多人在安装hanlp的时候会遇到安装失败的情况,下面就是某大神的分享的在python环境中安装失败的解 ...

  9. 探索 模块打包 exports和require 与 export和import 的用法和区别

    菜单快捷导航: CommonJS 之 exports和require用法 ES6 Module 之 export 和 import 用法 CommonJS和ES6 Module的区别 循环依赖 和 解 ...

随机推荐

  1. JForum的运行环境

    JForum的运行环境: 开始本文之前,我们确认一下JForum的运行环境. - Java动态运行环境(JRE) - 支持J2EE Servlet标准的任何一款Web服务器:Tomcat,JBoss, ...

  2. android系统和ios系统是如何实现推送的,ios为什么没有后台推送

    ios系统为什么没有后台推送? iOS 为了真正地为用户体验负责,不允许应用在后台活动.有了这个限制,但是对于终端设备,应用又是有必要“通知”到达用户的,随时与用户主动沟通起来的(典型的如聊天应用). ...

  3. ACM-ICPC 2018 沈阳赛区网络预赛 F. Fantastic Graph (上下界网络流)

    正解: #include <bits/stdc++.h> using namespace std; const int INF = 0x3f3f3f3f; const int MAXN=1 ...

  4. Java枚举类型定义方式

    public enum Method { // get请求 GET("get"), // post请求 POST("post"); private String ...

  5. git 提交和下载代码

    在github下需先 New repository 下载:进入程序工程目录下 如 cd f: cd ./Program\ Files/eclipse/workspace/IMoocMusic/ git ...

  6. 20145316许心远《Java学习笔记(第8版)》课程总结

    20145316许心远<Java学习笔记(第8版)>课程总结 每周读书笔记链接汇总 ▪ 第一周读书笔记 ▪ 第二周读书笔记 ▪ 第三周读书笔记 ▪ 第四周读书笔记 ▪ 第五周读书笔记 ▪ ...

  7. Shape-in​​side css新属性 几何图形的实现

    https://www.w3cplus.com/css3/css-shapes-101.html

  8. vs LNK2019 无法解析的外部符号 ***,该符号在函数 WinMain 中被引用

    一般链接错误都是因为包含头文件与lib库不匹配(无导出函数.lib库的release debug版本混乱.库引用的优先级.编译器设置mt/mtd等等)造成的. 错误    LNK2019    无法解 ...

  9. 1691: [Usaco2007 Dec]挑剔的美食家

    Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 621  Solved: 280[Submit][Status][Discuss] Description ...

  10. SaltStack使用salt-ssh模式-第十一篇

    salt-ssh介绍 1.salt-ssh 是 0.17.0 新引入的一个功能,不需要minion对客户端进行管理,也不需要master. 2.salt-ssh 支持salt大部分的功能:如 grai ...