你可以說出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 原創:轉載請聲明

以為對你有效,請點贊!迎接討論指導!

    原文作者:Pengxw
    原文地址: https://segmentfault.com/a/1190000014573684
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