webpack中怎样加载静态文件

媒介:
关于非静态的文件,如js,当webpack打包时,会被直接打到模块文件中,如main.js,假如修正了,须要再次编译
而关于静态文件,如jpg,svg等,我们不愿望webpack去打包,只须要在build完后,直接放到dist下的某个途径下即可,随时能够修正,并不须要再次编译

起首,看一段很熟悉的webpack设置

{
    test: [/\.jpg/],
    loader: require.resolve('url-loader'),
    options: {
        limit: 10000,
        name: 'static/media/[name].[ext]',
    },
}

它表明,在剖析jpg文件时,只须要供应一个url即可,bytes小于10000的转为base64。 此url为static/media/xxx.jpg。
注重:此处的url已不是 项目文件夹构造的谁人url(如src/assets/image/xxx.jpg), 而是 static/media/xxx.jpg,当编译后,dist/static/media中会涌现 xxx.jpg

那末我们如安在组件中引入静态资本呢?
有两张体式格局:
1、在组件最上方,运用import导入

import b  from "@/assets/image/a.jpg"
//此时 b 的值为 static/media/a.jpg

在组件中

<img src={b}/>

2、运用require导入
假如不在组件上方运用import导入,而是在组件中的恣意位置运用时,可通过require引入

<img src={require("@/assets/image/a.jpg")}>
//此时require("@/assets/image/a.jpg")的值就是static/media/a.jpg

那末同理,假如想让markdown等其他文件,也成为静态资本。
第一步:

{
    test: [/\.md/],
    loader: require.resolve('url-loader'),
    options: {
        limit: 10,  //能够设置小点
        name: 'static/media/[name].[ext]',
    },
}

第二步:

//md文件和jpg差别,我们须要的最终是md文件的内容,不是url
axios.get(require("@/assets/image/map.md")).then(res=>{
    //res.data 就是内容
})

然后布置上去后,假如后期我们须要对map.md做修正,则直接修正static/media/map.md文件就好了,直接见效,不须要再次编译

    原文作者:寒山寺一禅
    原文地址: https://segmentfault.com/a/1190000019216446
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