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