Vue CLI VS Vite

Vue CLI與Vite區別:

Vue CLI與Vite之間存在明顯的區別,這些區別主要體現在實現原理、優化策略、開發環境速度、構建速度、依賴關系分析和插件系統等方面。以下是關于Vue CLI和Vite區別的詳細分析:

  1. 實現原理
    • Vue CLI:使用Webpack作為默認的構建工具。Webpack是一個模塊打包工具,它將項目中的所有資源打包成一個或多個bundle,以優化加載性能。Vue CLI還支持其他構建工具,如Parcel
    • Vite:基于ESModule的構建工具。它利用原生ESModule的特性,將每個文件作為一個模塊,通過瀏覽器去解析和執行,而不需要提前將文件打包成一個單獨的bundle
  2. 優化策略
    • Vue CLI:通過多個功能和插件來進行優化,包括代碼分割、壓縮、緩存等。Webpack提供的各種功能使得Vue CLI能夠靈活地配置和優化構建輸出。
    • Vite:在開發環境中通過將源代碼直接發送到瀏覽器,避免了傳統的打包過程,實現了更快的開發啟動速度。此外,Vite還通過按需加載模塊和使用緩存來提高構建和打包的性能。
  3. 開發環境速度
    • Vue CLI:啟動速度相對較慢,因為它需要進行完整的打包過程。
    • Vite:開發環境啟動速度較快,因為它充分利用了原生ESModule的特性,避免了傳統的打包過程。
  4. 構建速度
    • Vue CLI:在構建速度上可能相對較慢一些,尤其是在大型項目中,因為Webpack需要處理和分析項目中的所有依賴和模塊。
    • Vite:由于Vite在開發環境中的優勢,構建速度通常也較快。
  5. 依賴關系分析
    • Vue CLI:Webpack在處理依賴關系時,可能不如Vite那樣細粒度,因此可能存在一些冗余的模塊。
    • Vite:可以更細粒度地分析依賴關系,實現按需加載,減小了構建體積
  6. 插件系統
    • Vue CLI:使用基于Webpack的插件系統,Webpack生態相對成熟,有更多的插件可供選擇。
    • Vite:使用了Rollup作為其構建引擎,這與Vue CLI使用的Webpack不同。這也導致了一些在插件系統上的不同。

綜上所述,Vue CLI和Vite各有其優勢和特點。Vue CLI以其豐富的插件和靈活的Webpack配置而受到開發者的青睞,而Vite則以其快速的啟動速度和開發體驗成為現代前端開發的熱門選擇。根據項目的具體需求和開發者的偏好,可以選擇適合的構建工具。

webpack

Webpack 是一個用于現代 JavaScript 應用程序的靜態模塊打包工具。以下是關于 Webpack 的詳細解釋,按照清晰的格式分點表示和歸納:

1. 基本概念

  • 定義:Webpack 是一個模塊打包器(module bundler),它可以將許多分散的模塊按照依賴關系打包成一個或多個 bundle,以供瀏覽器使用。
  • 作用在 Webpack 的處理過程中,它會構建一個依賴圖(dependency graph),這個圖對應到項目所需的每個模塊,并生成一個或多個 bundle。

2. 主要功能

  1. 代碼分割:Webpack 可以將代碼分割成不同的 chunk,實現按需加載,降低初始化時間。
  2. 模塊化:Webpack 天然支持模塊化,包括 CommonJS、AMD、ES6 等模塊語法。
  3. Tree Shaking:在 Webpack 2.0 中引入,用于提取公共代碼,去掉死亡代碼,減少打包后的文件大小。
  4. 加載器(Loaders):Webpack 使用加載器來處理非 JavaScript 文件(如 CSS、圖片等),并將它們轉換為瀏覽器可識別的格式。
  5. 插件(Plugins):Webpack 允許使用插件來擴展其功能,如 HotModuleReplacementPlugin(熱模塊替換插件)、html-webpack-plugin(生成 HTML 文件插件)等。

3. 配置文件

  • webpack.config.js:Webpack 的主要配置文件,用于定義入口文件、輸出路徑、加載器、插件等選項

4. 入口(Entry)與出口(Output)

  • 入口:指定 Webpack 從哪個模塊開始構建依賴關系圖。可以是單入口或多入口。
  • 出口:定義 Webpack 打包后的文件輸出位置和名稱。

5. 優化策略

  • 減少入口文件大小:將入口文件拆分為多個較小的模塊,使用動態導入(dynamic imports)按需加載。
  • 代碼分割:通過配置 Webpack 的代碼分割功能,將項目代碼分割成多個塊(chunks),并在需要時按需加載。
  • 使用 Tree Shaking:只保留項目中實際使用到的代碼,剔除未使用的代碼。
  • 優化加載速度:使用插件如 MiniCssExtractPlugin 提取 CSS 代碼,使用 babel-loader 的緩存機制等。
  • 并行構建:使用插件如 thread-loader 或 happypack 將任務分發給多個子進程并行處理。

6. 插件系統

Webpack 提供了強大的 Plugin 接口,允許開發者通過插件來擴展其功能。插件可以用于執行范圍廣泛的任務,如優化、壓縮、混淆、哈希等。

7. 與其他工具的區別

  • 與 Grunt 和 Gulp 的區別:Grunt 和 Gulp 是任務運行器,用于執行一系列任務(如編譯、壓縮等)。而 Webpack 則是一個模塊打包器,它將項目中的所有資源打包成一個或多個 bundle。

8. 總結

Webpack 是一個功能強大的模塊打包工具,它可以幫助開發者更有效地管理和優化現代 JavaScript 應用程序的資源。通過配置入口、出口、加載器和插件等選項,Webpack 可以實現代碼分割、模塊化、Tree Shaking 等功能,從而提高應用程序的性能和可維護性。

Vue Cli配置文件 VS Vite配置文件

Vue Cli配置文件

vue.config.js?是 Vue CLI 項目中的一個可選配置文件,它允許你對 Vue CLI 項目的底層 webpack 配置進行更細粒度的調整。然而,需要注意的是,vue.config.js?主要用于 Vue CLI 3 和 Vue CLI 2(通過 vue-cli-service),而 Vite 并不使用這個文件,因為 Vite 的構建配置是通過?vite.config.js?或?vite.config.ts?來進行的。

vue.config.js 配置文件詳解

以下是一些常見的?vue.config.js?配置項:

  1. publicPath

    • 類型:string
    • 默認值:'/'
    • 用途:構建時的公共路徑。例如,如果你打算將你的應用部署在子路徑上,你需要設置這個值。
  2. outputDir

    • 類型:string
    • 默認值:'dist'
    • 用途:指定構建的輸出目錄。
  3. assetsDir

    • 類型:string
    • 默認值:''
    • 用途:放置生成的靜態資源(js、css、img、fonts)的目錄(相對于?outputDir)。
  4. indexPath

    • 類型:string
    • 默認值:'index.html'
    • 用途:指定生成的?index.html?的輸出路徑(相對于?outputDir)。
  5. filenameHashing

    • 類型:boolean
    • 默認值:true
    • 用途:是否在構建的文件名中包含 hash。
  6. css

    • 類型:Object
    • 用途:對 CSS 相關的 webpack 加載器進行配置。
      • extract:是否將 CSS 提取到單獨的文件中。
      • sourceMap:是否為 CSS 開啟 source map。
      • loaderOptions:對 CSS 加載器進行更細粒度的配置。
  7. devServer

    • 類型:Object
    • 用途:對開發服務器進行配置。
      • port:開發服務器監聽的端口。
      • host:開發服務器監聽的地址。
      • https:是否使用 HTTPS。
      • open:是否在構建完成后自動打開瀏覽器。
      • ... 以及其他 webpack-dev-server 的配置項。
  8. configureWebpack

    • 類型:Object | Function
    • 用途:直接修改底層的 webpack 配置。
      • 如果你返回一個對象,它會被合并到最終的 webpack 配置中。
      • 如果你返回一個函數,它會被調用并接收當前的 webpack 配置作為參數。你可以直接修改這個配置,或者返回一個新的配置對象。
  9. chainWebpack

    • 類型:Function
    • 用途:一個基于 webpack-chain 的函數,允許你以鏈式 API 的方式修改 webpack 配置。
  10. pluginOptions

    • 類型:Object
    • 用途:為第三方插件提供選項。

Vite配置文件

vite.config.js?或?vite.config.ts?是 Vite 的配置文件,它允許你定制 Vite 的構建和開發行為。以下是一些常見的配置項:

  1. build

    • outDir:構建輸出目錄。
    • assetsDir:靜態資源目錄。
    • rollupOptions:傳遞給 Rollup 的選項。
    • minify:是否壓縮代碼。
    • ...等等
  2. resolve

    • alias:為模塊路徑設置別名。
    • dedupe:去重相同的依賴。
    • ...等等
  3. css

    • preprocessorOptions:CSS 預處理器選項(如 Sass、Less 等)。
    • postcss:PostCSS 配置。
    • ...等等
  4. server

    • port:開發服務器端口。
    • host:開發服務器主機。
    • https:啟用 HTTPS。
    • proxy:設置代理規則。
    • cors:配置 CORS。
    • ...等等
  5. plugins

    • 你可以在這里添加或配置 Vite 插件。
  6. optimizeDeps

    • 用于優化依賴項預構建的選項。
  7. define

    • 全局定義常量。
  8. esbuild

    • 用于配置 esbuild 的選項(Vite 使用 esbuild 進行快速的 JavaScript 轉換)。
  9. resolve.include

    • 強制包含某些文件或目錄,即使它們沒有被顯式導入。
  10. envDir

    • 指定?.env?文件的目錄。
  11. test

    • 單元測試相關的配置。
  12. features

    • 啟用或禁用 Vite 的某些特性。

常見問題:

[plugin:vite:css] Preprocessor dependency "less" not found. Did you install it?

這個錯誤信息表明 Vite 構建工具在嘗試編譯 Less 樣式文件時,找不到對應的 Less 預處理器的依賴。Less 是一種 CSS 預處理器,它允許你使用變量、嵌套規則、混合(mixin)等特性來編寫更可維護的樣式代碼。

為了解決這個問題,你需要確保已經安裝了 Less 預處理器以及與之相關的 Vite 插件(如果適用)。以下是解決步驟:

  1. 安裝 Less 和(可選的)Vite 插件:

    首先,你需要安裝 Less 預處理器。如果你使用的是 npm,可以運行以下命令:

npm install less --save-dev

如果你使用的是 yarn,則運行:

yarn add less --dev

如果你正在使用 Vite 并且想要一個專門為 Less 設計的插件(盡管 Vite 本身可能已經內置了對 Less 的支持),你可以安裝?vite-plugin-less(如果它存在并且你需要特定的功能)。但是,請注意,截至 2023 年,Vite 官方已經內置了對 Less 的支持,因此你可能不需要額外的插件。

npm install node-less

配置 Vite(如果你使用了額外的插件):

如果你安裝了?vite-plugin-less,你需要在 Vite 的配置文件中(通常是?vite.config.js? 或?vite.config.ts)添加相應的插件配置。例如:

