国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Module的語法, JS中的 export 和 import

這篇具有很好參考價值的文章主要介紹了Module的語法, JS中的 export 和 import。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

在ES6之前, 社區(qū)制定了一些模塊加載方案, 最主要的有CommonJS和AMD兩種. 前者用于服務器,后者, 用于瀏覽器

ES6模塊的設計思想是盡量靜態(tài)化, 使得編譯時就能確定模塊的依賴關系

ES6模塊不是對象, 而是通過export命令顯示指定輸出的代碼,再通過import命令輸入.

// ES6模塊

import { stat, exists, readFile } from 'fs'

上面代碼的實質(zhì)是從fs模塊加載3個方法, 而不加載其他方法. 這種加載成為"編譯時加載"或"靜態(tài)加載', 即ES6可以在編譯時就完成模塊加載

注意:? ? ?

?????????在ES6模塊中, 頂層的this指向undefined, 不應該在頂層代碼中使用this.

export 命令

export 命令用于規(guī)定模塊的對外接口.?

一個模塊就是一個獨立的文件, 這個文件內(nèi)部的所有變量,外部無法獲取. 如果希望外部能夠讀取模塊內(nèi)部的某個變量,就必須使用export 關鍵字輸出該變量.

// 下面js文件使用export輸出變量


    // profile.js
    export var firstName = 'wei'
    export var lastName = '健力寶'
    export var year = '1958'


    // 與前一種寫法是等價的, 優(yōu)先考慮這種寫法. 可以再腳本尾部一眼看清楚輸出哪些變量
    var firstName = 'wei'
    var lastName = '健力寶'
    var year = '1958'    
    export {
        firstName,
        lastName,
        year
    }

    // 除了輸出變量,還可以輸出函數(shù)或class
    export function multiply(x,y){
        return x * y
    }
    
    

? ? ? ? 使用as關鍵字重命名

    function v1() { ... }
    function v2() { ... }
        
    export {
        v1 as streamV1,
        v2 as streamV2,
        v2 as streamLatestVersion
    }
    // 上面代碼使用as關鍵字重命名了函數(shù)v1和v2的對外接口,重命名后v2可以用不同的名字輸出

? export 命令規(guī)定的是對外的接口, 必須與模塊內(nèi)部的變量建立一一對應的關系

// 報錯
export 1

// 報錯
var m = 1
export m

// 上面兩種寫法都會報錯, 因為沒有提供對外的接口. 
// 第一種寫法直接輸出1, 第二種寫法通過變量m依然直接輸出1. 1只是一個值, 不是接口


// 正確寫法
// 寫法1
export var m = 1

// 寫法2
var m = 1
export { m }

// 寫法3
var n = 1
export { n as m}
 
// 以上三種都是正確的, 規(guī)定了對外的接口m. 其他腳本通過這個接口取得值1. 
// 它們的實質(zhì)是, 在接口名與模塊內(nèi)部變量之間建立一一對應.

? export 語句輸出的接口與其對應的值是動態(tài)綁定關系, 通過該接口可以渠道模塊內(nèi)部實時的值

export var foo  = 'bar'

setTimeout(() => foo = 'baz', 5000)

// 上面代碼輸出變量foo, 值為bar, 5000ms之后變成baz.
// 這一點和CommonJS不同, CommonJS模塊輸出的是值的緩存.

?最后, export命令可以出現(xiàn)在模塊的任意位置,只要處于模塊頂端就可以.? 如果處于塊級作用域內(nèi),? ?就會報錯.?

function  foo () {
    export default 'bar'
}

foo()
// 報錯

import 命令

使用export 命令定義了模塊的對外接口后, 其他js文件可以通過import命令加載這個模塊.

    // main.js
    import { firstName, lastName, year } from './profile'
    
    // from指定的位置可以是相對位置也可以是絕對位置.

    /*
        import 命令用于加載profile.js文件 import命令接受一個對象,里面指定要從其他
        模塊導入的變量名, 大括號中的變量必須與被導入模塊對外接口的名稱相同.
    */

