最近看到了es6的模板字符串,感覺使用起來太爽了,沒有了字符串拼接,代碼看起來也沒那么難看了。
結果放到ie上邊跑,不支持es6的寫法,於是網上扒解決方案(我寫的項目是很傳統的項目,前后端不分離,沒有用前端流行的腳手架之類的東西),結果發現大部分解決方案都不適用於我的傳統項目。
看到有人說用babel,可以通過script標簽引入的方式解決es6的問題,試了試,結果一堆坑,根本沒法用。
問題一:如果是引入的js文件,谷歌就會報一個跨域的問題,ie是拒絕訪問,edge竟然能跑。(下邊的browser.js是使用npm下載的babel文件中的)
下邊代碼中使用src引入一個js文件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript" src="browser.js"></script> <script type="text/babel" src="test1.js"></script> </head> <body> </body> </html>
報錯信息:
谷歌報錯:
ie報錯:
問題二:
由於babel要求script標簽設置為text/babel ,結果其執行時間總是很晚,要晚於text/javascript這種的script標簽。
實際需求中往往需要一些默認的script標簽在它之后運行才可以正常運行。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript" src="browser.js"></script> <script type="text/babel"> console.log('我是babel'); </script> <script type="text/javascript"> console.log('我是正常的script標簽'); </script> </head> <body> </body> </html>
執行結果:
經過測試,如果要使用這種方式,如果能忍受我上邊說的問題也可以,下邊這樣寫ie的確能夠解決es6的。注意script標簽的type一定要是 text/babel。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript" src="browser.js"></script> <script type="text/babel"> let html = `fdsafdsaf`; console.log(html); </script> </head> <body> </body> </html>
基於以上原因,這種引入方式實在沒法使用,可能是自己的打開方式不對?除了babel還試了個叫 polyfill.io的 , 一點反應都沒有。。。。,網上很多人發的用script引入它標簽就能解決es6低版本瀏覽器的問題,
我試了下,行不通。
如果哪位朋友解決了這個問題,如果方便給份例子,感激不盡!