# 從共用Vite到React、Vue前端框架的比較與共通性
###### tags: `開發工具` `前端框架` `Vue` `React` `前端`
- 有了vite,輕量級前端框架連編譯工具也能共用了
- React(18)和Vue(3)儘管設計理念有差異,也能對照出相似之處
## Vite是什麼樣的工具?
- [官網簡介](https://cn.vitejs.dev/guide/)
- 功能類似[Vue](https://zh-hans.reactjs.org/docs/getting-started.html)生態的[vue-cli](https://cli.vuejs.org/zh/guide/creating-a-project.html)、[React](https://zh-hans.reactjs.org/docs/getting-started.html)生態的[create-react-app](https://github.com/facebook/create-react-app),執行開發用伺服器(dev server)與打包編譯檔案(build/webpack)
- 但是**執行速度快超多!**
- [如名稱辭源強調的](https://www.larousse.fr/dictionnaires/francais-chinois/vite/40868),啟動與修改專案的等待時間大幅縮短,短到幾乎不用等
- [技術說明:用 ESM + ES6 減免 build 的時間,且放棄IE支援](https://blog.techbridge.cc/2020/08/07/vite-and-esmodules-snowpack/)([簡易版介紹](https://ithelp.ithome.com.tw/articles/10266460https://ithelp.ithome.com.tw/articles/10266460))
- "V"開頭的名稱看起來是Vue生態系的一部分(也直接由Vue開發者創造),但其實遠遠不只如此...
- 更可說是新世代的前端框架共通工具
- 因為[連與Vue直接競爭的React、Svelte也可以使用](https://cn.vitejs.dev/guide/#trying-vite-online)(撈過界的概念?)
- 建立專案類型選擇的引導指令:`npm create vite@latest`
## Vite的實作應用參考
- Vue
- [2021年鐵人賽的系列文章:以Vite + Vue 3 Composition API開發](https://ithelp.ithome.com.tw/users/20139636/ironman/3890)
- React
- [從 Create-React-App 到 Vite 的修改](https://hackmd.io/@pSnFKx_GTlmTWXn4A8lpKw/HkAUZzSvY)
## 前端框架Vue和React的異同之處!
- 網路文章參考:
- [語法、特性平行對照範例](https://zhuanlan.zhihu.com/p/137046152)
- [一些運作概念的比較](https://hhow09.github.io/react/react-vs-vue/)
- 簡易實作:用Vite個別產生Vue和React的專案來對照檔案目錄
- 由於頁面內容架構大致一樣,可以直接比對檔案結構與語法
- 特性差異簡單對照:
- Vue:
- 詳細語法除了官網,[也可參考此書](https://book.vue.tw/menu.html)
1. 對應"View"的讀音與意涵:***主要處裡「視圖」(瀏覽器能看到的部分)***
2. 結構相對明確,較適合小型專案與[漸進式框架](https://ithelp.ithome.com.tw/articles/10216661)使用
3. 如**HTML結構模板**(template)的.vue檔案
4. 提供模板格式額外的**v-指令**
5. 元件(Component)語法
- **舊版(物件導向):Options API**
- **新版(函式導向):Composition API**
6. 主要路由套件方案:Vue Router
7. 主要狀態管理套件:Vuex
- React:
- 詳細語法除了官網,[也可參考之前的系列筆記](https://hackmd.io/@BOBYZH/H1JqsfYg9)
1. 直接對應單字詞義本身:***因應資料變化更新畫面的「反應」***
2. 結構相對自由,較適合中大型專案與跨裝置開發(React Native)
3. **以JavaScript為基礎擴充語法**的.**JSX**(或.js)檔案
4. 強調使用**原生JS語法**操作(含JSX改寫)
5. 元件(Component)語法
- **舊版(物件導向):class components**
- **新版(函式導向):function components (hooks)**
6. 主要路由套件方案:React-router(-dom)
7. 主要狀態管理套件:Redux
- **共通之處:元件模組化、虛擬DOM掛載、狀態管理、生命週期、props...**
- 簡言之,大致了解Vue和React後(如翻完說明文件或專書),可以發現二者算是在共通的現代前端架構下,提供不同但能對照的方案
- 因此,學習一種框架後在學另一種會更容易(已經先有概念,再找對應與差異的部分)