日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

我來教你如何組織 Vue 項目

來源: 責編: 時間:2024-05-16 17:44:24 165觀看
導讀介紹在啟動 Vue 項目時,思考項目結構至關重要。主要考慮因素是預期項目的規模。在本篇博文中,我將探討適用于不同規模 Vue 項目的各種結構。這個考慮與康威定律相吻合:"設計系統的組織受限于產生這些組織溝通結構的設計

介紹

在啟動 Vue 項目時,思考項目結構至關重要。主要考慮因素是預期項目的規模。在本篇博文中,我將探討適用于不同規模 Vue 項目的各種結構。這個考慮與康威定律相吻合:ppT28資訊網——每日最新資訊28at.com

"設計系統的組織受限于產生這些組織溝通結構的設計。" - 梅爾·康威ppT28資訊網——每日最新資訊28at.com

基本上,康威定律暗示了您的 Vue 應用程序的架構將固有地反映出您的組織架構,從而影響您應該如何規劃項目的結構。ppT28資訊網——每日最新資訊28at.com

一些常規規則

在我們開始介紹不同的項目結構之前,我想強調一些通用的規則,這些規則適用于每種結構,大部分來自于官方的 Vue 風格指南。ppT28資訊網——每日最新資訊28at.com

基礎組件命名

為您的 UI 組件使用前綴。ppT28資訊網——每日最新資訊28at.com

不好的ppT28資訊網——每日最新資訊28at.com

components/|- MyButton.vue|- VueTable.vue|- Icon.vue

好的ppT28資訊網——每日最新資訊28at.com

components/|- BaseButton.vue|- BaseTable.vue|- BaseIcon.vue

緊密耦合的組件名稱

將緊密耦合的組件名稱放在一起。ppT28資訊網——每日最新資訊28at.com

不好的ppT28資訊網——每日最新資訊28at.com

components/|- TodoList.vue|- TodoItem.vue|- TodoButton.vue

好的ppT28資訊網——每日最新資訊28at.com

components/|- TodoList.vue|- TodoListItem.vue|- TodoListItemButton.vue

組件名稱中單詞的順序

組件名稱應該以最高級別(通常是最通用的)的單詞開頭,并以描述性的修改詞結尾。ppT28資訊網——每日最新資訊28at.com

不好的ppT28資訊網——每日最新資訊28at.com

components/|- ClearSearchButton.vue|- ExcludeFromSearchInput.vue|- LaunchOnStartupCheckbox.vue|- RunSearchButton.vue|- SearchInput.vue|- TermsCheckbox.vue

好的ppT28資訊網——每日最新資訊28at.com

components/|- SearchButtonClear.vue|- SearchButtonRun.vue|- SearchInputQuery.vue|- SearchInputExcludeGlob.vue|- SettingsCheckboxTerms.vue|- SettingsCheckboxLaunchOnStartup.vue

測試

決定如何組織您的測試以及將它們放置在何處可能是另一個博文的主題。在本文中,我們將探討將測試放置在單獨的文件夾中,其中每個測試文件反映源代碼。或者,您可以將測試文件放置在它們所測試的文件旁邊。這兩種方法都是有效的。ppT28資訊網——每日最新資訊28at.com

方法 1:單獨的測試文件夾

/vue-project|-- /src|   |-- /components|   |   |-- MyComponent.vue|   |-- /views|   |   |-- HomeView.vue|-- /tests|   |-- /components|   |   |-- MyComponent.spec.js|   |-- /views|   |   |-- HomeView.spec.js|-- package.json|-- ...

方法 2:內聯測試文件

/vue-project|-- /src|   |-- /components|   |   |-- MyComponent.vue|   |   |-- MyComponent.spec.js|   |-- /views|   |   |-- HomeView.vue|   |   |-- HomeView.spec.js|-- package.json|-- ...

扁平式方法

在啟動小規模 Vue 項目(如概念驗證)時,您可能更喜歡簡單直接的文件夾結構以避免復雜性:ppT28資訊網——每日最新資訊28at.com

/src|-- /components|   |-- BaseButton.vue|   |-- BaseCard.vue|   |-- PokemonList.vue|   |-- PokemonCard.vue|-- /composables|   |-- usePokemon.js|-- /utils|   |-- validators.js|-- /layout|   |-- DefaultLayout.vue|   |-- AdminLayout.vue|-- /plugins|   |-- translate.js|-- /views|   |-- Home.vue|   |-- PokemonDetail.vue|-- /router|   |-- index.js|-- /store|   |-- index.js|-- /assets|   |-- /images|   |-- /styles|-- /tests|   |-- ...|-- App.vue|-- main.js