?如果要為輸入的變量重新取一個名字,要在import 命令中使用as關鍵字

import { firstName as surname } from './profile'

? import 命令具有提升效果, 會提升整個模塊的頭部并首先執(zhí)行

foo()

import { foo } from 'module'

// 不會報錯, 因為import的執(zhí)行早于foo的調(diào)用
// 本質(zhì)是,import命令是在編譯階段執(zhí)行的,在代碼運行之前

模塊的整體加載

除了指定加載某個輸出值, 還可以整體加載(星號*)來指定一個對象.

    // circle.js
    export function area(radius) {
        return Math.PI * radius * radius
    }

    export function circumference(radius) {
        return 2 * Math.PI * radius
    }

    // main.js
    import { area, circumference }  from './circle'
    console.log('圓面積', area(4) );
    console.log('圓周長', circumference(14) )

    // 整體加載的寫法
    import * as circle from './circle'
    console.log('圓面積', circle.area(4) );
    console.log('圓周長', circle.circumference(14) );

export default 命令

export default 命令為模塊指定默認輸出

// export-default.js
export default function() {  // 默認輸出是一個函數(shù)
    console.log('foo')
}


// import-default.js
import customName from './export-default'

customName() // 輸出foo

//上面的import命令可以用任意名稱指向export-default輸出的方法.這時import不需要大括號


// export default用在非匿名函數(shù)也是可以的
export default function foo() {  
    console.log('foo')
}

import foo from 'foo'
// 對應的import語句不需要使用大括號


// 或者寫成

function foo() {
    console.log('foo')
}

export foo
// 需要使用大括號

本質(zhì)上, export default 就是輸出一個叫做default的變量或方法, 然后系統(tǒng)允許我們?yōu)樗∪我饷?

export和import的復合寫法

如果在一個模塊中先輸入后輸出同一個模塊,import語句可以與export語句寫在一起.文章來源地址http://www.zghlxwxcb.cn/news/detail-431939.html

export { foo, bar?} from 'module'

//等同于

import { foo, bar } from 'module'
export { foo, bar }

