ES6规范import和export用法总结

简介: JavaScript模块规范在任何一个大型应用中模块化是很常见的,与一些更传统的编程语言不同的是,JavaScript6之前还不支持原生的模块化;Javascript社区做了很多努力,在现有的运行环境中,实现"模块"的效果。

JavaScript模块规范
在任何一个大型应用中模块化是很常见的,与一些更传统的编程语言不同的是,JavaScript6之前还不支持原生的模块化;Javascript社区做了很多努力,在现有的运行环境中,实现"模块"的效果。通行的JavaScript模块规范主要有两种:CommonJS、AMD


CommonJS规范是服务器端Javascript模块规范(同步)
Node.js的模块系统,就是参照CommonJS规范实现的。NPM也遵循了commonJS定义的包规范,从而形成了一套完整的生态系统


AMD意思是"异步模块定义",是前端模块规范
RequireJS就是实现了AMD规范的

CommonJS module以服务器端为第一的原则发展,选择同步加载模块。它的模块是无需包装的,但它仅支持对象类型(objects)模块
AMD以浏览器为第一的原则发展,选择异步加载模块。它的模块支持对象、函数、构造器、字符串、JSON等各种类型的模块,因此在浏览器中它非常灵活

ES6模块的import和export用法总结
ES6之前已经出现了js模块加载的方案,最主要的是
commonjs 服务器 同步加载 如nodejs
AMD 浏览器 异步加载 如requirejs

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

运行时加载
CommonJS模块是对象,实质是整体加载模块(即加载fs的所有方法),生成一个对象,然后再从这个对象上面读取其中3个方法这种加载称为“运行时加载”,因为只有运行时才能得到这个对象

编译时加载
ES6模块不是对象,是通过export命令显式指定输出的代码,再通过import命令输入
的实质是从fs模块加载3个方法,其他方法不加载。这种加载称为“编译时加载”或者静态加载,即ES6可以在编译时确定模块的依赖关系,以及输入和输出的变量,效率更高

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变量标识符形式暴露给其他文件而被读取到
1.export {sex,echo}

  1. [不用] export default命令,为模块指定默认输出 其实只是输出一个叫做default的变量
    (1)[只能默认输出单个,不能是对象]
    var abc=function(){}

        export default abc
    

import xx from './a.js'
xx()

(2)如果想在一条import语句中,同时输入默认方法和其他接口

      var abc=function(){}
      var cba=function(){}

var bac=function(){}

          export default abc
          export {cba}

import xx,{cba,bac} from './a.js'
xx() cba() bac()

// b.js
通过import获取a.js文件的内部变量,{}括号内的变量来自于a.js文件export出的变量标识符。
import {sex,echo} from "./a.js"
console.log(sex) // boy
echo(sex) // boy
1.import命令接受一对大括号,里面指定要从其他模块导入的变量名
大括号里面的变量名,必须与被导入模块(profile.js)对外接口的名称相同
import {sex,echo} from "./a.js"

2.除了指定加载某个输出值,还可以使用整体加载,即用星号(*)指定一个对象,所有输出值都加载在这个对象上面
import * as xx from './circle';
console.log('圆面积:' + xx.area(4));

以上是export与import的基本用法,再进行拓展学习
前面的例子可以看出,b.js使用import命令的时候,用户需要知道a.js所暴露出的变量标识符
使用export default命令,为模块指定默认输出,这样就不需要知道所要加载模块的变量名

//a.js
var sex="boy";
export default sex(sex不能加大括号)
//一个文件内最多只能有一个export default
其实此处相当于为sex变量值"boy"起了一个系统默认的变量名default,自然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

import和export这两个命令现在在任何浏览器中都是不支持的, 同时babel也无法将其转换为浏览器支持的ES5, 原因在于:
babel只是个翻译,假设a.js 里 import 了 b.js, 对a.js进行转码,只是翻译了a.js,并不会把b.js的内容给读取合并进来, 如果想在最终的某一个js里包含 a.js,b.js 的代码,那就需要用到打包工具

所以我在这里讲解一下如何使用webpack工具将带有import和export语法的JS文件, 通过打包工具生成所有浏览器都支持的单个JS文件

目录
相关文章
|
5月前
|
关系型数据库 应用服务中间件 nginx
容器化部署引擎Docker
Docker是一种轻量级容器化技术,通过镜像打包应用及依赖,实现跨环境一致部署。它利用沙箱机制隔离容器,解决开发、测试、生产环境差异与组件兼容性问题,相比虚拟机更高效便捷,提升应用交付效率。
容器化部署引擎Docker
|
2月前
|
人工智能 安全 Linux
90分钟挖出20年Linux漏洞,Claude 5.0内测曝光:软件工程正在被重写
Claude 5.0(Mythos)内测标志开发范式革命:从“人写代码”迈向“人调度AI”。它具备系统级漏洞挖掘、自主安全研究、多智能体协同等能力,推动工程师转型为任务拆解者与智能体调度者。AI不是替代,而是重构角色——人类专注定义问题与掌控系统。
|
7月前
|
算法 机器人 计算机视觉
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
236 0
|
8月前
|
人工智能 数据挖掘 大数据
人工智能模型决策过程:机器与人类协作成效
决策智能(DI)融合AI与人类判断,提升商业决策质量。通过数据驱动的预测与建议,结合人机协作,实现更高效、精准的业务成果,推动企业迈向数据文化新阶段。(238字)
|
5月前
|
中间件 API Go
开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:OPA 集成指南:从原理到实践
GoWind Admin 集成 OPA,实现企业级权限管控。基于“策略即代码”理念,通过 Rego 语言统一管理鉴权逻辑,支持 RBAC、多租户等复杂场景,开箱即用,助力中后台系统安全高效落地。
351 3
|
5月前
|
人工智能 弹性计算 安全
阿里云组合购套餐云产品配置及价格汇总,覆盖众多热门上云场景,组合购买价格更实惠
对于很多上云用户来说,业务上云往往不仅需要云服务器,同时还需要建站产品、oss云存储产品、SSL数字证书等其他云产品,为进一步降低企业用户上云的技术门槛与成本投入,阿里云推出各种云产品的“超值组合购”专项活动。本文为大家汇总了目前云产品组合购中各个套餐的主要云产品信息及价格,以供大家参考和选择。
|
5月前
|
消息中间件 Dubbo Java
深挖红黑树底层原理
深入解析红黑树底层原理,涵盖定义、特性、旋转与插删操作,结合Java源码实现及阿里生产实践,全面掌握高频面试与实战核心要点。
|
人工智能 自然语言处理 数据可视化
实践教程|如何创建一个WhatsApp AI Chatbot
无需代码!使用阿里云百炼 + Chat App 消息服务,10 分钟创建 WhatsApp AI 聊天机器人,支持企业知识库问答
889 0
|
存储 缓存 负载均衡
Nginx代理缓存机制
【10月更文挑战第2天】
462 4
Bert可以提取关键词了:KeyBERT的介绍与使用
Bert可以提取关键词了:KeyBERT的介绍与使用
2954 1
Bert可以提取关键词了:KeyBERT的介绍与使用

热门文章

最新文章