Skip to content

lzxb/vue-demo

Repository files navigation

前言

这个项目最开始建立的是2016年的时候,如今已经过去了6年多,时光匆匆,如今 TS 已经流行起来,并且自己已经在 SSR 方面实践颇多,所以就花了半天的时间使用 Genesis 写了一个完整的 Vue SSR 的demo。

快速开发

# 开发环境启动 npm run dev # 打包生产环境代码 npm run build # 执行TS类型检查 npm run type-check # 生产环境运行 npm run start

更新日志

  • 2022-08
  • 2022-02
    • 升级Genesis2.0版本
    • 能支持全文件类型检查,并且生成类型文件
    • 如果对 SSR 微服务架构感兴趣,点击这里来看看
    • 新增了Docker打包的脚本,并且可以在本地运行Docker镜像

Docker

执行./docker-build.sh命令构建镜像,举一反三,具体编写逻辑请查看./docker-build.shDockerfile文件

技术栈

  • Vue
  • Genesis
  • vue-router
  • vuex
  • axios
  • vue-meta
  • TS

功能点

  • 实现登录、退出、微博列表
  • 使用 vue-meta 管理页面 SEO 的信息
  • 使用 TS 封装了 axios 的请求类,涉及到服务端请求的 header 转发
  • 编写了 Vue 的基类,使得 Vue、Vuex 和 TS 的配合更好
  • 完整的展示了开发 Vue SSR 项目所需要注意的知识点
  • 基于 Genesis 开发的完整功能的 demo
  • 演示了如何在服务端预取数据,在客户端还原服务端状态
  • 演示了如何编译 SSR 和 TS 生产环境的代码

目录说明

. ├── dist yarn build 编译后的源码目录 ├── mock 模拟接口 │ └── mock.ts 实现登录、退出、微博列表的 mock api ├── src 源码目录 │ ├── components 公共组件 │ | └── v-header.vue 封装一个头部的组件 | ├── request 请求处理目录 | | └── index.ts 封装 axios 请求类的实现 | ├── router 路由管理目录 | | └── index.ts 提供创建路由的方法 | ├── store 状态管理目录 | | └── index.ts 程序全局状态的实现 | ├── utils 封装工具函数目录 | | └── index.ts 工具函数的封装 | ├── views 页面目录 | | ├── home.vue 网站首页 | | └── signin.vue 登录页面 | ├── app.vue 应用的公共组件 ├── ├── index.html SSR 渲染的基本 html 模板 | ├── base-vue.ts 对 Vue 封装一封,包装 vuex、request | ├── entry-client.ts 客户端入口文件 | ├── entry-server.ts 服务端入口文件 | └── shims-vue.d.ts Vue 文件的 TS 声明 ├── .editorconfig 编辑器配置 ├── .eslintignore eslint 的忽略配置 ├── .eslintrc.js eslint 的配置 ├── .gitignore git 的忽略文件 ├── .stylelintignore stylelint 的忽略文件 ├── build.sh 编译生产环境代码到 dist 目录,yarn start 执行 ├── genesis.build.ts Genesis 构建生产环境代码 ├── genesis.dev.ts dev 环境开发入口 ├── genesis.prod.ts 生产环境开发入口 ├── genesis.ts dev 和 生产环境,通用逻辑封装 ├── package.json 包管理配置 ├── README.md 项目说明文档 ├── stylelint.config.js stylelint 的配置文件 ├── tsconfig.json TS 的配置文件 ├── tsconfig.node.json Node 运行程序使用 TS 的配置文件 └── yarn.lock yarn 的依赖版本锁

About

Vue 基于 Genesis + TS + Vuex 实现的 SSR demo

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •