书接上回,这次我们来聊一下,我之前项目中关于 vue 的架构实践,也欢迎大佬们指出不足。
我们先看一下整体的目录结构:
1 | . |
首先对于视图层分成了三块:components
、 layouts
和 views
:
components
为公共组件,主要包括原子组件(比如 Button、Modal等)和业务公用组件,从深度上,此处的目录层级结构应该尽量扁平,不应该有很深的层级;
layouts
主要用来负责基本的布局,每个页面都会是 layout 组件的子集,BasicLayout
是页面基本布局,会是用得最多的布局,BlankLayout
是空白页面,方便处理一些特殊页面;
views
主要是路由页面组件,。
router
中是页面路由,最上层的路由的 Component 会是layout
中的 Component,其 children 则是 views
中的 Component :
1 | [ |
styles
下会是所有全局的样式,比如全局的变量、mixin 以及修改的ant-design
的样式等。
所有的接口都会放在Api
目录下,做统一管理。utils
下面的http
目录是对 axios 的二次封装,集成了拦截器、统一错误处理、 token 处理等功能。
1 | const handleError = (message) => { |
store
的管理按照modules
进行拆分,根级别的只放类似globalLoading
这种状态管理,其他的状态管理按照业务拆分成 modules。
1 | // root store |
constants
主要存放常量,用于 store 的常量放在单独文件内,其他常量的管理也按业务进行拆分。
assets
主要存放代码以外的静态资源,比如图片、视频等,资源需要按业务进行分类,方便管理这些静态资源。