摘自Berwin《Vue项目架构设计与工程化实践》github.com/berwin/Blog/issues/14

1.Vue依赖套件

vuex:项目复杂后,用vuex来管理状态

element-ui:基于vue2.0的组件库

vue-router:单页面应用必须使用的前端路由

axios:vue官方推荐的http客户端

vue-cli:webpack模板,功能全。有hot reload,linting,testing,css extraction等

2.整体架构设计

表现层: Store Router View Component

业务层: 服务(Service)

API层: 接口API Mock + Validator

Util层: Util

基础设施层:init(初始化配置文件) dev(开发环境) deploy(编译源码,静态文件上传cdn,Hera发步上线)

3.目录结构

|——README.md

|——build #build脚本

|——config #prod/dev build config等文件

|——hera #代码发布上线

|——index.html #最基础的网页

|——package.json

|——src #Vue.js核心业务

| |——App.vue #App Root Component

| |——api #接入后端服务的基础API

| |——assets #静态文件

| |——components #组件

| |——event-bus #Event Bus事件总线,类似EventEmitter

| |——main.js #Vue入口文件

| |——router #路由

| |——service #服务

| |——store #Vuex状态管理

| |——util #通用utility,derective,mixin还有绑定到Vue.prototype的函数

| |——view #各个页面

|——static #DevServer静态文件

|——test #测试

4.模块

表现层:

store Vuex状态管理

router 前端路由

view 各业务页面

component 通用组件

业务层:

service 处理服务端返回的数据(类似data format)例如service同时调用了不同的api,把不同的返回数据整合在一起发送到store中

API层:

api 请求数据,Mock数据,反向校验后端api

Util层

util 存放项目全局的工具函数

... 如果项目需要,可写一些vue指令

基础设施层

init 自动化初始化配置文件

dev 启动dev-server,hot-reload,http-proxy等辅助开发

deploy 编译源码,静态文件上传cdn,生成html,发布上线

全局事件机制

event-bus 主要用来处理特殊需求

5.特殊场景

1>在router中拿不到vue实例,无法直接操作vuex的方法,此时采用event-bus

2>生存周期不同步问题:event-bus的生存周期是全局的,只有在页面刷新的时候,event-bus才会重置内部状态,而组件的声明周期相对来说短了很多

6.登录功能逻辑

client          ——请求数据——>       server
<——返回未登录错误码—— ——>跳转 登录中心
<——sid ——请求数据(携带sid)——>
<——返回数据 + 种cookie—— ——请求数据(携带cookie)——>
<—— 返回数据 ——
1>监听所有api的响应,如果未登录后端会返回一个错误码
2>如果后端返回

