W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
服務(wù)時引入一個靜態(tài)資源會返回解析后的公共路徑:
import imgUrl from './img.png'
document.getElementById('hero-img').src = imgUrl
例如,?imgUrl
?在開發(fā)時會是 ?/img.png
?,在生產(chǎn)構(gòu)建后會是 ?/assets/img.2d8efhg.png
?。
行為類似于 Webpack 的 ?file-loader
?。區(qū)別在于導(dǎo)入既可以使用絕對公共路徑(基于開發(fā)期間的項目根路徑),也可以使用相對路徑。
url()
? 在 CSS 中的引用也以同樣的方式處理。assetsInclude
?選項 擴展內(nèi)部列表。assetsInlineLimit
?選項值 則會被內(nèi)聯(lián)為 base64 data URL。未被包含在內(nèi)部列表或 assetsInclude
中的資源,可以使用 ?url
后綴顯式導(dǎo)入為一個 URL。這十分有用,例如,要導(dǎo)入 Houdini Paint Worklets 時:
import workletURL from 'extra-scalloped-border/worklet.js?url'
CSS.paintWorklet.addModule(workletURL)
資源可以使用 ?raw
后綴聲明作為字符串引入。
import shaderString from './shader.glsl?raw'
腳本可以通過 ?worker
或 ?sharedworker
后綴導(dǎo)入為 web worker。
// 在生產(chǎn)構(gòu)建中將會分離出 chunk
import Worker from './shader.js?worker'
const worker = new Worker()
// sharedworker
import SharedWorker from './shader.js?sharedworker'
const sharedWorker = new SharedWorker()
// 內(nèi)聯(lián)為 base64 字符串
import InlineWorker from './shader.js?worker&inline'
如果你有下列這些資源:
robots.txt
?)那么你可以將該資源放在指定的 public
?目錄中,它應(yīng)位于你的項目根目錄。該目錄中的資源在開發(fā)時能直接通過 ?/
?根路徑訪問到,并且打包時會被完整復(fù)制到目標目錄的根目錄下。
目錄默認是 ?<root>/public
?,但可以通過 ?publicDir
?選項 來配置。
請注意:
public
?中的資源永遠應(yīng)該使用根絕對路徑 —— 舉個例子,?public/icon.png
? 應(yīng)該在源碼中被引用為 ?/icon.png
?。public
中的資源不應(yīng)該被 JavaScript 文件引用。import.
const imgUrl = new URL('./img.png', import.meta.url).href
document.getElementById('hero-img').src = imgUrl
這在現(xiàn)代瀏覽器中能夠原生使用 - 實際上,Vite 并不需要在開發(fā)階段處理這些代碼!
這個模式同樣還可以通過字符串模板支持動態(tài) URL:
function getImageUrl(name) {
return new URL(`./dir/${name}.png`, import.meta.url).href
}
在生產(chǎn)構(gòu)建時,Vite 才會進行必要的轉(zhuǎn)換保證 URL 在打包和資源哈希后仍指向正確的地址。
注意:無法在 SSR 中使用
如果你正在以服務(wù)端渲染模式使用 Vite 則此模式不支持,因為import.meta.url
?在瀏覽器和 Node.js 中有不同的語義。服務(wù)端的產(chǎn)物也無法預(yù)先確定客戶端主機 URL。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: