基于vue-cli脚手架修改而成的多页面项目脚手架,每一个页面是一个独立的SPA应用,可用于复杂的项目开发或多项目开发中。
必备知识点
ES6常用特性
Vuex基础介绍
项目结构
项目目录
状态管理目录
主要目录说明
api
目录:集中管理整个应用的api数据请求filters
目录:注册Vue全局的filter,便于在所有页面中使用components
目录:存放多个页面共用的Vue组件modules
目录:管理每个独立的页面(频道)store
目录:管理应用的全局状态
页面划分
modules
下每一个目录是一个独立的SPA页面的相关资源,把项目划分为多个频道,一个SPA页面为一个频道,每个频道下的相关子页面放置于views目录中
好处是不同的频道可由不同的人开发,互不干扰,技术方案也可以不同,比如可不用vue-router、vuex等相关插件,结合jQuery或者其它路由管理模块使用,只把vue做为页面资源模块加载和容器也是可以的。
路由配置
使用懒加载的方式加载路由对应的组件const SupplierData = resolve => require(['./views/supplier-data.vue'], resolve)
const SupplierList = resolve => require(['./views/supplier-list.vue'], resolve)
const SupplierSetup = resolve => require(['./views/supplier-setup.vue'], resolve)
export default [
{
path: '/',
meta:'首页',
redirect: '/data',
}{
path: '/data',
meta:'商户数据',
component: SupplierData,
},{
path: '/list',
meta: '商户列表',
component: SupplierList,
},{
path: '/setup',
meta: '商户设置',
component: SupplierSetup,
}
];
给路由注册全局的钩子,用于显示loading指示页面的切换状态
router.beforeEach((to, from , next) => { |
Vuex数据流转
使用Vuex集中管理页面组件的状态,在编写组件时,将 store
中的 Getters/State/Mutaions/Actions
映射至组件,组件的事件操作触发Actions或Mutations来更新所绑定的状态数据,从而触发UI的更新。
getters
返回 store 中computed 属性state
返回 store 中状态属性 datamutations
返回唯一同步改变state的方法actions
返回异步获取数据提交commit更新state的方法
RESTful API设计
REST(Representational State Transfer)
的名称”表现层状态转化”中,省略了主语。”表现层”其实指的是”资源”(Resources)的”表现层”。
特点
- 每一个URI代表一种资源;
- 客户端和服务器之间,传递这种资源的某种表现层;
- 客户端通过四个HTTP动词,对服务器端资源进行操作,实现”表现层状态转化”。
HTTP动词
使用 HTTP动词
来区别对数据的操作:
- GET(SELECT):从服务器取出资源(一项或多项)。
- POST(CREATE):在服务器新建一个资源。
- PUT(UPDATE):在服务器更新资源(客户端提供改变后的 完整资源)。
- PATCH(UPDATE):在服务器更新资源(客户端提供改变的 属性)。
- DELETE(DELETE):从服务器删除资源。
示例
一级API
GET /users - 获取用户列表
GET /users/1 - 获取 Id 为 1 的用户
POST /users - 创建一个用户
PUT /users/1 - 替换 Id 为 1 的用户
PATCH /users/1 - 修改 Id 为 1 的用户
DELETE /users/1 - 删除 Id 为 1 的用户
多级API
GET /users/1/products - 获取 Id 为 1 用户下的产品列表
GET /users/1/products/2 - 获取 Id 为 1 用户下 Id 为 2 的产品
POST /users/1/products - 在 Id 为 1 用户下,创建一个产品
PUT /users/1/products/2 - 在 Id 为 1 用户下,替换 Id 为 2 的产品
PATCH /users/1/products/2 - 修改 Id 为 1 的用户下 Id 为 2 的产品
DELETE /users/1/products/2 - 删除 Id 为 1 的用户下 Id 为 2 的产品
注册与登录的API设计
登录/登出对应的服务端资源应该是session操作,所以相关api应该如下:
- GET /session 获取会话信息
- PUT /session 更新会话信息 (心跳)
- POST /session 创建新的会话(登入)
- DELETE /session 销毁当前会话(登出)
注册对应的资源是user
- GET /user/:id 获取id用户的信息
- PUT /user/:id 更新id用户的信息
- POST /user 创建新的用户(注册)
- DELETE /user/:id 删除id用户(注销)
结合Vue-resource
使用 vue-resource 对API进行集中式管理
vue-resource 对应restful的操作get: {method: 'GET'},
save: {method: 'POST'},
query: {method: 'GET'},
update: {method: 'PUT'},
remove: {method: 'DELETE'},
delete: {method: 'DELETE'}
//api.js |
在actions中导入api模块进行异步请求操作
import { apiSession, apiMenus } from '../../../api/' |