webpack中如何加载静态文件

前言:
对于非静态的文件,如js,当webpack打包时,会被直接打到模块文件中,如main.js,若是修改了,须要再次编译
而对于静态文件,如jpg,svg等,咱们不但愿webpack去打包,只须要在build完后,直接放到dist下的某个路径下便可,随时能够修改,并不须要再次编译webpack

首先,看一段很熟悉的webpack配置ios

{
    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.jpgweb

那么咱们如何在组件中引入静态资源呢?
有两张方式:
一、在组件最上方,使用import导入axios

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

在组件中markdown

<img src={b}/>

二、使用require导入
若是不在组件上方使用import导入,而是在组件中的任意位置使用时,可经过require引入svg

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

那么同理,若是想让markdown等其余文件,也成为静态资源。
第一步:ui

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

第二步:url

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

而后部署上去后,若是后期咱们须要对map.md作修改,则直接修改static/media/map.md文件就好了,直接生效,不须要再次编译code

相关文章
相关标签/搜索