成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

花五分鐘重新認知Vue項目src目錄

開發(fā) 前端
Vue 項目的目錄不就是 Vue CLI 嗎?讓本瓜帶你來康康作者是否還能變出什么花來?本文取其要,通譯之。

[[389324]]

Vue 項目的目錄不就是 Vue CLI 嗎?讓本瓜帶你來康康作者是否還能變出什么花來?本文取其要,通譯之。

Vue CLI

認知一個項目從認識目錄開始!Vue 項目那逃不過認知最通用的 Vue CLI 目錄結(jié)構(gòu)。

如下(已顯示全部可選項): 

  1. --public  
  2. ----img  
  3. ------icons  
  4. ----favicon.ico  
  5. ----index.html  
  6. ----robots.txt  
  7. --src  
  8. ----assets  
  9. ------logo.png  
  10. ----components  
  11. ------HelloWorld.vue 
  12. ----router  
  13. ------index.ts  
  14. ----store  
  15. ------index.ts  
  16. ----views  
  17. ------About.vue  
  18. ------Home.vue  
  19. ----App.vue  
  20. ----main.ts  
  21. ----registerServiceWorkers.ts  
  22. ----shims-vue.d.ts  
  23. --tests  
  24. ----e2e  
  25. ----unit  
  26. --.browserslistrc  
  27. --.eslintrc.js  
  28. --.gitignore  
  29. --babel.config.js  
  30. --cypress.json  
  31. --jest.config.js  
  32. --package.json  
  33. --package-lock.json  
  34. --README.md  
  35. --tsconfig.json 

Vue CLI 目錄是非常標準的 Vue 項目結(jié)構(gòu),但是它并不適用于中型或大型應(yīng)用。

原因是:我們應(yīng)該花更多的精力去關(guān)注 src 文件夾!具體往下看。

新 src 目錄

閑言少敘,改造后的目錄結(jié)構(gòu): 

  1. src  
  2. --assets  
  3. --common  
  4. --layouts  
  5. --middlewares  
  6. --modules  
  7. --plugins  
  8. --router  
  9. --services  
  10. --static  
  11. --store  
  12. --views 

讓咱們來一一揭曉為什么要設(shè)置這樣的目錄結(jié)構(gòu)!

Assets

靜態(tài)文件目錄:包含字體、圖標、圖片、樣式等靜態(tài)資源,不做贅述。

Common

公共文件夾:通常來說,它又能被拆分成多個子目錄:components、mixins、directives,又或者是單個的文件:functions.ts、helpers.ts、constants.ts、config.ts,亦或者其它。但它們有共同的特點:Common 文件夾下的文件都是在多出被引用的。

舉例:在 src/common/components 文件夾下,你可以設(shè)置 Button.vue 在全局共享的組件;在 helpers.ts 文件中寫公共方法以供多處調(diào)用。

Layouts

你可以在 Layouts 文件夾下放整個應(yīng)用的布局文件。比如 AppLayout.vue.,關(guān)于布局的更多問題可以見 這篇文章-Vue tricks: smart layouts for VueJS https://itnext.io/vue-tricks-smart-layouts-for-vuejs-5c61a472b69b

Middlewares

