前言
本篇文章主要為大家敘述關(guān)于JavaScript中的export和import,這兩個常見的報錯。
報錯:Uncaught SyntaxError: Cannot use import statement outside a module
上面標書的是無法在module以外使用import,在網(wǎng)上進行查閱之后才了解到,這是由于script標簽默認是使用JavaScript語言,使用ES6的語法會發(fā)生解析錯誤,需要在script標簽中加入type=“module”,具體如下:
<script type="module"> import Rotation from '../js/ui.js' Rotation(); </script>
仔細看,這樣就不會出現(xiàn)報錯吧。
報錯:Uncaught SyntaxError: The requested module ‘…/js/ui.js’ does not provide an export named ‘default’
第一錯誤解決了,但隨之而來的是控制臺又拋出了第二個錯誤:
現(xiàn)在我來說說我的,目標JS文件中沒有default導出,因此,我的JS文件就是這樣:
function Rotation() { let lbt = document.querySelectorAll('.zh-lbt'); for (let i = 0; i < lbt.length; i++) { let lbtNum = Number(lbt[i].getAttribute('num'))||1 console.log(lbtNum); } } export {Rotation};
常規(guī)來說沒啥問題,export default和export只是暴露目標數(shù)有區(qū)別,因此不會是語法報錯,是不是我的引入出現(xiàn)問題,隨之做出下來改變
<script type="module"> import Rotation from '../js/ui.js' Rotation(); </script>
加了一個大括號{},修改為了
<script type="module"> import {Rotation} from '../js/ui.js' Rotation(); </script>
發(fā)現(xiàn)果然控制臺沒有報錯,并出現(xiàn)了結(jié)果
這個問題我認為其原因是export語法可以向外暴露多個目標,所以在引入時需要通過“{}”以對象經(jīng)行引入,export default只能向外暴露一個,所以可以不用寫{}。
可卻不是。
在改為export default后,才發(fā)現(xiàn)export default在引入時,不能加{},否則會報錯。
export default{ Rotation:function () { let lbt = document.querySelectorAll('.zh-lbt'); for (let i = 0; i < lbt.length; i++) { let lbtNum = Number(lbt[i].getAttribute('num'))||1 console.log(lbtNum); } } }
<script type="module"> import {Rotation} from '../js/ui.js' Rotation.Rotation(); </script>
此時控制臺會報錯
同理此時只要去掉“{}”,就不會報錯了,并能正確打印上面的結(jié)果。
歡迎大家關(guān)注更多精彩內(nèi)容!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/130288.html
摘要:一旦聲明,常量的值不能被改變。頂層對象的屬性頂層對象,瀏覽器中指的是對象,在中指的是對象。中新增了兩個命令和,命令用于暴露出模塊對外的接口,而則用于輸入某一模塊。 1.聲明變量的關(guān)鍵字:const 和 let JavaScript ES6中引入了另外兩個聲明變量的關(guān)鍵字:const和let。在ES6中,我們將很少能看到var了。 const關(guān)鍵字 const聲明一個只讀的常量。一旦聲明...
摘要:以下簡稱是語言的下一代標準。因為當前版本的是在年發(fā)布的,所以又稱。命令用于規(guī)定模塊的對外接口,命令用于輸入其他模塊提供的功能。需要特別注意的是,命令規(guī)定的是對外的接口,必須與模塊內(nèi)部的變量建立一一對應關(guān)系。 ECMAScript 6(以下簡稱ES6)是JavaScript語言的下一代標準。因為當前版本的ES6是在2015年發(fā)布的,所以又稱ECMAScript 2015。 最常用的ES6...
摘要:該模塊實現(xiàn)方案主要包含與這兩個關(guān)鍵字,其允許某個模塊對外暴露部分接口并且由其他模塊導入使用。由于在服務端的流行,的模塊形式被不正確地稱為。以上所描述的模塊載入機制均定義在中。 最近一直在搞基礎(chǔ)的東西,弄了一個持續(xù)更新的github筆記,可以去看看,誠意之作(本來就是寫給自己看的……)鏈接地址:Front-End-Basics 此篇文章的地址:JavaScript的模塊 基礎(chǔ)筆記...
摘要:我寫過一些開源項目,在開源方面有一些經(jīng)驗,最近開到了阮老師的微博,深有感觸,現(xiàn)在一個開源項目涉及的東西確實挺多的,特別是對于新手來說非常不友好最近我寫了一個,旨在從多方面快速幫大家搭建一個標準的庫,本文將已為例,介紹寫一個開源庫的知識 我寫過一些開源項目,在開源方面有一些經(jīng)驗,最近開到了阮老師的微博,深有感觸,現(xiàn)在一個開源項目涉及的東西確實挺多的,特別是對于新手來說非常不友好 show...
摘要:例如我們導入模塊,可以這么導入桃翁歡迎關(guān)注公眾號前端桃園報錯不能定義相同名字變量報錯,不能重新賦值小豬可以看到導入綁定這里不理解綁定,文章后面會解釋時,形式類似于對象解構(gòu),但實際上并無關(guān)聯(lián)。 歡迎訪問個人站點 簡介 何為模塊 一個模塊只不過是一個寫在文件中的 JavaScript 代碼塊。 模塊中的函數(shù)或變量不可用,除非模塊文件導出它們。 簡單地說,這些模塊可以幫助你在你的模塊中編寫...
閱讀 546·2023-03-27 18:33
閱讀 731·2023-03-26 17:27
閱讀 630·2023-03-26 17:14
閱讀 590·2023-03-17 21:13
閱讀 519·2023-03-17 08:28
閱讀 1800·2023-02-27 22:32
閱讀 1292·2023-02-27 22:27
閱讀 2177·2023-01-20 08:28