原子設計

對于較大的 Vue 應用程序,采用原子設計方法可能是有利的。這種方法將組件組織成從簡單到復雜的層次結構:ppT28資訊網——每日最新資訊28at.com

原子(Atoms):基本元素(例如按鈕、圖標)ppT28資訊網——每日最新資訊28at.com

分子(Molecules):由原子組成的組合體(例如搜索欄)ppT28資訊網——每日最新資訊28at.com

有機體(Organisms):復雜組件(例如導航欄)ppT28資訊網——每日最新資訊28at.com

模板(Templates):顯示組件結構的布局ppT28資訊網——每日最新資訊28at.com

頁面(Pages):具有真實數據的實際 UI 屏幕ppT28資訊網——每日最新資訊28at.com

這種方法確保了可擴展性和可維護性,并且能夠在簡單和復雜組件之間平滑過渡。ppT28資訊網——每日最新資訊28at.com

/src|-- /components|   |-- /atoms|   |   |-- AtomButton.vue|   |   |-- AtomIcon.vue|   |-- /molecules|   |   |-- MoleculeSearchInput.vue|   |   |-- MoleculePokemonThumbnail.vue|   |-- /organisms|   |   |-- OrganismPokemonCard.vue|   |   |-- OrganismHeader.vue|   |-- /templates|   |   |-- TemplatePokemonList.vue|   |   |-- TemplatePokemonDetail.vue|-- /pages|   |-- PageHome.vue|   |-- PagePokemonDetail.vue|-- /composables|   |-- usePokemon.js|-- /utils|   |-- validators.js|-- /layout|   |-- LayoutDefault.vue|   |-- LayoutAdmin.vue|-- /plugins|   |-- translate.js|-- /router|   |-- index.js|-- /store|   |-- index.js|-- /assets|   |-- /images|   |-- /styles|-- /tests|   |-- ...|-- App.vue|-- main.js

模塊

隨著項目規模的擴大,考慮采用模塊化的單塊架構。這種結構封裝了每個功能或領域,增強了可維護性,并為可能的演變向微服務方向做好了準備:ppT28資訊網——每日最新資訊28at.com

/src|-- /core|   |-- /components|   |   |-- BaseButton.vue|   |   |-- BaseIcon.vue|   |-- /models|   |-- /store|   |-- /services|   |-- /views|   |   |-- DefaultLayout.vue|   |   |-- AdminLayout.vue|   |-- /utils|   |   |-- validators.js|-- /modules|   |-- /pokemon|   |   |-- /components|   |   |   |-- PokemonThumbnail.vue|   |   |   |-- PokemonCard.vue|   |   |   |-- PokemonListTemplate.vue|   |   |   |-- PokemonDetailTemplate.vue|   |   |-- /models|   |   |-- /store|   |   |   |-- pokemonStore.js|   |   |-- /services|   |   |-- /views|   |   |   |-- PokemonDetailPage.vue|   |   |-- /tests|   |   |   |-- pokemonTests.spec.js|   |-- /search|   |   |-- /components|   |   |   |-- SearchInput.vue|   |   |-- /models|   |   |-- /store|   |   |   |-- searchStore.js|   |   |-- /services|   |   |-- /views|   |   |-- /tests|   |   |   |-- searchTests.spec.js|-- /assets|   |-- /images|   |-- /styles|-- /scss|-- App.vue|-- main.ts|-- router.ts|-- store.ts|-- /tests|   |-- ...|-- /plugins|   |-- translate.js

功能分割設計

功能分割設計是一種組織大型和長期項目以便更易于管理和擴展的方法。此方法將應用程序分成不同的層,每個層具有特定的角色:ppT28資訊網——每日最新資訊28at.com

應用程序(App):全局設置、樣式和提供者。ppT28資訊網——每日最新資訊28at.com

頁面(Pages):使用實體、功能和小部件構建完整頁面。ppT28資訊網——每日最新資訊28at.com

小部件(Widgets):將實體和功能組合成一致的 UI 塊,如 IssueList 或 UserProfile。ppT28資訊網——每日最新資訊28at.com

功能(Features):處理添加價值的用戶交互,例如發送評論、添加到購物車或搜索用戶。ppT28資訊網——每日最新資訊28at.com

實體(Entities):表示核心業務模型,如用戶、產品和訂單。ppT28資訊網——每日最新資訊28at.com

