博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于webpack的几种静态资源的引入方案
阅读量:5924 次
发布时间:2019-06-19

本文共 1388 字,大约阅读时间需要 4 分钟。

基于webpack && html引入静态资源的几种方法

GitHub博客 喜欢的start,长期更新


我们需要在页面插入图片:

index.html

复制代码

因为这个图片webpack并没有被加载进来,会得到404的结果。

通常的做法是在对应的js中require该资源

require('./assets/images/xxx.jpg');复制代码

这样就在内存中可以访问到内存中图片。(但是要注意文件加载的路径问题,最简单的就是按照构建的生产环境的资源路径)还要注意图片是否有hash值。

以下是js输出的图片资源路径

./images/acb790246029d8f127588eacd3005fbei1.jpg复制代码

比如最后生成的资源路径。页面也需要按照这样引入,显然是不可能的。

复制代码

当一个项目静态图片多的时候如何处理?比如一个不需要后端图片数据的前端活动页面?接下来有三种方法。

使用CopyWebpackPlugin

把静态资源都拷贝到构建目录。使用方法也非常简单。

const CopyWebpackPlugin = require('copy-webpack-plugin');复制代码
Usage
new CopyWebpackPlugin([    { from: path , to: bundle_path }])复制代码

这样就可以在页面中愉快的使用目录地址了(注意的是资源路径按照最终构建完成的目录)

如下是构建完毕后的目录

| dist

| ---- | images
| ---------- | xxx.jpg
| ---- | index.html

复制代码

CopyWebpackPlugin 能把全部静态资源全部拷贝过去,从而优化webpack在构建上面的速度,减少时间,是一个不错的优化方案,可以建议使用。

在 html文件中使用require

复制代码

这种方法跟import是一样的,我们可以直接使用它,还可以配置alias,来简化这个path的名字

resolve: {    alias: {      imageBase: '../app/assets/images'    }, },复制代码

设置后页面中可以使用alias来代替路径问题

复制代码

同事css也可以使用,配合~

background: url('~imageBase/xxx.jpg')复制代码

此时~告诉webpack这是一个module,而不是相对路径。

alias的使用同样也可以让构建的速度提升,直接锁定资源的地址,从而减少搜索的耗时。

使用html-loader

目前比较省力的方案

{    test: /\.html$/,    loader: 'html?attrs=img:src img:data-src'}复制代码

它默认处理html中的<img src="image.png">为require("./image.png"),

同时还处理了hash文件名的问题。但是html-loader不支持下划线模板。会导致HtmlWebpackPlugin的变量模板失效。
具体问题:


以上的方法可以结合使用,比如2,3中使用的话,不但简化了图片的路径问题,还优化了构建速度,同时引入静态资源也非常的简单。

例子:

复制代码

转载地址:http://joavx.baihongyu.com/

你可能感兴趣的文章
springboot+jwt做api的token认证
查看>>
FastDFS的配置、部署与API使用解读(1)Get Started with FastDFS
查看>>
分布式--Spring Boot 微服务框架
查看>>
关于FileZilla上传文件后服务器端文件与本地文件大小不一致的解决方法
查看>>
手写SpringMVC实战,一切从Spring底层源码分析开始
查看>>
Spring源码---BeanFactory的抽象
查看>>
XWiki 11.1 发布,协作式应用开发平台
查看>>
创建云数据库HybridDB for MySQL结果表
查看>>
关于SQL+NoSQL : NewSQL数据库
查看>>
从零开始一起学习SLAM | 相机成像模型
查看>>
一个老程序员的忠告:不要一辈子靠技术生存
查看>>
数据类型之间运算关系
查看>>
跳出面向对象思想(二) 多态
查看>>
WebStorm Exception: ...requested without authorization...
查看>>
Jenkins +selenium(学习笔记三十一)
查看>>
k8s使用ServiceAccount Token的方式访问apiserver
查看>>
C语言中用于计算数组长度的函数 “strlen() ”。
查看>>
微信公众平台中临时二维码的scene_id为32位非0整型
查看>>
《快学 Go 语言》第 5 课 —— 神奇的切片
查看>>
eclipse 导入maven项目 不识别web
查看>>