# vue_egg_vant_i18n
**Repository Path**: js-template/vue_egg_vant_i18n
## Basic Information
- **Project Name**: vue_egg_vant_i18n
- **Description**: vue+egg+vant+i18n的移动h5模板。内置postcss-pxtorem适配,vuex模块化,有FB和goole授权登录以及pwa的demo
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: develop
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2019-05-21
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# egg-vue-webpack-boilerplate
基于 Egg + Vue + Webpack4 单页面服务端渲染同构工程骨架项目.
## 版本
- Egg 版本: ^2.x.x
- Node 版本: Node ^8.x.x+, Node 6.x.x 版本请见 [Egg 1.0 + Node6分支](https://github.com/hubcarl/egg-vue-webpack-boilerplate/tree/node6)
- Webpack 版本: ^4.x.x, 对应 `easywebpack-vue` 版本为 ^4.x.x
- Vue 版本: ^2.5.0
## 文档
- http://hubcarl.github.io/easywebpack/vue/rule
- https://zhuanlan.zhihu.com/easywebpack
## 1.特性
- 支持 server 和 client 端代码修改, webpack 时时编译和热更新, `npm start` 一键启动应用
- 基于 vue + vuex + vue-router + axios 单页面服务器客户端同构实现
- 支持开发环境, 测试环境,正式环境 webpack 编译
## 2.依赖
- [easywebpack](https://github.com/hubcarl/easywebpack) ^4.x.x
- [easywebpack-vue](https://github.com/hubcarl/easywebpack) ^4.x.x
- [egg-view-vue-ssr](https://github.com/hubcarl/egg-view-vue-ssr) ^3.0.2
- [egg-webpack](https://github.com/hubcarl/egg-webpack) ^4.x.x
- [egg-webpack-vue](https://github.com/hubcarl/egg-webpack-vue) ^2.0.0
## 3. 使用
#### 3.1 安装cli(非必需)
```bash
npm install easywebpack-cli -g
```
^3.5.0 开始, `easywebpack-cli` 已内置 `devDependencies` 中, 无需安装。如果你需要在命令行使用 `easy` 命令, 可以单独全局安装。
#### 3.2 安装依赖
```bash
npm install
```
#### 3.3 启动应用
##### 本地开发启动应用
```bash
npm run dev
```
应用访问: http://127.0.0.1:7001

##### 发布模式启动应用
- 首先在本地或者ci构建好jsbundle文件
```bash
npm run build
```
- 然后,启动应用
```bash
npm start
```
## 4. 功能实现
#### 4.1 单页面前端实现
在app/web/page 目录下面创建app目录, app.vue, app.js 文件.
- app.vue 编写界面逻辑, 根元素为layout(自定义组件, 全局注册, 统一的html, meta, header, body)
```html
```
- app.js 页面调用入口
```javascript
import { sync } from 'vuex-router-sync';
import store from 'store/app';
import router from 'component/app/router';
import app from './app.vue';
import App from 'app';
import Layout from 'component/layout/app';
App.component(Layout.name, Layout);
sync(store, router);
export default App.init({
base: '/app',
...app,
router,
store
});
```
#### 4.2 单页面后端实现
- 创建controller文件app.js
```javascript
exports.index = function* (ctx) {
yield ctx.render('app/app.js', { url: this.url.replace(/\/app/, '') });
};
```
- 添加路由配置
```javascript
app.get('/app(/.+)?', app.controller.app.app.index);
```
## 5. 打包部署
http://hubcarl.github.io/easywebpack/vue/build/
## 6. 实现原理
### 6.1 本地`npm start`启动流程

### 6.2 服务端渲染页面访问流程

### 6.3 详细资料
- [Egg+Vue解决方案开发流程](http://hubcarl.github.io/easywebpack/vue/dev/)
- [基于webpack的前端工程解决方案和egg+vue服务端渲染项目实践](http://hubcarl.github.io/blog/2017/04/15/webpack-project/)
- [koa和egg项目webpack内存编译和热更新实现](http://hubcarl.github.io/blog/2017/04/15/egg-webpack/)
## License
[MIT](LICENSE)