摘要:模塊的定義模塊是自動(dòng)運(yùn)行在嚴(yán)格模式下并且沒(méi)有辦法退出運(yùn)行的代碼。數(shù)據(jù)模塊函數(shù)模塊類(lèi)模塊模塊的導(dǎo)出給數(shù)據(jù)函數(shù)類(lèi)添加一個(gè),就能導(dǎo)出模塊。數(shù)據(jù)模塊函數(shù)模塊類(lèi)模塊模塊的引用在另外的文件中,我們可以引用上面定義的模塊。導(dǎo)入指定的模塊。
模塊的定義
模塊是自動(dòng)運(yùn)行在嚴(yán)格模式下并且沒(méi)有辦法退出運(yùn)行的JavaScript代碼。
模塊可以是函數(shù)、數(shù)據(jù)、類(lèi),需要指定導(dǎo)出的模塊名,才能被其他模塊訪問(wèn)。
//數(shù)據(jù)模塊 const obj = {a: 1} //函數(shù)模塊 const sum = (a, b) => { return a + b } //類(lèi)模塊 class My extends React.Components { }模塊的導(dǎo)出
給數(shù)據(jù)、函數(shù)、類(lèi)添加一個(gè)export,就能導(dǎo)出模塊。一個(gè)配置型的JavaScript文件中,你可能會(huì)封裝多種函數(shù),然后給每個(gè)函數(shù)加上一個(gè)export關(guān)鍵字,就能在其他文件訪問(wèn)到。
//數(shù)據(jù)模塊 export const obj = {a: 1} //函數(shù)模塊 export const sum = (a, b) => { return a + b } //類(lèi)模塊 export class My extends React.Components { }模塊的引用
在另外的js文件中,我們可以引用上面定義的模塊。使用import關(guān)鍵字,導(dǎo)入分2種情況,一種是導(dǎo)入指定的模塊,另外一種是導(dǎo)入全部模塊。
1、導(dǎo)入指定的模塊。
//導(dǎo)入obj數(shù)據(jù),My類(lèi) import {obj, My} from "./xx.js" //使用 console.log(obj, My)
2、導(dǎo)入全部模塊
//導(dǎo)入全部模塊 import * as all from "./xx.js" //使用 console.log(all.obj, all.sun(1, 2), all.My)默認(rèn)模塊的使用
如果給我們的模塊加上default關(guān)鍵字,那么該js文件默認(rèn)只導(dǎo)出該模塊,你還需要把大括號(hào)去掉。
//默認(rèn)模塊的定義 function sum(a, b) { return a + b } export default sum //導(dǎo)入默認(rèn)模塊 import sum from "./xx.js"模塊的使用限制
不能在語(yǔ)句和函數(shù)之內(nèi)使用export關(guān)鍵字,只能在模塊頂部使用,作為react和vue開(kāi)發(fā)者的你,這個(gè)限制你應(yīng)該很熟悉了。
在react中,模塊頂部導(dǎo)入其他模塊。
import react from "react"
在vue中,模塊頂部導(dǎo)入其他模塊。
修改模塊導(dǎo)入和導(dǎo)出名
有2種修改方式,一種是模塊導(dǎo)出時(shí)修改,一種是導(dǎo)入模塊時(shí)修改。
1、導(dǎo)出時(shí)修改:
function sum(a, b) { return a + b } export {sum as add} import { add } from "./xx.js" add(1, 2)
2、導(dǎo)入時(shí)修改:
function sum(a, b) { return a + b } export sum import { sum as add } from "./xx.js" add(1, 2)無(wú)綁定導(dǎo)入
當(dāng)你的模塊沒(méi)有可導(dǎo)出模塊,全都是定義的全局變量的時(shí)候,你可以使用無(wú)綁定導(dǎo)入。
模塊:
let a = 1 const PI = 3.1314
無(wú)綁定導(dǎo)入:
import "./xx.js" console.log(a, PI)瀏覽器加載模塊
有用過(guò)webpack打包js模塊的同學(xué)可能有經(jīng)驗(yàn),使用webpack打包了多個(gè)js文件,然后放到HTML使用script加載時(shí),如果加載順序不對(duì),就會(huì)出現(xiàn)找不到模塊的錯(cuò)誤。
這是因?yàn)槟K之間是有依賴關(guān)系的,就像你使用jQuery的時(shí)候,必須先加載jQuery的代碼,才能使用jQuery提供的方法。
加載模塊的方法,總是先加載模塊1,再加載模塊2,因?yàn)閙odule類(lèi)型默認(rèn)使用defer屬性。
總結(jié)
模塊還有很多有意思的特性,對(duì)react和vue開(kāi)發(fā)有一定經(jīng)驗(yàn)的人對(duì)這些基本知識(shí)應(yīng)該了如指掌,新手不了解也不用太心急,寫(xiě)幾個(gè)module.js做一下嘗試。如果瀏覽器報(bào)錯(cuò),不能識(shí)別export模塊,你可能需要先加載babel的js插件來(lái)編譯它。
=> 返回文章目錄
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/112358.html
摘要:模塊的定義模塊是自動(dòng)運(yùn)行在嚴(yán)格模式下并且沒(méi)有辦法退出運(yùn)行的代碼。數(shù)據(jù)模塊函數(shù)模塊類(lèi)模塊模塊的導(dǎo)出給數(shù)據(jù)函數(shù)類(lèi)添加一個(gè),就能導(dǎo)出模塊。數(shù)據(jù)模塊函數(shù)模塊類(lèi)模塊模塊的引用在另外的文件中,我們可以引用上面定義的模塊。導(dǎo)入指定的模塊。 模塊的定義 模塊是自動(dòng)運(yùn)行在嚴(yán)格模式下并且沒(méi)有辦法退出運(yùn)行的JavaScript代碼。 模塊可以是函數(shù)、數(shù)據(jù)、類(lèi),需要指定導(dǎo)出的模塊名,才能被其他模塊訪問(wèn)。 //...
摘要:最近買(mǎi)了深入理解的書(shū)籍來(lái)看,為什么學(xué)習(xí)這么久還要買(mǎi)這本書(shū)呢主要是看到核心團(tuán)隊(duì)成員及的創(chuàng)造者為本書(shū)做了序,作為一個(gè)粉絲,還是挺看好這本書(shū)能給我?guī)?lái)一個(gè)新的升華,而且本書(shū)的作者也非常厲害。 使用ES6開(kāi)發(fā)已經(jīng)有1年多了,以前看的是阮一峰老師的ES6教程,也看過(guò)MDN文檔的ES6語(yǔ)法介紹。 最近買(mǎi)了《深入理解ES6》的書(shū)籍來(lái)看,為什么學(xué)習(xí)ES6這么久還要買(mǎi)這本書(shū)呢?主要是看到Daniel A...
摘要:前端日?qǐng)?bào)精選浮點(diǎn)數(shù)精度之謎前端面試必備基本排序算法從賀老微博引出的遍歷器加速那些奧秘進(jìn)階之深入理解數(shù)據(jù)雙向綁定全棧天中文深入理解筆記用模塊封裝代碼前端架構(gòu)經(jīng)驗(yàn)分享周二放送自制知乎專(zhuān)欄譯在大型應(yīng)用中使用的五個(gè)技巧掘金開(kāi)發(fā)指南眾成 2017-08-02 前端日?qǐng)?bào) 精選 JavaScript 浮點(diǎn)數(shù)精度之謎前端面試必備——基本排序算法從賀老微博引出的遍歷器(Iterators)加速那些奧秘J...
閱讀 1958·2021-11-22 15:33
閱讀 3001·2021-11-18 10:02
閱讀 2602·2021-11-08 13:16
閱讀 1617·2021-10-09 09:57
閱讀 1366·2021-09-30 09:47
閱讀 2001·2019-08-29 13:05
閱讀 3064·2019-08-29 12:46
閱讀 1004·2019-08-29 12:19