`

ES6模块的import和export用法总结

    博客分类:
  • Vue
 
阅读更多
[color=green]ES6之前已经出现了js模块加载的方案,最主要的是CommonJS和AMD规范。commonjs主要应用于服务器,实现同步加载,如nodejs。AMD规范应用于浏览器,如requirejs,为异步加载。同时还有CMD规范,为同步加载方案如seaJS。

ES6在语言规格的层面上,实现了模块功能,而且实现得相当简单,完全可以取代现有的CommonJS和AMD规范,成为浏览器和服务器通用的模块解决方案。

ES6模块主要有两个功能:export和import

export用于对外输出本模块(一个文件可以理解为一个模块)变量的接口

import用于在一个模块中加载另一个含有export接口的模块。

也就是说使用export命令定义了模块的对外接口以后,其他JS文件就可以通过import命令加载这个模块(文件)。如下图(假设a和b文件在同一目录下)

// a.js

var sex="boy";
var echo=function(value){
  console.log(value)
}
export {sex,echo} 
//通过向大括号中添加sex,echo变量并且export输出,就可以将对应变量值以sex、echo变量标识符形式暴露给其他文件而被读取到
//不能写成export sex这样的方式,如果这样就相当于export "boy",外部文件就获取不到该文件的内部变量sex的值,因为没有对外输出变量接口,只是输出的字符串。


// b.js
通过import获取a.js文件的内部变量,{}括号内的变量来自于a.js文件export出的变量标识符。
import {sex,echo} from "./a.js"
console.log(sex)   // boy
echo(sex) // boy


// a.js
export var sex="boy";
export var echo=function(value){
  console.log(value)
}

//因为function echo(){}等价于 var echo=function(){}所以也可以写成
export function echo(value){
   console.log(value)
}


以上是export与module的基本用法,再进行拓展学习

前面的例子可以看出,b.js使用import命令的时候,用户需要知道a.js所暴露出的变量标识符,否则无法加载。可以使用export default命令,为模块指定默认输出,这样就不需要知道所要加载模块的变量名。


//a.js
var sex="boy";
export default sex(sex不能加大括号)
//原本直接export sex外部是无法识别的,加上default就可以了.但是一个文件内最多只能有一个export default。
其实此处相当于为sex变量值"boy"起了一个系统默认的变量名default,自然default只能有一个值,所以一个文件内不能有多个export default。


// b.js
本质上,a.js文件的export default输出一个叫做default的变量,然后系统允许你为它取任意名字。所以可以为import的模块起任何变量名,且不需要用大括号包含
import any from "./a.js"
import any12 from "./a.js"
console.log(any,any12)   // boy,boy
[/color]
分享到:
评论

相关推荐

    ES6模块化的import和export用法方法总结

    ES6之前已经出现了js模块加载的方案,最...ES6模块主要有两个功能:export和import export用于对外输出本模块(一个文件可以理解为一个模块)变量的接口 import用于在一个模块中加载另一个含有export接口的模块。 也就

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

    ES6 import和export的用法 ES6之前已经出现了js模块加载的方案,最主要的是CommonJS和AMD规范。commonjs主要应用于服务器,实现同步加载,如nodejs。AMD规范应用于浏览器,如requirejs,为异步加载。同时还有CMD规范...

    ES6使用export和import实现模块化的方法

    现在ES6自带了模块化, 也是JS第一次支持module, 在很久以后 ,我们可以直接作用import和export在浏览器中导入和导出各个模块了, 一个js文件代表一个js模块; 现代浏览器对模块(module)支持程度不同, 目前都是...

    ES6中module模块化开发实例浅析

    本文实例讲述了ES6中module模块化开发。分享给大家供大家参考,具体如下: 多人开发JavaScript时伴随着命名冲突等问题,先后有了模拟块级作用域、命名空间、模块...2. 模块中可以使用import和export。 导入和导出 我们

    es6-loader:用于 webpack 的 ES6 模块加载器

    用法 import bamboo from 'es6!./bamboo.js' ;class Panda { constructor ( arg = 'default' ) { this . eat = bamboo ; }}export default Panda ; var Panda = require ( 'es6!./panda.js' ) . default ;new Panda ...

    前端大厂最新面试题-ES6面试题.docx

    5.(import 和 export) 模块化引包和导出 * export 用于对外输出本模块(一个文件可以理解为一个模块)变量的接口 * import 用于在一个模块中加载另一个含有export接口的模块 * import 和 export 命令只能在模块的...

    import与export在node.js中的使用详解

    import与export是es6中模块化的导入与导出,node.js现阶段不支持,需要通过babel进行编译,使其变成node.js的模块化代码。(关于node.js模块,可参考其他node.js模块化的文章) export 曝露 使用export可以曝露出...

    node.js中使用Export和Import的方法

    import与export是es6中模块化的导入与导出,node.js现阶段不支持,需要通过babel进行编译,使其变成node.js的模块化代码。(关于node.js模块,可参考其他node.js模块化的文章) 继续使用exports和require test.js ...

    rollup-plugin-off-main-thread:立即将汇总与工人和ES6模块一起使用

    使用汇总与工人和ES6模块今天。 $ npm install --save @surma/rollup-plugin-off-main-thread 工作者是JavaScript的线程版本。 因为主线程已经超载,尤其是在较慢或较旧的设备上。 该插件负责辅助worker中的填充...

    es6整理的一些核心语法.docx

    ES6 中引入了模块化的概念,可以使用 export 和 import 来进行模块的导入和暴露。暴露的方法有多种,可以使用 import {需要导入的东西} from’需要导入的东西的位置’;import * as 任意名字 from’需要导入东西的...

    sprockets-es6module

    链轮::ES6模块 带有模块语法的链轮 ES6 转换器。 这是一个实验性的宝石。 我想要这个 gem 的努力来合并 安装 将此行添加到应用程序的 Gemfile 中: gem 'sprockets-es6module' 然后执行: $ bundle 或者自己...

    use-module:ECMAScript模块,用于导入JS,CSS和HTML模块

    使用模块该模块使您可以在几乎所有支持ES6模块的浏览器上导入JS(ES6),CSS和HTML模块。设置要将use-module添加到您的项目中,只需从下载use-module.js ,然后将其放在项目的文件夹中即可。 之后,将其作为HTML中的...

    es6-to-amd:es6转amd

    安装 npm install @buxlabs/es6-to-amd用法节点使用以下命令转换单个文件: const es6toamd = require ( '@buxlabs/es6-to-amd' ) ;const source = 'export default { hello: ' world ' }' ;const result = es6toamd...

    JS面经.pdf

    JS 面试指南 本文档收集了 JS 面试中常见的问题...20. 模块化的实现方法:ES6 中使用 import 和 export 实现模块化。 通过这些问题和答案,您将能够更好地理解 JavaScript 的基础知识和高级概念,并更好地准备面试。

    ember-modules-codemod:Codemod将Ember应用程序升级到JavaScript(ES6)模块

    灰烬模块Codemod 此codemod使用更新Ember应用程序以使用模块语法导入框架代码,如。 它可以更新使用全局Ember应用程序,并且最终还将支持使用应用程序。 例如,它将重写如下代码: export default Ember . Component...

    java版qq餐厅源码-ask:每日一答

    一直没有模块(module)体系,无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装起来。其他语言都有这项功能,比如 Ruby 的 require、Python 的 import,甚至就连 CSS 都有 @import,但是 JavaScript ...

    angular-es6-di:更好的Angular 1.x依赖注入

    用法ES6带来了具有继承支持的类。 最好在类中编写控制器和服务,并将子类与Angular依赖项重写结合在一起。 该库使您可以做到这一点。 编写一个像这样的控制器: import { Controller } from 'angular-es6-di' ;@ ...

    前端大厂最新面试题-2019字节跳动前端社招面经(二).docx

    CommonJS使用module.exports来导出模块,ES6 Module使用export语句来导出模块。 3. setTimeout和requestAnimationFrame的区别 setTimeout和requestAnimationFrame都是JavaScript中的异步编程机制,但它们的实现...

Global site tag (gtag.js) - Google Analytics