Vue项目架构设计与工程化实践的更多相关文章

  1. Vue 项目架构设计与工程化实践

    来源 文中会讲述我从0~1搭建一个前后端分离的vue项目详细过程 Feature: 一套很实用的架构设计 通过 cli 工具生成新项目 通过 cli 工具初始化配置文件 编译源码与自动上传CDN Mo ...

  2. 基于 Angularjs&Node.js 云编辑器架构设计及开发实践

    基于 Angularjs&Node.js 云编辑器架构设计及开发实践 一.产品背景 二.总体架构 1. 前端架构 a.前端层次 b.核心基础模块设计 c.业务模块设计 2. Node.js端设 ...

  3. 项目开发中的一些注意事项以及技巧总结 基于Repository模式设计项目架构—你可以参考的项目架构设计 Asp.Net Core中使用RSA加密 EF Core中的多对多映射如何实现? asp.net core下的如何给网站做安全设置 获取服务端https证书 Js异常捕获

    项目开发中的一些注意事项以及技巧总结   1.jquery采用ajax向后端请求时,MVC框架并不能返回View的数据,也就是一般我们使用View().PartialView()等,只能返回json以 ...

  4. no.2淘宝架构背后——零售业务中台架构设计探讨及实践读后感

    2017年8月12日,袋鼠云首席架构师正风在“网易博学实践日:大数据与人工智能技术大会”进行<淘宝架构演进背后——零售业务中台架构设计探讨及实践>演讲分享.传统零售行业如何选择应对新经济模 ...

  5. Vue 项目骨架屏注入与实践

    作为与用户联系最为密切的前端开发者,用户体验是最值得关注的问题.关于页面loading状态的展示,主流的主要有loading图和进度条两种.除此之外,越来越多的APP采用了“骨架屏”的方式去展示未加载 ...

  6. 基于Repository模式设计项目架构—你可以参考的项目架构设计

    关于Repository模式,直接百度查就可以了,其来源是<企业应用架构模式>.我们新建一个Infrastructure文件夹,这里就是基础设施部分,EF Core的上下文类以及Repos ...

  7. QingStor 对象存储架构设计及最佳实践

    对象存储概念及特性 在介绍 QingStor️对象存储内部的的架构和设计原理之前,我们首先来了解一下对象存储的概念,也就是从外部视角看,对象存储有什么特性,我们应该如何使用. 对象存储本质上是一款存储 ...

  8. Springboot项目架构设计

    导航 前言 流水线 架构的艺术 项目架构 理解阿里应用分层架构 superblog项目架构 结语 参考 本节是<Spring Boot 实战纪实>的第7篇,感谢您的阅读,预计阅读时长3mi ...

  9. 企业架构设计之IFW实践回顾

    前言 笔者几年前曾参与过一套网络银行的系统建设以及后续这套系统在信用.云服务.保险.基金.支付等领域的复用,使用了IFW模型的变体.当时仅仅是根据架构师的设计进行编码.测试和交付以及后续的维护,没有对 ...

随机推荐

  1. pat06-图4. Saving James Bond - Hard Version (30)

    06-图4. Saving James Bond - Hard Version (30) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作 ...

  2. 10个常见的Redis面试"刁难"问题--转

    高可用架构 导读:在程序员面试过程中Redis相关的知识是常被问到的话题.作为一名在互联网技术行业打击过成百上千名的资深技术面试官,本文作者总结了面试过程中经常问到的问题.十分值得一读. 作者简介:钱 ...

  3. jqGrid方法整理

    一.colModel 表体结构配置 name 必要的属性,具有唯一标识性,如在弹出的editform窗体中,将作为input的name属性 index        为排序用,最方便的是设为数据库字段 ...

  4. 你会用setTimeout吗

    定义很简单 setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式. 广泛应用场景 定时器,轮播图,动画效果,自动滚动等等 上面一些应该是setTimeout在大家心中的样子,因为我们 ...

  5. 在 CentOS 上安装 vsftp 服务

    在 CentOS 上安装 vsftp 服务 1.查看当前 CentOS 服务器是否已安装了 vsftpd 服务: rpm -q vsftpd 如果打印如下类似的信息则表明已安装 vsftpd 服务: ...

  6. #include stdio.h(6)

    #include <stdio.h> int main() { //**************3.字符数组************** ] = {'i','P','\0','o','n' ...

  7. 文本框textarea根据输入内容自适应高度 和输入中文和数字换行解决方法

    textarea内容可从后台读取或手动输入,常规输入后中文和数字会出现换行问题 <style> #textarea { display: block; margin: 0 auto; ov ...

  8. DXperience Winforms新版本13.2功能预览

    据界面控件厂商 DevExpress 官方最新消息,大家期盼已久的DXperience 13.2终于要面世了.今天在这里提前跟大家提前披露一下DXperience Winforms 13.2的一些精彩 ...

  9. “System.OutOfMemoryException”类型的未经处理的异常在 mscorlib.dll 中发生

    在VS中写程序遇到这样的问题.但数据规模小的时候不出现,但数据规模大的时候就出现.但我的电脑用32G内存.处理的文本也不是很多,在文本alignment时出错.

  10. 【2017-06-17】QtGui基础控件:QSpinBox及QDoubleSpinBox

    今天开始一个新的系列,主要是翻译并摘录QtGui中基础空间的常用方法,并做一些简单的实验程序: 我觉得这是一个炒冷饭的行为,但有时候冷饭不能不炒,不热不好吃,而且也很容易发霉. 其实到现在这种状态,对 ...