search
HomeWeb Front-endFront-end Q&AWhat is the difference between vite and webpack

Differences: 1. The webpack server startup speed is slower than that of vite; since vite does not need to be packaged when it is started, there is no need to analyze module dependencies and compile, so the startup speed is very fast. 2. Vite hot update is faster than webpack; in terms of HRM of Vite, when the content of a certain module changes, just let the browser re-request the module. 3. Vite uses esbuild to pre-build dependencies, while webpack is based on node. 4. The ecology of Vite is not as good as webpack, and the loaders and plug-ins are not rich enough.

What is the difference between vite and webpack

The operating environment of this tutorial: windows7 system, vue3 version, DELL G3 computer.

Written at the beginning

  • The recent vite is quite popular and has released version 2.0. The author of vue is also in Highly recommended

  • I mentioned in the previous article that the shortcoming of vite is that the current ecology is not webpack mature enough, but as long as it can By making up for this shortcoming, there is a high probability that it can replace most of the current webpack market

comprehensive comparison between vite and webpack

webpack packaging process

  • 1. Identify the entry file

  • 2.Pass Identify module dependencies layer by layer. (Commonjs, amd or es6 import, webpack will analyze it. To obtain the dependencies of the code)

  • 3. What webpack does is analyze the code. Convert the code, compile the code, and output the code

  • 4. Finally form the packaged code

webpack packaging principle

  • 1.First recursively identify dependencies step by step and build a dependency graph

  • 2. Convert the code into an AST abstract syntax tree

  • 3. Process the code in the AST stage

  • 4. Convert the AST abstract syntax tree into a browse Code that the processor can recognize, and then output

Key point: Here you need to recursively identify dependencies and build a dependency graph. The graph object is similar to the following

