返回顶部
首页 > 资讯 > 前端开发 > node.js >与Webpack类似的工具还有哪些
  • 604
分享到

与Webpack类似的工具还有哪些

2024-04-02 19:04:59 604人浏览 独家记忆
摘要

本篇文章给大家分享的是有关与webpack类似的工具还有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 一、模块化工具模块化是一

本篇文章给大家分享的是有关与webpack类似的工具还有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

 与Webpack类似的工具还有哪些

一、模块化工具

模块化是一种处理复杂系统分解为更好的可管理模块的方式

可以用来分割,组织和打包应用。每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体(bundle)

前端领域中,并非只有WEBpack这一款优秀的模块打包工具,还有其他类似的工具,例如Rollup、Parcel、snowpack,以及最近风头无两的Vite

通过这些模块打包工具,能够提高我们的开发效率,减少开发成本

这里没有提及gulp、grunt是因为它们只是定义为构建工具,不能类比

Rollup

Rollup 是一款 ES Modules 打包器,从作用上来看,Rollup 与 Webpack 非常类似。不过相比于  Webpack,Rollup要小巧的多

现在很多我们熟知的库都都使用它进行打包,比如:VueReact和three.js

举个例子:

// ./src/messages.js export default {   hi: 'Hey Guys, I am zce~' }  // ./src/logger.js export const log = msg => {   console.log('---------- INFO ----------')   console.log(msg)   console.log('--------------------------') }  export const error = msg => {   console.error('---------- ERROR ----------')   console.error(msg)   console.error('---------------------------') }  // ./src/index.js import { log } from './logger' import messages from './messages' log(messages.hi)

然后通过rollup进行打包

$ npx rollup ./src/index.js --file ./dist/bundle.js

打包结果如下图

与Webpack类似的工具还有哪些

可以看到,代码非常简洁,完成不像webpack那样存在大量引导代码和模块函数

并且error方法由于没有被使用,输出的结果中并无error方法,可以看到,rollup默认开始Tree-shaking 优化输出结果

因此,可以看到Rollup的优点:

  • 代码效率更简洁、效率更高

  • 默认支持 Tree-shaking

但缺点也十分明显,加载其他类型的资源文件或者支持导入 CommonJS 模块,又或是编译 ES 新特性,这些额外的需求  Rollup需要使用插件去完成

综合来看,rollup并不适合开发应用使用,因为需要使用第三方模块,而目前第三方模块大多数使用CommonJs方式导出成员,并且rollup不支持HMR,使开发效率降低

但是在用于打包javascript 库时,rollup比 webpack 更有优势,因为其打包出来的代码更小、更快,其存在的缺点可以忽略

Parcel

Parcel ,是一款完全零配置的前端打包器,它提供了 “傻瓜式” 的使用体验,只需了解简单的命令,就能构建前端应用程序

Parcel 跟 Webpack  一样都支持以任意类型文件作为打包入口,但建议使用html文件作为入口,该HTML文件像平时一样正常编写代码、引用资源。如下所示:

<!-- ./src/index.html --> <!DOCTYPE html> <html lang="en"> <head>   <meta charset="UTF-8">   <title>Parcel Tutorials</title> </head> <body>   <script src="main.js"></script> </body> </html>

main.js文件通过ES Moudle方法导入其他模块成员

// ./src/main.js import { log } from './logger' log('hello parcel') // ./src/logger.js export const log = msg => {   console.log('---------- INFO ----------')   console.log(msg) }

运行之后,使用命令打包

npx parcel src/index.html

执行命令后,Parcel不仅打包了应用,同时也启动了一个开发服务器,跟webpack Dev Server一样

跟webpack类似,也支持模块热替换,但用法更简单

同时,Parcel有个十分好用的功能:支持自动安装依赖,像webpack开发阶段突然使用安装某个第三方依赖,必然会终止dev  server然后安装再启动。而Parcel则免了这繁琐的工作流程