共享(Shared):提供與特定業務邏輯無關的可重用實用程序和組件,如 UIKit、庫和 API。ppT28資訊網——每日最新資訊28at.com

/src|-- /app|   |-- App.vue|   |-- main.js|   |-- app.scss|-- /processes|-- /pages|   |-- Home.vue|   |-- PokemonDetailPage.vue|-- /widgets|   |-- UserProfile.vue|   |-- PokemonStatsWidget.vue|-- /features|   |-- pokemon|   |   |-- CatchPokemon.vue|   |   |-- PokemonList.vue|   |-- user|   |   |-- Login.vue|   |   |-- Register.vue|-- /entities|   |-- user|   |   |-- userService.js|   |   |-- userModel.js|   |-- pokemon|   |   |-- pokemonService.js|   |   |-- pokemonModel.js|-- /shared|   |-- ui|   |   |-- BaseButton.vue|   |   |-- BaseInput.vue|   |   |-- Loader.vue|   |-- lib|   |   |-- api.js|   |   |-- helpers.js|-- /assets|   |-- /images|   |-- /styles|-- /router|   |-- index.js|-- /store|   |-- index.js|-- /tests|   |-- featureTests.spec.js

這種設置非常適合大型項目,因為它使得項目更容易擴展和保持整潔。要了解有關這些層如何工作的更多詳細信息,請查看官方的功能分割設計文檔ppT28資訊網——每日最新資訊28at.com

圖片圖片ppT28資訊網——每日最新資訊28at.com

微前端

微前端將微服務的思想應用于 Web 應用程序的前端部分。這意味著不同的團隊可以獨立處理 Web 應用程序的不同部分,而不會相互干擾。每個部分,或“微前端”,都可以獨立運行,并可以單獨更新。這是一個 SPA 的基本概述。請注意,本文不會深入介紹微前端的工作原理。ppT28資訊網——每日最新資訊28at.com

應用程序 Shell:這是控制主要布局和站點路由的主要控制器。它將所有微前端連接在一起。ppT28資訊網——每日最新資訊28at.com

分解的 UI:每個微前端都專注于應用程序的特定部分。它們可以使用不同的技術進行開發,并可以分別更新。ppT28資訊網——每日最新資訊28at.com

圖片圖片ppT28資訊網——每日最新資訊28at.com

主要優點是微前端讓團隊可以在不等待其他團隊的情況下更新應用程序的各個部分,這可以加快開發速度。然而,這種設置可能會使應用程序更復雜,難以管理和保持一致。ppT28資訊網——每日最新資訊28at.com

有用的資源:

微前端 - 將微服務思想擴展到前端開發ppT28資訊網——每日最新資訊28at.com

馬丁·福勒關于微前端ppT28資訊網——每日最新資訊28at.com

這種策略非常適合具有多個開發團隊的大型、復雜項目。每個團隊都可以專注于特定的業務需求,而不會影響其他團隊的工作,可能使用最適合其部分的技術。ppT28資訊網——每日最新資訊28at.com

結論

圖片圖片ppT28資訊網——每日最新資訊28at.com

希望現在清楚了,您應該選擇一個反映您組織規模和復雜性的結構。此外,更先進的結構將值得一篇獨立的博文;我只是想為您提供一個良好的概述。一般來說,您的團隊越大、越復雜,或者擁有更多的團隊,您就越應該朝著更好地分隔這些概念的結構努力。基本上,您團隊的結構將指導您確定最適合您需求的項目結構。ppT28資訊網——每日最新資訊28at.com

方法
ppT28資訊網——每日最新資訊28at.com

描述
ppT28資訊網——每日最新資訊28at.com

優點
ppT28資訊網——每日最新資訊28at.com

缺點
ppT28資訊網——每日最新資訊28at.com

扁平式方法ppT28資訊網——每日最新資訊28at.com

簡單的結構,適合小項目或概念驗證。
ppT28資訊網——每日最新資訊28at.com

- 易于實施 - 最小設置
ppT28資訊網——每日最新資訊28at.com

- 不可擴展 - 隨著項目增長而混亂
ppT28資訊網——每日最新資訊28at.com

原子設計ppT28資訊網——每日最新資訊28at.com

基于組件復雜性的分層結構。
ppT28資訊網——每日最新資訊28at.com

- 可擴展 - 有組織 - 可重用組件
ppT28資訊網——每日最新資訊28at.com

- 管理層面的開銷 - 復雜的設置
ppT28資訊網——每日最新資訊28at.com