“中間件”這個文件夾有點類似 vue router,你可以在之下放置你的關(guān)于路由跳轉(zhuǎn)判斷文件。這里有個簡單的例子: 

  1. export default function checkAuth(next, isAuthenticated) {  
  2.   if (isAuthenticated) {  
  3.     next('/')  
  4.   } else {  
  5.     next('/login');  
  6.   }  

在 vue-router 中這樣使用 

  1. import Router from 'vue-router'  
  2. import checkAuth from '../middlewares/checkAuth.js'  
  3. const isAuthenticated = true  
  4. const router = new Router({  
  5.   routes: [],  
  6.   mode: 'history'  
  7. })  
  8. router.beforeEach((to, from, next) => {  
  9.   checkAuth(next, isAuthenticated)  
  10. }); 

此例意在做權(quán)限校驗。更多關(guān)于中間件的討論,在這篇文章-Vue tricks: smart router for VueJS

https://itnext.io/vue-tricks-smart-router-for-vuejs-93c287f46b50

Modules

Modules 文件夾是咱們應(yīng)用的核心!

此文件夾關(guān)于應(yīng)用的業(yè)務(wù)邏輯部分,它有以下類:

  •  業(yè)務(wù)組件 components
  •  測試單元 **tests**
  •  數(shù)據(jù)持久 store
  •  其它本業(yè)務(wù)相關(guān)的文件

這里有個很棒的例子:訂單業(yè)務(wù)模塊 

  1. src  
  2. --modules  
  3. ----orders  
  4. ------__tests__  
  5. ------components  
  6. --------OrdersList.vue  
  7. --------OrderDetails.vue  
  8. ------store  
  9. --------actions.ts  
  10. --------getters.ts  
  11. --------mutations.ts  
  12. --------state.ts  
  13. ------helpers.ts  
  14. ------types.ts 

包括:測試文件、組件(訂單列表、訂單詳情)、Vuex 數(shù)據(jù)、相關(guān)文件。

它又像是一個小的 src 目錄~

Plugins

Plugins 文件夾當然是用來放 plugin。在 Vue2 中,我們這樣調(diào)用 

  1. import MyPlugin from './myPlugin.ts'  
  2. Vue.use(MyPlugin, { someOption: true }) 

在 Vue3 中,我們也可以在 main.ts 中調(diào)用,更多可見 v3-using-a-plugin

https://v3.vuejs.org/guide/plugins.html#using-a-plugin

Services

Services 文件夾是放請求庫和 API 的地方,也包括對 localStorage 的管理等。

Static

通常來說,我們不需要 Static 這個文件夾,但也可以放一些 dummy data (虛擬數(shù)據(jù))。

Router

Router 文件夾放置你的路由文件,太過常見、無需贅述。你也可以根據(jù)需要只在根目錄設(shè)置 router.ts。但是更推薦你將路由進行一個劃分以便閱讀和擴展。vue-tricks-smart-router

https://itnext.io/vue-tricks-smart-router-for-vuejs-93c287f46b50

Store

Store 文件夾放置你的 Vuex 相關(guān)文件。在這個目錄下主要是一些全局的持久數(shù)據(jù)及方法:state 、 actions 、 mutations 、 getters,同時也和 modules 文件夾下的 Vuex 進行關(guān)聯(lián)。

Views

Views 文件夾是我們應(yīng)用中第二重要的文件夾了。我們都知道它包含的也是業(yè)務(wù)組件。但其實它更應(yīng)該是路由的一種映射,比如 /home /about /orders 這個路由,在 Views 文件夾下就應(yīng)該有 Home.vue、 About.vue 、Orders.vue 這三個文件!

你一定會問為什么要拆分業(yè)務(wù)部分為 Views 和 Modules 這兩個目錄,而不是像 Vue CLI 那樣放在一起?

有以下優(yōu)點:

  •  更清晰的目錄結(jié)構(gòu)
  •  更快速的了解路由
  •  更直觀看到根文件、根頁面、以及它們與子組件、子業(yè)務(wù)是如何關(guān)聯(lián)的。

小結(jié)

作者從工作中針對 Vue 項目目錄結(jié)構(gòu)進行思考,然后給出建議,并不是要求咱完全套用,咱可汲取其思想,按需所用。

本瓜以為:在實際的項目中,Vue CLI 項目確實會造成 Views 目錄的龐大,所以將 Views 改造,分為 Views 和 Modules 目錄,前者是核心的頁面(參照路由),后者是具體的子業(yè)務(wù)及相關(guān)。這樣的建議確實是不錯的思路~

其實,又回到了那個問題:如果咱足夠了解業(yè)務(wù),需求沒有頻繁的改動,目錄結(jié)構(gòu)應(yīng)該會是清晰的。但是沒辦法,再好的產(chǎn)品也避免不了來回改動。所以只能定期梳理、定期優(yōu)化了。認知目錄的過程也是對業(yè)務(wù)熟悉的過程。 

 

責任編輯:龐桂玉 來源: 前端大全
相關(guān)推薦

2020-06-16 08:47:53

磁盤

2009-11-16 10:53:30

Oracle Hint

2025-03-13 06:22:59

2024-12-11 07:00:00

面向?qū)ο?/a>代碼

2009-11-16 09:53:56

PHP上傳類

2025-01-21 07:39:04

Linux堆內(nèi)存Golang

2009-11-17 14:50:50

Oracle調(diào)優(yōu)

2023-09-07 23:52:50

Flink代碼

2022-12-16 09:55:50

網(wǎng)絡(luò)架構(gòu)OSI

2021-12-01 06:50:50

Docker底層原理

2023-07-23 18:47:59

Docker開源

2019-08-09 10:33:36

開發(fā)技能代碼

2021-06-07 09:51:22

原型模式序列化

2025-01-20 08:50:00

2009-11-05 14:53:54

Visual Stud

2021-10-19 07:27:08

HTTP代理網(wǎng)絡(luò)

2009-10-22 16:18:19

Oracle表空間

2024-09-18 08:21:24

JavaScriptTypeScriptprototype

2024-07-10 18:55:09

Python定時

2021-03-03 16:33:24

web項目外網(wǎng)
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 天天干成人网 | 国产精品福利视频 | 亚洲一区二区三区免费在线观看 | 精品国产乱码久久久久久丨区2区 | 欧美国产一区二区 | 欧美xxxx性xxxxx高清 | 一区二区电影 | 欧美精品99 | 欧美老妇交乱视频 | 奇米在线 | 91麻豆精品国产91久久久资源速度 | 亚洲一区综合 | 国产精品久久久爽爽爽麻豆色哟哟 | 一区二区三区观看视频 | 精品国产精品三级精品av网址 | 精品一区二区av | 久久久成人免费一区二区 | 亚洲精品久久久一区二区三区 | 羞羞午夜 | 中文字幕亚洲精品在线观看 | 东方伊人免费在线观看 | 欧美成年黄网站色视频 | 操操日| www.狠狠操 | 久久久久久国产 | 亚洲性在线 | 成人在线观看免费 | 午夜视频在线免费观看 | 日韩在线精品视频 | 精品久久久久久 | 国产精品国产a | 国产精品日韩一区二区 | hsck成人网| 欧美日韩一区二区在线 | 最近日韩中文字幕 | 欧美舔穴 | 亚洲va国产日韩欧美精品色婷婷 | 视频一区在线观看 | 亚洲国产精品一区二区久久 | 91麻豆精品国产91久久久久久久久 | 在线观看视频一区二区三区 |