同时,Parcel能够零配置加载其他类型的资源文件,无须像webpack那样配置对应的loader

打包命令如下:

npx parcel src/index.html

由于打包过程是多进程同时工作,构建速度会比Webpack 快,输出文件也会被压缩,并且样式代码也会被单独提取到单个文件中

与Webpack类似的工具还有哪些

可以感受到,Parcel给开发者一种很大的自由度,只管去实现业务代码,其他事情用Parcel解决

Snowpack

Snowpack,是一种闪电般快速的前端构建工具,专为现代Web设计,较复杂的打包工具(如Webpack或Parcel)的替代方案,利用JavaScript的本机模块系统,避免不必要的工作并保持流畅的开发体验

开发阶段,每次保存单个文件时,Webpack和Parcel都需要重新构建和重新打包应用程序的整个bundle。而Snowpack为你的应用程序每个文件构建一次,就可以永久缓存,文件更改时,Snowpack会重新构建该单个文件

下图给出webpack与snowpack打包区别:

与Webpack类似的工具还有哪些

在重新构建每次变更时没有任何的时间浪费,只需要在浏览器中进行HMR更新

Vite

vite ,是一种新型前端构建工具,能够显著提升前端开发体验

它主要由两部分组成:

  • 一个开发服务器,它基于 原生 ES 模块 提供了丰富的内建功能,如速度快到惊人的 [模块热更新HMR

  • 一套构建指令,它使用 Rollup打包你的代码,并且它是预配置的,可以输出用于生产环境的优化过的静态资源

其作用类似webpack+ webpack-dev-server,其特点如下:

  • 快速的冷启动

  • 即时的模块热更新

  • 真正的按需编译

vite会直接启动开发服务器,不需要进行打包操作,也就意味着不需要分析模块的依赖、不需要编译,因此启动速度非常快

利用现代浏览器支持ES Module的特性,当浏览器请求某个模块的时候,再根据需要对模块的内容进行编译,这种方式大大缩短了编译时间

原理图如下所示:

与Webpack类似的工具还有哪些

在热模块HMR方面,当修改一个模块的时候,仅需让浏览器重新请求该模块即可,无须像webpack那样需要把该模块的相关依赖模块全部编译一次,效率更高

webpack

相比上述的模块化工具,webpack大而全,很多常用的功能做到开箱即用。有两大最核心的特点:「一切皆模块」和「按需加载」

与其他构建工具相比,有如下优势:

  • 智能解析:对 CommonJS 、 AMD 、es6 的语法做了兼容

  • 万物模块:对 js、CSS、图片等资源文件都支持打包

  • 开箱即用:HRM、Tree-shaking等功能

  • 代码分割:可以将代码切割成不同的 chunk,实现按需加载,降低了初始化时间

  • 插件系统,具有强大的 Plugin 接口,具有更好的灵活性和扩展性

  • 易于调试:支持 SourceUrls 和 SourceMaps

  • 快速运行:webpack 使用异步 io 并具有多级缓存,这使得 webpack 很快且在增量编译上更加快

  • 生态环境好:社区更丰富,出现的问题更容易解决

以上就是与Webpack类似的工具还有哪些,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网node.js频道。

--结束END--

本文标题: 与Webpack类似的工具还有哪些

本文链接: https://lsjlt.com/news/81558.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 与Webpack类似的工具还有哪些
    本篇文章给大家分享的是有关与Webpack类似的工具还有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 一、模块化工具模块化是一...
    99+
    2024-04-02
  • Java工具类有哪些
    本篇内容介绍了“ Java工具类有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.org.apache.commons.io.IOUt...
    99+
    2023-06-15
  • webpack构建工具常见问题有哪些
    这篇文章给大家分享的是有关webpack构建工具常见问题有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。webpack构建工具常见问题及解决方法  在运用...
    99+
    2024-04-02
  • Spring中的工具类有哪些
    这篇文章给大家介绍Spring中的工具类有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。文件资源操作Spring 定义了一个 org.springframework.core.io.Resource 接口,Reso...
    99+
    2023-05-31
    spring
  • Java中的工具类有哪些
    这期内容当中小编将会给大家带来有关Java中的工具类有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。如下所示:工具类功能BeanUtils提供了对于JavaBean进行各种操作,克隆对象,属性等等Be...
    99+
    2023-05-31
    java 工具类 ava
  • java常用的工具类有哪些
    Java常用的工具类有:1. StringUtils:字符串处理工具类,提供了各种字符串操作方法,如判空、拼接、替换等。2. Mat...
    99+
    2023-08-15
    java
  • Java好用的工具类有哪些
    Java中有许多常用的工具类,以下是一些常见的Java工具类:1. StringUtils:字符串处理工具类,提供了常用的字符串操作...
    99+
    2023-08-24
    Java
  • java常用工具类有哪些
    这篇文章给大家分享的是有关java常用工具类有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。java中有用的工具集任何语言都要处理日期,map类型,字符串,数字类型的数据,这里找到一些用java经常处理这些数...
    99+
    2023-06-03
  • 哪些 MySQL 函数的工作方式与 LOCATE() 函数类似?
    MySQL INSTR() 和 POSITION() 函数的工作方式与 LOCATE() 函数类似。它们都是 LOCATE() 函数的同义词。INSTR() 函数还返回从字符串中搜索后子字符串第一次出现的位置。 INSTR() 的语法如下 ...
    99+
    2023-10-22
  • Java中有哪些常用的工具类
    今天就跟大家聊聊有关Java中有哪些常用的工具类,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、线程协作、控制并发流程的工具类 什么是控制并发流程?控制并发流程的工具类,...
    99+
    2023-06-15
  • Java中Lang包的工具类有哪些
    今天就跟大家聊聊有关Java中Lang包的工具类有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Lang 中工具类比较多,这里介绍几个主要的:  ClassUtils: ...
    99+
    2023-05-31
    java lang ava
  • Java中的时间工具类有哪些
    Java中的时间工具类有哪些?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。具体如下:package org.zhy.date;import java.text.DateForm...
    99+
    2023-05-31
    java ava
  • java常用util工具类有哪些
    Java常用的util工具类有以下几类:1. 字符串处理工具类:例如StringUtils、StringBuffer、StringB...
    99+
    2023-10-09
    java
  • Java中常用的Java工具类有哪些
    这篇文章主要介绍Java中常用的Java工具类有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一. org.apache.commons.io.IOUtilscloseQuietly:关闭一个IO流、socket...
    99+
    2023-06-17
  • JavaScript 中有哪些类似于 Python 的库?
    随着 Web 技术的发展,JavaScript 已经成为一种非常流行的编程语言。虽然 JavaScript 和 Python 在很多方面有很大的不同,但是它们也有很多相似之处。在本文中,我们将会介绍一些类似于 Python 的 JavaS...
    99+
    2023-10-01
    文件 numpy javascript
  • Java代码常用工具类有哪些
    这篇文章主要为大家展示了“Java代码常用工具类有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java代码常用工具类有哪些”这篇文章吧。一、org.apache.commons.io.IO...
    99+
    2023-06-02
  • 常用的Python工具与资源有哪些
    这篇文章主要讲解了“常用的Python工具与资源有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“常用的Python工具与资源有哪些”吧!1、PycharmPycharm是一款简单易用的P...
    99+
    2023-06-15
  • Java世界常用的工具类库有哪些
    小编给大家分享一下Java世界常用的工具类库有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Apache CommonsApache Commons有很多子项...
    99+
    2023-06-16
  • MySQL工具有哪些
    这篇文章主要为大家展示了“MySQL工具有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL工具有哪些”这篇文章吧。 MySQL工具汇总 ...
    99+
    2024-04-02
  • css工具有哪些
    这篇文章主要为大家展示了“css工具有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“css工具有哪些”这篇文章吧。CSS工具是现今网站开发人员和设计人员使用...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作