到了這里,關于Module的語法, JS中的 export 和 import的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Three.js系列-報錯export ‘Geometry‘ (imported as ‘THREE‘) was not found in ‘three‘

    Three.js系列-報錯export ‘Geometry‘ (imported as ‘THREE‘) was not found in ‘three‘

    遇到這種報錯,是因為你使用的是低版本的語法,需要修改為最新的,three.js 在 R125版本后將Geometry替換使用BufferGeometry 所以只需要搜索代碼中的THREE.Geometry 小伙伴們,先寫到這里啦,我們明天再見啦~~ 大家要天天開心哦 歡迎大家指出文章需要改正之處~ 學無止境,合作共贏 歡

    2024年02月08日
    瀏覽(22)
  • setup語法糖報錯 vue-router.mjs:3451 TypeError: Failed to fetch dynamically imported module:

    當直接將setup寫在script標簽上 會報錯 vue-router.mjs:3451 TypeError: Failed to fetch dynamically imported module: 這是setup語法糖導致的錯誤,此時就老老實實按照vue3原本的寫法export default{xxxxxx}即可解決 vue3中setup語法糖寫法: 原始正常寫法: 改成原始寫法后就不報錯了!??!看來還是不能偷

    2024年02月12日
    瀏覽(19)
  • “TypeError: utils request jS WEBPACK IMPORTED MODULE O .default is undefined‘報錯

    “TypeError: utils request jS WEBPACK IMPORTED MODULE O .default is undefined‘報錯

    寫項目時報下列錯誤,找了半天,結(jié)果才發(fā)現(xiàn)自己在request.js中少寫了一行代碼 一定不要少些代碼 request.js完整代碼

    2024年02月22日
    瀏覽(46)
  • python中import js2py報錯:No module named ‘js2py‘

    python中import js2py報錯:No module named ‘js2py‘

    這種錯誤的原因是沒有安裝js2py 安裝js2py的方法步驟: 1.首先使用快捷鍵”Ctrl+R“運行打開任務欄; 2.在任務欄輸入cmd,點擊確定; 3.找到python的安裝路徑; 4.這是我的安裝路徑: 這是我的python安裝路徑 5.在命令提示符窗口中切換到該路徑: 6.然后輸入:pip install js2py,點擊

    2023年04月08日
    瀏覽(35)
  • Uncaught SyntaxError: The requested module ‘…/xx/xx/x.js’ does not provide an export named ‘default’

    Uncaught SyntaxError: The requested module ‘…/xx/xx/x.js’ does not provide an export named ‘default’

    今天遇到這個報錯 雖然很低級 ,正因為如此所以做個記錄吧。今天在一個文件中import 一個文件, 出現(xiàn)了如下報錯: Uncaught SyntaxError: The requested module ‘…/xx/xx/x.js’ does not provide an export named ‘default’ 斗膽翻譯一下這句話:意思是這是一個未捕獲的語法錯誤:請求的這個模

    2024年01月21日
    瀏覽(27)
  • 前端vue打包時遇到‘default‘ is not exported by node_modules/vue/dist/vue.runtime.esm-bundler.js, imported by

    前端vue打包時遇到‘default‘ is not exported by node_modules/vue/dist/vue.runtime.esm-bundler.js, imported by

    主要原因是由于用到的組件進行npm i時默認使用的是vue2,不支持vue3,但是前端框架使用的是vue3,所以導致重構(gòu)編碼時會報錯, 網(wǎng)上查詢說 ????????當我們在使用rollup編譯es6時,可能會遇到以下報錯問題,需要 安裝@rollup/plugin-commonjs插件 npm install @rollup/plugin-commonjs 最后,

    2024年02月05日
    瀏覽(27)
  • export和export default和import的說明

    目錄 1.說明 2.export 3.import 4.export default 5.總結(jié) 1.說明 ES6中,export與export default均可用于導出常量、函數(shù)、文件、模塊等。 import用于導入其他被導出的常量、函數(shù)、文件、模塊等。 2.export 一個獨立的文件,該文件內(nèi)部的變量,方法等,外部無法獲取。如果想讀取其他vue文件中的

    2024年02月05日
    瀏覽(32)
  • Javascript 模塊導入導出(import export)

    筆者開始學習 Javascript 的時候,對模塊不太懂,不知道怎么導入模塊,導出模塊,就胡亂一通試 比如 import xx from \\\'test.js\\\' 不起作用,就加個括號 import {xx} from \\\'test.js\\\' 反正總是靠蒙,總有一種寫法是對的,其實還是沒有理解,還是不懂 尤其是在當初寫 www.helloworld.net 網(wǎng)站的時候

    2024年02月05日
    瀏覽(35)
  • Vue3安裝pixi.js 項目無法識別 ?. 語法,導致報錯Module parse failed: Unexpected token

    ?error ?in ./node_modules/@pixi/assets/lib/resolver/parsers/resolveTextureUrl.mjs Module parse failed: Unexpected token (9:62) You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders | ? test: loadTextures.test, | ? parse: (value) = ({ ? ? resolut

    2024年02月11日
    瀏覽(35)
  • Angular 中declarations,imports,providers,exports的用法?

    在Angular中,declarations、imports、providers和exports是NgModule(模塊)裝飾器中的關鍵配置項,用于定義和配置Angular應用的模塊。每個模塊在應用中扮演不同的角色,以下是它們的主要用法: declarations(聲明): declarations 數(shù)組中列出了當前模塊中所有屬于這個模塊的組件、指令和

    2024年02月04日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包