// vite.config.js  
import less from 'vite-plugin-less';  export default {  plugins: [  // ... 其他插件  less(),  ],  // ... 其他配置  
};
  1. 但請注意,由于 Vite 可能已經內置了對 Less 的支持,因此這步可能是不必要的。

  2. 重啟 Vite 開發服務器:

    安裝完依賴后,你需要重啟 Vite 開發服務器來應用這些更改。你可以通過停止當前的服務器進程并重新啟動它來完成這個操作,或者使用熱重載(如果它支持的話)。

  3. 清除緩存:

    有時候,構建工具可能會緩存舊的配置或依賴。如果你懷疑這是問題所在,可以嘗試清除 Vite 的緩存并再次嘗試構建。對于 Vite,通常可以通過刪除?node_modules/.vite?目錄和?package-lock.json?或?yarn.lock?文件,然后重新安裝依賴來清除緩存。

按照這些步驟操作后,你應該能夠解決 "Preprocessor dependency 'less' not found" 的錯誤。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/38422.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/38422.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/38422.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Spring Boot】Spring Boot簡介

1、概述 Spring Boot是一個用于創建獨立、生產級別的基于Spring的應用程序的開發框架。旨在簡化Spring應用的初始搭建和開發過程。它通過自動配置和大量默認配置,使得開發者能夠快速搭建一個獨立的Spring應用,無需進行大量的手動配置。 2、主要特點 快…

【一篇搞懂】操作系統期末大題:進程同步與互斥 PV操作

文章目錄 一、前言🚀🚀🚀二、正文:??????題型一:利用信號量實現前驅關系題型二:利用信號量實現資源同步與互斥 一、前言🚀🚀🚀 本文簡介:這是一篇基于b…

無人機遠程控制:北斗短報文技術詳解

無人機(UAV)技術的快速發展和應用,使得遠程控制成為了一項關鍵技術。無人機遠程控制涉及無線通信、數據處理等多個方面,其中北斗短報文技術以其獨特的優勢,在無人機遠程控制領域發揮著重要作用。本文將詳細解析無人機遠…

2024-06-26 base SAS programming 學習筆記6(proc report)

proc report可以生成報表,基本格式: proc report data options; (options 可以是windows/WD表示將結果輸出至單獨的報表窗口,或者nowindows/nowd將結果輸出至HTML結果窗口) column variables ;(篩選待輸出的變量,變量名與變量名之…

09_計算機網絡模型

目錄 OSI/RM七層模型 OSI/RM七層模型 各層介紹及硬件設備 傳輸介質 TCP/IP協議簇 網絡層協議 傳輸層協議 應用層協議 完整URL的組成 IP地址表示與計算 分類地址格式 子網劃分和超網聚合 無分類編址 特殊含義的IP地址 IPv6協議 過渡技術 OSI/RM七層模型 OSI/RM七…

區間動態規劃——最長回文子序列長度(C++)

把夜熬成粥,然后喝了它。 ——2024年7月1日 書接上回:區間動態規劃——最長回文子串(C)-CSDN博客,大家有想到解決辦法嗎? 題目描述 給定一個字符串s(s僅由數字和英文大小寫字母組成&#xff0…

微積分-導數3(微分法則)

常見函數的導數 常量函數的導數 d d x ( c ) 0 \frac{d}{dx}(c) 0 dxd?(c)0 常量函數的圖像是一條水平線 y c y c yc,它的斜率為0,所以我們必須有 f ′ ( x ) 0 f(x) 0 f′(x)0。從導數的定義來看,證明也很簡單: f ′ …

在node.js環境中使用web服務器http-server運行html靜態文件

http-server http-server是一個超輕量級web服務器,它可以將任何一個文件夾當作服務器的目錄供自己使用。 當我們想要在服務器運行一些代碼,但是又不會配置服務器的時候,就可以使用http-server就可以搞定了。 使用方法 因為http-server需要…

Linux Vim 進階教程

Linux Vim 進階教程 1. 簡介 Vim(Vi IMproved)是一款功能強大的文本編輯器,廣泛應用于Linux和Unix系統中。本教程將深入探討Vim的高級功能和技巧,幫助您提升編輯效率和使用體驗。 2. Vim 配置和插件管理 2.1 配置文件 .vimrc …

QT拖放事件之三:自定義拖放操作-利用QDrag來拖動完成數據的傳輸

1、運行效果 1)Qt::MoveAction 2)Qt::CopyAction 2、源碼 #include "Widget.h" #include "ui_Widget.h" #include "common.h"

二級建造師(建筑工程專業)考試題庫,高效備考!!!

16.在施工合同履行期間發生的變更事項中,屬于工程變更的是()。 A.質量要求變更 B.分包單位變更 C.合同價款變更 D.相關法規變更 答案:A 解析:工程變更一般是指在工程施工過程中,根據合同約定對施工的…

練習 String翻轉 注冊處理 字符串統計

p493 將字符串中指定部分進行翻轉 package chapter;public class reverse {public static void main(String[] args) {String str "abcdef";str reverseMethod(str,0,3);System.out.println(str);}public static String reverseMethod(String str, int start, in…

恭賀甘露海首屆道教南宗養生論壇暨天臺山第十屆道醫大會圓滿成功

6月13日,首屆中國道教南宗養生論壇暨天臺山第十屆道醫學術交流大會在浙江新昌重陽宮千人會場隆重開幕。 本次大會主辦單位:天臺山桐柏宮 中國民間中醫醫藥研究開發協會道醫學分會, 承辦單位:新昌縣重陽宮 ,協辦單位&…

網絡基礎:靜態路由

靜態路由是一種由網絡管理員手動配置的路由方式,用于在網絡設備(如路由器或交換機)之間傳遞數據包。與動態路由不同,靜態路由不會根據網絡狀態的變化自動調整。 不同廠商的網絡設備在靜態路由的配置上有些許差異;下面…

什么是以太坊合約ABI(Application Binary Interface)

文章目錄 什么是以太坊合約ABI一、背景二、ABI(Application Binary Interface)三、怎么生成ABIsolc命令 四、abi內容FunctionEvent函數選擇器 五、參考 什么是以太坊合約ABI 一、背景 以太坊的智能合約程序,是在以太坊虛擬機(Et…

網絡構建關鍵技術_2.IPv4與IPv6融合組網技術

互聯網數字分配機構(IANA)在2016年已向國際互聯網工程任務組(IETF)提出建議,要求新制定的國際互聯網標準只支持IPv6,不再兼容IPv4。目前,IPv6已經成為唯一公認的下一代互聯網商用解決方案&#…

安卓開發app-基礎的java項目構建補充知識

安卓開發app-基礎的java項目構建補充知識!上一次分享了基礎的項目構建,但是還遺漏了一些基礎的內容。今天補充完整。 首先,是關于項目的一些配置文件的信息。 第一個配置文件:{setting.gradle} 國內阿里云倉庫地址信息&#xff1…

定制型汽車傳感器在汽車中的應用

定制型汽車霍爾傳感器在汽車中的應用及功能 曲軸和凸輪軸位置傳感器: 這些傳感器用于監測發動機的曲軸和凸輪軸的位置,幫助發動機管理系統精確控制點火時機和燃油噴射,提高發動機效率。 變速器控制系統: 在自動變速器中&#xf…

Linux虛擬串口設置

VSPD虛擬串口軟件安裝及使用 一、軟件安裝 1、Configure Virtual Serial Port Driver(VSPD) 1.1 首先下載 Configure Virtual Serial Port Driver(VSPD) 軟件 鏈接:https://pan.baidu.com/s/11aGc2aHGUew5QZ0XhaWXJw 提取碼:rmd7 1.2 安裝時注意將…

第20集《大乘起信論》

請大家打開《講義》第三十九頁。我們這一科是講未二、更約因緣互相成辦。 這地方是說,既然我們內心的本覺是沒有差別的,本覺在內心當中,白天、晚上不斷的熏習我們,但是為什么每一個人的成佛之道,會有這么多差別的因緣…