模塊ppT28資訊網——每日最新資訊28at.com

封裝功能的模塊化結構。
ppT28資訊網——每日最新資訊28at.com

- 可擴展 - 封裝特性
ppT28資訊網——每日最新資訊28at.com

- 可能存在重復 - 可能變得復雜
ppT28資訊網——每日最新資訊28at.com

功能分割設計ppT28資訊網——每日最新資訊28at.com

將項目組織成功能層和切片。
ppT28資訊網——每日最新資訊28at.com

- 高內聚 - 明確的功能分離
ppT28資訊網——每日最新資訊28at.com

- 初始復雜性 - 需要徹底規劃
ppT28資訊網——每日最新資訊28at.com

微前端ppT28資訊網——每日最新資訊28at.com

應用程序的每個部分都可以單獨部署。
ppT28資訊網——每日最新資訊28at.com

- 獨立部署 - 可擴展
ppT28資訊網——每日最新資訊28at.com

- 復雜性高 - 需要團隊之間的協調
ppT28資訊網——每日最新資訊28at.com


ppT28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-88572-0.html我來教你如何組織 Vue 項目

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: C#異步 Task:提升程序性能的利器

下一篇: 我們一起聊聊結構體及其方法的使用法門

標簽:
  • 熱門焦點
  • Find N3入網:最高支持16+1TB

    OPPO將于近期登場的Find N3折疊屏目前已經正式入網,型號為PHN110。本次Find N3在外觀方面相比前兩代有很大的變化,不再是小號的橫向折疊屏,而是跟別的廠商一樣采用了較為常見的
  • vivo TWS Air開箱體驗:真輕 臻好聽

    在vivo S15系列新機的發布會上,vivo的最新款真無線藍牙耳機vivo TWS Air也一同發布,本次就這款耳機新品給大家帶來一個簡單的分享。外包裝盒上,vivo TWS Air保持了vivo自家產
  • 28個SpringBoot項目中常用注解,日常開發、求職面試不再懵圈

    前言在使用SpringBoot開發中或者在求職面試中都會使用到很多注解或者問到注解相關的知識。本文主要對一些常用的注解進行了總結,同時也會舉出具體例子,供大家學習和參考。注解
  • 使用AIGC工具提升安全工作效率

    在日常工作中,安全人員可能會涉及各種各樣的安全任務,包括但不限于:開發某些安全工具的插件,滿足自己特定的安全需求;自定義github搜索工具,快速查找所需的安全資料、漏洞poc、exp
  • ESG的面子與里子

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之三伏大幕拉起,各地高溫預警不絕,但處于厄爾尼諾大“烤”之下的除了眾生,還有各大企業發布的ESG報告。ESG是“環境保
  • 認真聊聊東方甄選:如何告別低垂的果實

    來源:山核桃作者:財經無忌爆火一年后,俞敏洪和他的東方甄選依舊是頗受外界關心的“網紅”。7月5日至9日,為期5天的東方甄選“甘肅行”首次在自有App內直播,
  • OPPO K11評測:旗艦級IMX890加持 2000元檔最強影像手機

    【Techweb評測】中端機型用戶群體巨大,占了中國目前手機市場的大頭,一直以來都是各手機品牌的“必爭之地”,其中OPPO K系列機型一直以來都以高品質、
  • 世界人工智能大會國際日開幕式活動在世博展覽館開啟

    30日上午,世界人工智能大會國際日開幕式活動在世博展覽館開啟,聚集國際城市代表、重量級院士專家、國際創新企業代表,共同打造人工智能交流平臺。上海市副市
  • 電博會與軟博會實現"線下+云端"的雙線融合

    在本次“電博會”與“軟博會”雙展會利好條件的加持下,既可以發揮展會拉動人流、信息流、資金流實現快速交互流動的作用,繼而推動區域經濟良性發展;又可以聚
Top 主站蜘蛛池模板: 夏津县| 黎平县| 四子王旗| 墨江| 西昌市| 博白县| 安义县| 顺昌县| 佛坪县| 沙湾县| 台江县| 东港市| 郸城县| 五寨县| 米脂县| 淮阳县| 垫江县| 威宁| 桂东县| 外汇| 静安区| 诸暨市| 临沧市| 洛南县| 印江| 古交市| 延川县| 精河县| 兴隆县| 白朗县| 南阳市| 辽宁省| 麻栗坡县| 重庆市| 古田县| 哈巴河县| 鹤壁市| 吕梁市| 金阳县| 申扎县| 河曲县|