export 和 export default 的相同点以及区别

export 和 export default 的相同点以及区别(不同点)

export 和 export default 的相同点

  1. 都是ES6语法,都可以输出变量、函数;
  2. import引入的文件模块中,“必须”是用export或者export default定义的;

export 和 export default 的用法区别

1. 两者输出模块的语法不同

  • export 输出的变量以及函数必须是声明式的(即:要定义出变量以及函数的名称)
  • export default输出的变量以及函数不需要声明式的
  举例说明:
      (a): export以及export default输出变量-字符串a 
      
			export var str = "a";   // export 输出的“a”要声明定义var str
         	export default "a"     // export default输出的“a”不需要定义
      (b):  export以及export default输出变量 - json格式的对象(可以看作是一个类)
      
      		  export var json = { // export 输出的json对象要声明定义var json
   	            name: 'aa',
   	            age: 18,
   	            sex: '女'
   	          }
   	          export default {
   	            name: 'aa',
   	            age: 18,
   	            sex: '女'
   	          }

      (c): export以及export default输出方法func方法
      
   	 		export function func() { // export 输出的方法名要进行定义 function func()
   	          		console.log('aa');
   	        }
   	        export default function(){ // export default 定义的函数为匿名函数
   	          		console.log('bb');
   	        }

2. 在一个js文件中,export和 export default出现的次数限制不同

  • export 在一个文件中可以出现“多次”
  • export default 在文件中只能出现“一次”
    比如现在创建一个test.js, 在test.js中写入如下代码,不会报错:
      (因为export default只出现了一次,  export 可以出现多次)
      
        export var a = 1;
        export function b() {
          console.log('b')
        }
        export var af = {
          col: 'aa'
        }
        export var e = {
          col: 'ecd'
        }
        export default ['aa', 'aa'];

3. import引入export和export default定义的模块的方式不同

  • 其他js文件,要引入test.js文件中export定义的模块(test.js内容为上述第2点创建的);
    (下边示例可看到,import 后边加了 {},且{}里边的名称要和export输出模块定义的名称保持一致)
import {a,b,af} from ‘test.js’;   
// 在第2点的test.js文件中,export声明了a,b,af,e,看自己需要什么功能,按需加载。注:{}里边的名称要与export定义的名称要一致
  • 其他js文件, 要引入test.js文件中export default定义的模块
    (不需要{},且test名称可以随意取)
import test from ‘test.js’; // import 后边不加{},会默认加载test.js文件中export defalut定义的模块,test名可以随意取


这边顺便提下
export的语法可以如下写:

var firstName = 'Michael';
var lastName = 'Jackson';
function v1() { console.log('v1') }
function v2() { console.log('v2') }

export {
  v1 as streamV1,   // as语法改变了对外输出的名称
  v2 as streamV2,   // as语法改变了对外输出的名称
  firstName,
  lastName
};

在其他文件引用相应的模块:
import { streamV2, firstName} from '../../js/test.js'

import和require的区别

  1. import是ES6的语法,import的模块是编译时调用
  2. require是AMD规范引入方式,require的模块是运行时调用,所以性能比import低
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值