vue模板工程中靜態資源引入的小坑

2022-10-09 01:15:12 字數 921 閱讀 1216

需求:

同型別靜態放在了/src/assets/imgs下面,要在js**中引入這些資源。

已知vue**採取es module規範,理論上應該避免使用commonjs的東西,所以第一反應不用require()而是使用import(),發現報錯,大致是對應的位置沒有模組匯出。

為什麼?

vue模板工程中引入靜態資源,是使用webpack打包後顯示到頁面上的。雖然vue的js部分採用es module規範,但webpack採用的是commonjs規範,使用import(),會被當成模組依賴,而不是靜態資源。

require的問題是:

require("@/assets/images/logo.png") 可用

let url = "@/assets/images/logo.png";

require(url); 報錯

let url = "logo.png";

require("@/assets/images/" + url); 可用

這是為什麼?

兩個問題:

1. require()不能整個使用變數,這會讓它找不到對應的目錄,開啟全檔案系統的搜尋;

2. 開啟除錯工具,如下圖,發現webpack在打包/src/asset資料夾內的資源時,會把引入的名加乙個隨機的值,複製到打包後的資料夾。這就導致單純搜尋logo.png無法搜到對應的。

那為什麼使用"@/assets/images"+url的形式,不會導致這個錯誤呢?因為等於是告訴webpack,前面是要找的目錄,後面的url是需要匹配的正則。

經過嘗試,無論是"@/"+url,還是"@/assets"+url,只要給require乙個目錄,就能正確找到資源位置。但是"@"+url不行。

Vue中引入靜態JS檔案(爬坑)

前言 背景介紹 開發的專案需要與threejs的3d專案結合在一起,需要靜態引入,jquery.js,stats.js,three.js,threebsp.js等靜態檔案。開發環境是iview admin2.0.嘗試了許多方法,算是填坑了吧.1 首先找到專案下的index.html,我的是在publ...

https中引入http資源資源所導致的問題

問題描述因為公司要求所有生產環境為了安全性需求,全部都走https,並且在nginx裡面加入了content security policy upgrade insecure requests connect src 響應頭,作用是讓瀏覽器自動公升級請求,防止訪問者訪問不安全的內容。該指令用於讓瀏覽...

Vue中echarts的引入方法

專案使用的是vue cli腳手架搭建 npm install echarts s或者使用國內的 映象 安裝 npm install g cnpm registry 使用 cnpm install echarts smain.js檔案中 引入echarts import echarts from ec...