摘要:注意命令會(huì)忽略模塊的方法。這時(shí),也可以將的屬性或方法,改名后再輸出上面代碼表示,只輸出模塊的方法,且將其改名為。
require、import、export CommonJS規(guī)范
require()和module.exports
使用立即執(zhí)行函數(shù)的寫(xiě)法,外部代碼無(wú)法讀取內(nèi)部的_count變量
let module = (function() { let _count = 0 let m1 = function() { console.log(_count) } let m2 = function() { console.log(_count + 1) } return { m1: m1, m2: m2 } })ES6規(guī)范
使用export導(dǎo)出,用于規(guī)定模塊的對(duì)外接口
一個(gè)模塊是一個(gè)獨(dú)立文件,文件內(nèi)的所有變量或函數(shù)或類外部無(wú)法獲取,如果希望獲取到,必須使用export關(guān)鍵字
(1) 輸出變量或者函數(shù)、類
輸出變量
// profile.js export let firstName = "Mc" export let lastName = "IU" export const year = 2017
另一種寫(xiě)法,優(yōu)先考慮下面這種寫(xiě)法
let firstName = "Mc" let lastName = "IU" const year = 2017 export {firstName, lastName, year}
輸出一個(gè)函數(shù)
function v1() { } function v2() { } export { v1 as namedV1, // as關(guān)鍵字重命名 v2 }
(2) export語(yǔ)句輸出的接口,與其對(duì)應(yīng)的值是動(dòng)態(tài)綁定關(guān)系,可以取到模塊內(nèi)部實(shí)時(shí)的值
export let foo = "baz" setTimeout(() => foo = "baz", 500) // 輸出foo值為bar,500毫秒之后變?yōu)閎az
(3) export default命令,默認(rèn)輸出
// default.js // 匿名函數(shù) export default function() { console.log("foo") } // 非匿名函數(shù) export default function foo() { console.log("foo") } // 另一種寫(xiě)法 function foo() { console.log("foo") } export default foo
default后不能跟變量聲明語(yǔ)句
// 錯(cuò)誤 // export default let a = 1 let a = 1 export default a
輸出類
export default class {} import Name from "Myclass" let o = new Name()
(4) 需要注意的正確的寫(xiě)法
// 錯(cuò)誤寫(xiě)法 // ①export 1 // ②let m = 1; export m // 變量的export正確寫(xiě)法 export let m = 1 let m = 1 export {m} let n = 1 export {n as m} // 函數(shù)或類export正確寫(xiě)法 export function f() {} function f() {} export {f}
使用import導(dǎo)入,用于獲取其他模塊提供的功能
使用export命令定義了模塊的對(duì)外接口后,其他JS文件就可以通過(guò)import來(lái)加載這個(gè)模塊
(1) 引入變量
// main.js import {firstName, lastName, year} from "./profile" function setName(element) { element.textContent = firstName + " " + lastName } // 同樣可重命名 import {lastName as listame} from "./profile"
(2) import具有提升效果
foo() import {foo} from "my_module" // 不會(huì)報(bào)錯(cuò),可正常調(diào)用foo函數(shù)
(3) 整體加載
// circle.js function area(radius) { return Math.PI * radius * radius } function circumference(radius) { return 2 * Math.PI * radius }
// main.js import {area, circumference} from "./circle" // 逐個(gè)加載 area(4) circumference(14) import * as circle from "./circle" // 整體加載 circle.area(4) circle.circumference(14)
(4) 引入默認(rèn)導(dǎo)出
// 默認(rèn)導(dǎo)出 export default function crc32() {} import anyName from "crc32" // 非默認(rèn)導(dǎo)出(注意大括號(hào)) export function crc32() {} import {crc32} from "crc32"
模塊的繼承
假設(shè)有一個(gè)circleplus模塊,繼承了circle模塊:
// circleplus.js export * from "circle" // 繼承了circle的所有屬性和方法 export let e = 2.718 export default function(x) { return Math.exp(x) }
上面代碼中的export ,表示再輸出circle模塊的所有屬性和方法。注意export 命令會(huì)忽略circle模塊的default方法。
然后,上面代碼又輸出了自定義的e變量和默認(rèn)方法。
這時(shí),也可以將circle的屬性或方法,改名后再輸出:
// circleplus.js export {area as circleArea} from "cricle"
上面代碼表示,只輸出circle模塊的area方法,且將其改名為circleArea。
加載方法如下
// math.js import * as math from "circleplus" import exp from "circleplus" console.log(exp(math.e))
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/83925.html
摘要:我覺(jué)得那時(shí)他可能并沒(méi)有料到,這一規(guī)則的制定會(huì)讓整個(gè)前端發(fā)生翻天覆地的變化。前言 作為一名前端工程師,每天的清晨,你走進(jìn)公司的大門,回味著前臺(tái)妹子的笑容,摘下耳機(jī),泡上一杯茶,打開(kāi) Terminal 進(jìn)入對(duì)應(yīng)的項(xiàng)目目錄下,然后 npm run start / dev 或者 yarn start / dev 就開(kāi)始了一天的工作。 當(dāng)你需要進(jìn)行時(shí)間的轉(zhuǎn)換只需要使用 dayjs 或者 momentj...
摘要:聯(lián)想到我在微信小程序上的開(kāi)發(fā)體驗(yàn),真心覺(jué)得如果有熱更新機(jī)制的話,開(kāi)發(fā)效率要高很多。熱更新示例下面通過(guò)例子來(lái)進(jìn)一步解釋熱更新機(jī)制。 想必作為前端大佬的你,工作中應(yīng)該用過(guò) webpack,并且對(duì)熱更新的特性也有了解。如果沒(méi)有,當(dāng)然也沒(méi)關(guān)系。 下面我要講的,是我對(duì) Webpack 熱更新機(jī)制的一些認(rèn)識(shí)和理解,不足之處,歡迎指正。 首先: 熱更新是啥? 熱更新,是指 Hot Module Re...
摘要:而通過(guò)實(shí)現(xiàn)名為的標(biāo)準(zhǔn)模塊,完美的解決了模塊導(dǎo)入問(wèn)題。通常都被稱為包管理器,而這也是它最大的特色。例如,接受請(qǐng)求發(fā)送響應(yīng)。該模塊主要處理文件相關(guān)內(nèi)容,其中大多數(shù)都是文件讀寫(xiě)功能。 在上一篇文章中,我們簡(jiǎn)單的介紹了 Node.js 。了解到它基于 JavaScript、天生異步、擁有大量的第三方類庫(kù)。本文將會(huì)在之前的基礎(chǔ)上,對(duì) Node.js 進(jìn)行更深入的介紹。其中主要內(nèi)容包括: Nod...
摘要:你了解嗎核心概念的核心概念大致分為四個(gè)入口出口插件,是一個(gè)打包模塊化的工具,專注構(gòu)建模塊化項(xiàng)目。優(yōu)點(diǎn)只更新變更內(nèi)容,以節(jié)省寶貴的開(kāi)發(fā)時(shí)間。在構(gòu)建過(guò)程中,將引用的靜態(tài)資源路徑修改為上對(duì)應(yīng)的路徑??梢酝ㄟ^(guò)在啟動(dòng)時(shí)追加參數(shù)來(lái)實(shí)現(xiàn)提取公共代碼。 你了解Webpack嗎? 核心概念 Webpack的核心概念大致分為四個(gè):入口、出口、loader、插件,是一個(gè)打包模塊化js的工具,專注構(gòu)建模塊化項(xiàng)...
摘要:擴(kuò)展應(yīng)用模塊功能介紹擴(kuò)展應(yīng)用由很多部分組成,其中主要模塊為為了避免由于翻譯原因?qū)е碌膯?wèn)題,因此在下文中對(duì)相關(guān)模塊的稱呼一律采用上面的英文。附錄官方開(kāi)發(fā)文檔英建議有英文閱讀能力的人閱讀此文檔。 概述 本文通過(guò)對(duì)chrome插件的各個(gè)部分進(jìn)行快速的介紹,從而讓大家了解插件各個(gè)部分的關(guān)系,并且知道如何將其進(jìn)行組裝成一個(gè)完整的chrome插件。 由于chrome官方文檔中對(duì)于如何從零開(kāi)發(fā)一個(gè)c...
閱讀 1459·2021-11-22 13:52
閱讀 1281·2021-09-29 09:34
閱讀 2690·2021-09-09 11:40
閱讀 3031·2019-08-30 15:54
閱讀 1255·2019-08-30 15:53
閱讀 971·2019-08-30 11:01
閱讀 1354·2019-08-29 17:22
閱讀 1943·2019-08-26 10:57