你可以说出export export default || model.exports exports 的区别吗(一)
一.前言:
用模块写代码,为什么要用模块来写代码:ES6之前,在js中定义的一切,都是共享一个全局作用域的,随着web应用变得复杂,这样做会引起如:命名冲突和安全问题、于是引入了模块。
二.清楚一个概念:
- export 和 export default 是ES6 里面的API(本文只介绍ES6的)
- exports 和 model..exports 是node.js里面的API,更切确的说是Common.js里的(就和require 和 import 相似)
三.export
// a.js
export let a = 1 //输出变量
export fn(){...} //输出函数
export class Class{
constructor(a,b){
this.a = a;
this.b = b;
}
} //输出类
fn2(){...} //定义一个函数
export fn2; //建议以这种在末尾统一输出的方式export
export {fn2 ,fn}; //导出多个变量,要有{}
export {fn2 as asFn2}; //导出时重命名,要有{}
// b.js
import {fn2} from 'a.js'; //export 的引入要加{},单个也要加;
import {fn2 , a , Class as Class1} from 'a.js' //引入多个要用 ‘,’隔开;
import * as example from 'a.js'; //引入整个模块
example.a = 1; //使用模块,在有很多需要引入时,建议这种方法;
四.export defalut(模块的默认值)
// a.js
export default function(num1,num2){...} //导出默认值,只能导出一个
export let a = 1; //导出变量a
// b.js
import any from 'a.js'; //引入默认值,any 可以是任意的名字,不用{}
import {a} from 'a.js'; //引入a ;
import any,{a} from 'a.js' //默认值必须放在非默认值前面
import {default as any , a} from 'a.js' //有重命名就要大括号包起来
总结:
export :
- 单个不用括号,多个要用{},as也要用{}; (因为export default 只能export 一个);
import
- 除了* as ,别的重命名都要用{}
- export 要用{}
- 既有export 和 export default时:import any,{a} from 'a.js’ 默认写前面
by:Beast 原创:转载请声明
觉得对你有用,请点赞!欢迎探讨指点!
你可以说出export export default || model.exports exports 的区别吗(一)的更多相关文章
- module.exports,exports,export和export default,import与require区别与联系【原创】
还在为module.exports.exports.export和export default,import和require区别与联系发愁吗,这一篇基本就够了! 一.首先搞清楚一个基本问题: modu ...
- module.exports,exports,export和export default,import与require区别与联系
还在为module.exports.exports.export和export default,import和require区别与联系发愁吗,这一篇基本就够了! 一.首先搞清楚一个基本问题: modu ...
- exports module.exports export export default之间的关系
exports 和module.exports是CommonJS模块规范 export export default是ES6模块的规范,两者完全是不同的概念. node应用由模块组成,采用的是Comm ...
- ES6的export与Nodejs的module.exports
原文:https://www.cnblogs.com/lxg0/p/7774094.html module.exports与exports,export与export default之间的关系和区别 ...
- export export defalut
require/exports 和 import/export 形式不一样 require/exports 的用法只有以下三种简单的写法: const fs = require('fs') expor ...
- node.js module.exports & exports & module.export all in one
node.js module.exports & exports & module.export all in one cjs const log = console.log; log ...
- Sqoop导入数据到mysql数据库报错:ERROR tool.ExportTool: Error during export: Export job failed!(已解决)
问题描述: Container killed by the ApplicationMaster. Container killed on request. Exit code is 143 Conta ...
- vue使用填坑之:model和v-model的区别
v-model通常用于input的双向数据绑定 <input v-model="parentMsg">,也可以实现子组件到父组件数据的双向数据绑定:首先说说v-mode ...
- ES6中export , export default , import模块系统总结
最近在学习使用Webpack3的时候发现,它已经可以在不使用babel的情况下使用ES6的模块加载功能了. 说到ES6的模块加载功能,我们先复习一下CommonJS规范吧: 一 . CommonJS ...
随机推荐
- JAVA——选择,循环,顺序控制结构
目录 一.顺序控制 二.选择控制 2.1分支控制 2.1.1单分支 2.1.2双分支 2.1.3分支控制if-else 2.1.4嵌套分支 2.2switch分支结构 细节讨论 练习 题目1 题目2 ...
- PHP pdf转png linux版本
linux下 安装 ImageMagick 及其 php imagick扩展 PHP版本 7.1.29 : ImageMagick版本 ImageMagick-7.0.8-68: PHP扩展imagi ...
- Kubernetes系列(四) StatefulSet
作者: LemonNan 原文地址: https://juejin.im/post/6870071267438329869 Kubernetes系列(四) StatefulSet Kubernetes ...
- 线程的sleep()方法和yield()方法有什么区别?
sleep()方法和yield()方法的区别: sleep()方法给其他线程运行机会时,不考虑线程的优先级,因此会给低优先级的线程运行机会:yield()方法只会给相同优先级或更高优先级的线程运行机会 ...
- python 之 matplotlib 练习
import numpy as npimport matplotlib.pyplot as plt x = np.linspace(0,10,1000)# 自变量y = np.sin(x) + 1 # ...
- JVM学习总结(一)
JVM--Java虚拟机 1.类加载器 JVM虚拟机的类加载器有三个 bootstrapClassLoader 引导类加载器 是有C语言编写,在JVM虚拟机启动时 加载到内存中负责加载rt.jar夹包 ...
- 在kali中安装两个版本的python
在kali中安装两个版本的python 在kali中已经预装了两个版本的python,但是没有装pip(>︿<). 这时使用python或者python3表示python3:使用pytho ...
- Java多线程【三种实现方法】
java多线程 并发与并行 并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行 并行:一组程 ...
- web服务器-nginx配置文件
web服务器-nginx配置文件 一 nginx配置文件 #启动子进程程序的默认用户 #user nobody #一个主进程和多个工作进程.工作进程是单进程的,且不需要特殊授权即可运行:这里定义的是工 ...
- JavaScript 02 运算符,分支结构
一元换算符 字符串类型 对于字符串,来说自增或自减会自动进行类型转换 1.var str = '10' 自动转换 从string转为number 2.str++ NaN 对于转化不成功的string类 ...