{ './app.js':
   { dependencies: { './test1.js': './test1.js' },
     code:
      '"use strict";\n\nvar _test = _interopRequireDefault(require("./test1.js"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nconsole.log(test
1);' },
  './test1.js':
   { dependencies: { './test2.js': './test2.js' },
     code:
      '"use strict";\n\nvar _test = _interopRequireDefault(require("./test2.js"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nconsole.log(\'th
is is test1.js \', _test["default"]);' },
  './test2.js':
   { dependencies: {},
     code:
      '"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n  value: true\n});\nexports["default"] = void 0;\n\nfunction test2() {\n  console.log(\'this is test2 \');\n}\n\nvar _default = tes
t2;\nexports["default"] = _default;' } }

What is the difference between vite and webpack

vite principle

  • When declaring a script tag type as module

For example:

 <script type="module" src="/src/main.js"></script>
  • The browser will initiate a GET

    to the server
http://localhost:3000/src/main.js请求main.js文件:

// /src/main.js:
import { createApp } from &#39;vue&#39;
import App from &#39;./App.vue&#39;
createApp(App).mount(&#39;#app&#39;)
  • The browser requests the main.js file, detects that it contains the package introduced by import, and initiates an HTTP request to its internal import reference to obtain the content file of the module.

  • For example: GET http://localhost:3000/@modules/vue.js

  • For example: # The main function of ##GET http://localhost:3000/src/App.vue

  • ##Vite

    is to hijack these requests of the browser. And perform corresponding processing on the backend to simply decompose and integrate the files used in the project, and then return them to the browser. Vite does not package and compile the files during the entire process, so its running speed is faster than the original webpack The development and compilation speed is much faster!

Webpack Disadvantage 1. Slow server startup

    When cold starting the development server, the packager-based approach is to eagerly crawl and build your entire application before serving it .

vite improves

    Vite by distinguishing the modules in the application into Both dependency and source code categories improve the development server startup time.
  • Dependencies are mostly pure JavaScript and will not change during development. Some larger dependencies (such as component libraries with hundreds of modules) are also expensive to deal with. Dependencies are also usually split into a large number of small modules in some way (such as ESM or CommonJS).
  • Vite will use esbuild to pre-build dependencies. Esbuild is written in Go and is 10-100 times faster than pre-building dependencies with packagers written in JavaScript.
  • Source code usually contains some files that are not directly JavaScript and need to be converted (such as JSX, CSS or Vue/Svelte components), and are often edited. At the same time, not all source code needs to be loaded at the same time. (e.g. code modules based on route splitting).
  • Vite serves source code in native ESM mode. This essentially lets the browser take over part of the packager's work: Vite only needs to transform when the browser requests source code and serve it on demand. Code that is dynamically imported based on context, that is, will only be processed when actually used on the current screen.

Webpack Disadvantages 2. Use node.js to implement

What is the difference between vite and webpack

vite improvements

    Vite will use
  • esbuild

    pre-built dependencies. Esbuild is written in Go and is 10-100 times faster than pre-building dependencies with packagers written in Node.js.

Fatal disadvantage of webpack 3. Hot update is inefficient

  • When started based on the packager, edit After the file the file itself will be rebuilt. Obviously we shouldn't rebuild the entire package, because then the update speed will plummet as the application size grows.

  • Some packager development servers keep the build in memory so that they only need to deactivate part of the module graph when files change[1], but it also still requires the entire Rebuild and reload the page. This is expensive, and reloading the page erases the current state of the application, so the packager supports dynamic module hot reloading (HMR): allowing a module to "hot replace" itself with no impact on the rest of the page. This greatly improves the development experience - however, in practice we found that even HMR update speeds dropped significantly as the app size grew.

vite improvements

  • ##In Vite, HMR is performed on the native ESM . When editing a file,

    Vite only needs to invalidate exactly the link between the edited module and its nearest HMR boundary (most of the time just the module itself), making HMR updates always fast, no matter the size of the app.

  • Vite also uses HTTP headers to speed up the reloading of the entire page (again letting the browser do more for us): requests for source code modules are negotiated and cached according to 304 Not Modified, Dependent module requests will be strongly cached through Cache-Control: max-age=31536000, immutable, so once they are cached they will not need to be requested again.

vite Disadvantages 1. Ecology, ecology, ecology is not as good as webpack

  • wepback awesome The advantage is that loaders and plugins are very rich, but I think the ecology is only a matter of time. The current Vite is more like the M1 chip Mac that just came out at that time. I was very optimistic about the M1 Mac and bought it without hesitation. Now there is no problem.

vite Disadvantages 2. The construction of prod environment, currently using Rollup

  • Reasons The reason is that esbuild is not very friendly to CSS and code splitting

##vite Disadvantage 3. It has not been used on a large scale, and many problems or demands have not been really exposed

    The day Vite really rises is related to vue3. When vue3 starts to be widely used in production environments, there is a high probability that Vite will be gradually adopted by everyone. Started to accept

Summary

##The webpack server starts slower than vite
  • Since Vite does not require packaging when starting, there is no need to analyze module dependencies and compile, so the startup speed is very fast. When the browser requests the required module, it compiles the module. This on-demand dynamic compilation mode greatly shortens the compilation time. When the project is larger and the files are more, Vite's development advantages become more obvious

    vite hot update is faster than webpack
  • vite In terms of HRM, when the content of a certain module changes, just let the browser re-request the module, instead of re-requesting the module like webpack Recompile all dependencies of this module;

    vite uses esbuild (written in Go) to pre-build dependencies, while webpack is based on nodejs, which is 10-100 times faster than node
  • vite ecology is not as good as webpack, and the loaders and plug-ins are not rich enough
  • [Related recommendations:
  • vuejs video tutorial
,

web front-end development

The above is the detailed content of What is the difference between vite and webpack. For more information, please follow other related articles on the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
React Inside HTML: Integrating JavaScript for Dynamic Web PagesReact Inside HTML: Integrating JavaScript for Dynamic Web PagesApr 16, 2025 am 12:06 AM

To integrate React into HTML, follow these steps: 1. Introduce React and ReactDOM in HTML files. 2. Define a React component. 3. Render the component into HTML elements using ReactDOM. Through these steps, static HTML pages can be transformed into dynamic, interactive experiences.

The Benefits of React: Performance, Reusability, and MoreThe Benefits of React: Performance, Reusability, and MoreApr 15, 2025 am 12:05 AM

React’s popularity includes its performance optimization, component reuse and a rich ecosystem. 1. Performance optimization achieves efficient updates through virtual DOM and diffing mechanisms. 2. Component Reuse Reduces duplicate code by reusable components. 3. Rich ecosystem and one-way data flow enhance the development experience.

React: Creating Dynamic and Interactive User InterfacesReact: Creating Dynamic and Interactive User InterfacesApr 14, 2025 am 12:08 AM

React is the tool of choice for building dynamic and interactive user interfaces. 1) Componentization and JSX make UI splitting and reusing simple. 2) State management is implemented through the useState hook to trigger UI updates. 3) The event processing mechanism responds to user interaction and improves user experience.

React vs. Backend Frameworks: A ComparisonReact vs. Backend Frameworks: A ComparisonApr 13, 2025 am 12:06 AM

React is a front-end framework for building user interfaces; a back-end framework is used to build server-side applications. React provides componentized and efficient UI updates, and the backend framework provides a complete backend service solution. When choosing a technology stack, project requirements, team skills, and scalability should be considered.

HTML and React: The Relationship Between Markup and ComponentsHTML and React: The Relationship Between Markup and ComponentsApr 12, 2025 am 12:03 AM

The relationship between HTML and React is the core of front-end development, and they jointly build the user interface of modern web applications. 1) HTML defines the content structure and semantics, and React builds a dynamic interface through componentization. 2) React components use JSX syntax to embed HTML to achieve intelligent rendering. 3) Component life cycle manages HTML rendering and updates dynamically according to state and attributes. 4) Use components to optimize HTML structure and improve maintainability. 5) Performance optimization includes avoiding unnecessary rendering, using key attributes, and keeping the component single responsibility.

