热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

webpack使用下

webpack-下从yarnbuild开始,都走了哪些流程执行webpack命令,找到配置文件,入口和依赖关系,打包代码输出到指定位置webpack处理图片文件webpack无法自

webpack-下


从yarn build开始,都走了哪些流程


执行webpack命令,找到配置文件,入口和依赖关系,打包代码输出到指定位置



webpack处理图片文件


webpack无法自己处理图片文件

webpack5使用asset module技术来实现字体文件和图片文件的处理,无需配置额外的loader

https://webpack.docschina.org/guides/asset-modules/

1:webpack5.在rules里,针对图片文件设置type:asset

2:小于8kb转base64字符串进js里,大于8kb输出文件




  • 在src/assets准备图片文件

  • 在less/aa.less文件中对body设置背景图片

  • 在入口导入图片文件,设置到img标签插入到body

  • 打包

module:{
rules:[
{
// 图片文件的配置 (仅适用于webpack5版本)
test: /\.(gif|png|jpg|jpeg)/,
type: 'asset', //匹配上面的文件后,webpack会把他们当静态资源处理打包
// 如果你设置的asset模式 以8kb来区分图片文件
// 小于8kb的 把图片文件转base64,打包到js中
// 大于8kb的,直接把图片文件输出到dist下
},
]
}

为什么8kb上下的图片要区分呢


图片翻译成base64打包到js文件中

好处:浏览器不用法请求了,直接可以读取,速度快

坏处:图片太大,再转base64就会让图片的体积增大30%左右,得不偿失



webpack处理字体图标



  • src/assets中放入fonts字体相关的文件夹



  • src/main.js引入assets/font/iconfont.css



  • src/main.js创建一个i标签,把字体图标标签添加到body上



  • 添加针对字体文件的加载器规则,使用asset/resource (直接输出文件并配置路径)



  • 打包

    module:{
    rules:[
    {
    test: /\.(ttf|eot|svg|woff|woff2)/,
    type: 'asset/resource',
    generator: {
    // 生成文件的文字 定义规则
    filename: 'fonts/[name].[hash:6][ext]', //[ext] 会替换成.eot/.woff
    },
    },
    ]
    }



webpack对js语法降级

babel https://www.babeljs.cn/

babel-loader https://v4.webpack.js.org/loaders/babel-loader/

babel一个Javascript编译器,把高版本js语法降级处理输出兼容的低版本语法

babel-loader 让webpack编译打包js代码

步骤:



  • src/main.js 定义箭头函数,打印箭头函数变量(不要调用,为 了让webpack打包函数,看降级效果)



  • 下载加载器

    npm install -D babel-loader @babel/core @babel/preset-env webpack


  • webpack配置



  • 打包



{
test: /\.m?js$/,
exclude: /(node_modules|bower_components)/, //不去匹配这些文件夹下的文件
use: {
loader: 'babel-loader', //使用这个loader处理js文件
options: {
//加载器选项
presets: ['@babel/preset-env'], // @babel/preset-env 降级规则 按照这里的规则降级我们的js语法
},
},
},

webpack开发服务器

问题:每次修改完代码,重新yarn build打包,才能看到最新效果,实际工作中,打包yarn build非常耗时

为什么:



  • 从0构建依赖

  • 磁盘读取对应的文件到内存,webpack开始加载

  • 再用对应的loader进行处理

  • 将处理完的内容,输出到磁盘指定目录

解决:

起一个开发服务器,缓存一些已经打包过的内容,只重新打包修改的文件,最终运行在内存中给浏览器使用

打包在内存中,速度快

自动更新打包变化的代码,实时返回给浏览器显示


使用

webpack-dev-server

https://webpack.docschina.org/api/webpack-dev-server/#root



  • 下载

    npm install --save-dev webpack-dev-server


  • 自定义webpack开发服务器启动命令serve 在package.json里

    "scripts": {
    "build": "webpack",
    "serve": "webpack serve"
    },


  • 启动服务器

    yarn serve

    webpack-dev-server 会给我们一个地址+端口号 ,浏览器中访问就可以看到打包的index.html页面




修改端口号

webpack.config.js中修改端口号,重新启动项目

module.exports = {
mode: 'development',
devServer: {
port: 3000,
},
}


推荐阅读
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 全面解析JavaScript代码注释技巧与标准规范
    在Web前端开发中,JavaScript代码的可读性和维护性至关重要。本文将详细介绍如何有效地使用注释来提高代码的可读性,并探讨JavaScript代码注释的最佳实践和标准规范。通过合理的注释,开发者可以更好地理解和维护复杂的代码逻辑,提升团队协作效率。 ... [详细]
  • 深入浅出 webpack 系列(二):实现 PostCSS 代码的编译与优化
    在前一篇文章中,我们探讨了如何通过基础配置使 Webpack 完成 ES6 代码的编译。本文将深入讲解如何利用 Webpack 实现 PostCSS 代码的编译与优化,包括配置相关插件和加载器,以提升开发效率和代码质量。我们将详细介绍每个步骤,并提供实用示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • Vue CLI 初始化 Webpack 项目时,main.js 文件是如何被调用的? ... [详细]
  • 如何使用ES6语法编写Webpack配置文件? ... [详细]
  • 2017-09-07前端日报精选JavaScriptEventLoop机制详解与Vue.js中实践应用Redux基础与实践如何用js获取虚拟键盘高度?( ... [详细]
  • Python 序列图分割与可视化编程入门教程
    本文介绍了如何使用 Python 进行序列图的快速分割与可视化。通过一个实际案例,详细展示了从需求分析到代码实现的全过程。具体包括如何读取序列图数据、应用分割算法以及利用可视化库生成直观的图表,帮助非编程背景的用户也能轻松上手。 ... [详细]
  • 基于JSP和SSM框架的超市收银系统毕业设计论文及源代码分析
    本研究基于JSP和SSM框架开发了一套超市收银系统,旨在提升超市收银效率和管理便捷性。系统运行环境包括JDK 1.8、Tomcat 7.0、MySQL数据库以及HBuilderX(也可使用WebStorm)作为前端开发工具,后端开发则采用Eclipse(IntelliJ IDEA亦可)。该系统实现了商品管理、订单处理、库存管理和报表生成等核心功能,具有良好的稳定性和扩展性。通过详细的设计与实现过程,本文为相关领域的研究提供了有价值的参考。 ... [详细]
  • 1、概述hdfs文件系统主要设计为了存储大文件的文件系统;如果有个TB级别的文件,我们该怎么存储呢?分布式文件系统未出现的时候࿰ ... [详细]
  • HDFS是什么?HDFS全称HadoopDistributedFileSystem,简称HDFS,是一个分布式文件系统。它是谷歌的GFS提出之后出现的另外一种文件系统。它有一定高 ... [详细]
  • 背景使用yarncreateumi创建了一个干净的基于umidva的react项目。在遇到组件之间的通讯时,需要使用到dva。如何使用dva实现组件之间的通讯呢&# ... [详细]
  • 概况spark提供了一些方案来调度资源。首先,每个spark程序都在跑在若干个独立的executor集群上的(其中executor是一个jvm来runtask和storedata) ... [详细]
  • Spark常用端口号和Hadoop中常用端口号区分
    Spark中常用端口号区分:-Master进程的通信端口号-7077-Master进程webui查看端口号-8080-Worker进程的通信端口号-7078-Worker进程web ... [详细]
  • hadoop完全分布式搭建
    原文链接:hadoop完全分布式搭建主机分配以及地址要求:角色主机名IP地址Namenodemaster192.168.222.201Datanodeslave ... [详细]
author-avatar
乐家巢欧美家具_636
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有