React and the Frontend: Building Interactive ExperiencesReact and the Frontend: Building Interactive ExperiencesApr 11, 2025 am 12:02 AM

React is the preferred tool for building interactive front-end experiences. 1) React simplifies UI development through componentization and virtual DOM. 2) Components are divided into function components and class components. Function components are simpler and class components provide more life cycle methods. 3) The working principle of React relies on virtual DOM and reconciliation algorithm to improve performance. 4) State management uses useState or this.state, and life cycle methods such as componentDidMount are used for specific logic. 5) Basic usage includes creating components and managing state, and advanced usage involves custom hooks and performance optimization. 6) Common errors include improper status updates and performance issues, debugging skills include using ReactDevTools and Excellent

React and the Frontend Stack: The Tools and TechnologiesReact and the Frontend Stack: The Tools and TechnologiesApr 10, 2025 am 09:34 AM

React is a JavaScript library for building user interfaces, with its core components and state management. 1) Simplify UI development through componentization and state management. 2) The working principle includes reconciliation and rendering, and optimization can be implemented through React.memo and useMemo. 3) The basic usage is to create and render components, and the advanced usage includes using Hooks and ContextAPI. 4) Common errors such as improper status update, you can use ReactDevTools to debug. 5) Performance optimization includes using React.memo, virtualization lists and CodeSplitting, and keeping code readable and maintainable is best practice.

React's Role in HTML: Enhancing User ExperienceReact's Role in HTML: Enhancing User ExperienceApr 09, 2025 am 12:11 AM

React combines JSX and HTML to improve user experience. 1) JSX embeds HTML to make development more intuitive. 2) The virtual DOM mechanism optimizes performance and reduces DOM operations. 3) Component-based management UI to improve maintainability. 4) State management and event processing enhance interactivity.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat Commands and How to Use Them
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools