内容简介:最近在写一个新应用时,想用Koa 结合 Vue SSR,同时写Api 接口和页面,于是开始上手写,结果发现需要写的东西很多,参考的大多数例子都用的是十分类似的代码(好像大多都是基于尤大大的各位看官,走过路过,给个star 鼓励一下吧,谢谢!如果以下的文档不够清晰,可以参考我写的
最近在写一个新应用时,想用Koa 结合 Vue SSR,同时写Api 接口和页面,于是开始上手写,结果发现需要写的东西很多,参考的大多数例子都用的是十分类似的代码(好像大多都是基于尤大大的 hackernews ),于是索性花了一个晚上把代码封装成一个Koa 的中间件,让后来者少造个轮子;
各位看官,走过路过,给个star 鼓励一下吧,谢谢! 项目地址
示例
如果以下的文档不够清晰,可以参考我写的 Demo 进行参考
安装
npm install koa-vuessr-middleware 复制代码
使用
首先需要在项目根目录下添加一个 .ssrconfig 文件,内容如下:
{
"ouput": {
"path": "./dist",
"publicPath": "/dist/"
},
"entry": {
"client": "./src/entry-client.js",
"server": "./src/entry-server.js"
},
"webpackConfig": {
"client": "./build/webpack.client.conf.js",
"server": "./build/webpack.server.conf.js"
}
}
复制代码
说明:
-
entry如果你想使用内置默认webpack 配置,则必须配置此项,包括一个client和server,client为客户端入口js,server则为服务端入口js -
output如果你想使用内置默认webpack 配置,则需要配置一个path和outputPath,可以参考 webpack 的output 配置 -
webpackConfig如果你想用自定义的webpack 配置,则需要配置以下两项:client server
注:可以在项目地址中参考相应的配置文件进行编写
基本用法如下:
const koa = require('koa');
const app = new koa();
const koaRouter = require('koa-router');
const ssr = require('koa-vuessrr-middleware');
router.get('/otherroute', otherloaders);
router.get('*', ssr(app, opts));
app.use(router.routes());
app.listen(8080);
复制代码
- 开发环境
router.get('*', ssr(app, {
title: '网页默认标题',
isProd: false, // 此时将启用热更新功能,此为默认选项,
templatePath: './index.template.html' // 渲染默认模板地址,如果不提供则会使用内置的默认模板
}));
复制代码
- 生产环境
先执行以下命令生成生产代码
buildssr 复制代码
然后使用以下代码
router.get('*', ssr(app, {
title: '网页默认标题',
isProd: true, // 此时将直接读取生产代码,
templatePath: './index.template.html' // 渲染默认模板地址,如果不提供则会使用内置的默认模板
}));
复制代码
文件目录建议如下例子:
├── src app directory │ ├── router/ route directory │ ├── views/ views directory │ ├── components/ compoennts directory │ ├── app.js js file to export a createApp function │ ├── App.vue root Vue │ ├── entry-server.js server side entry point │ └── entry-client.js client side entry point ├── index.js server entry point ├── .ssrconfig SSR configuration file ├── ... 复制代码
app.js 示例
import Vue from 'vue'
import App from './App.vue'
import { createRouter } from './router'
import titleMixin from './util/title'
Vue.mixin(titleMixin)
export function createApp () {
const router = createRouter()
const app = new Vue({
router,
render: h => h(App)
})
return { app, router, }
}
复制代码
entry-client.js 示例
import Vue from 'vue'
import 'es6-promise/auto'
import { createApp } from './app'
const { app, router } = createApp()
router.onReady(() => {
app.$mount('#app')
})
复制代码
entry-server.js 示例
import { createApp } from './app';
export default context => {
return new Promise((resolve, reject) => {
const { app, router } = createApp()
const { url } = context
const { fullPath } = router.resolve(url).route
if (fullPath !== url) {
return reject({ url: fullPath })
}
router.push(url)
router.onReady(() => {
const matchedComponents = router.getMatchedComponents()
if (!matchedComponents.length) {
return reject({ code: 404 })
}
Promise.all(matchedComponents.map(({ asyncData }) => asyncData)).then(() => {
resolve(app)
}).catch(reject)
}, reject)
})
}
复制代码
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 是时候来了解下 HTTPS 网站的部署了
- linux 部署golang 项目(直接部署和基于nginx部署)
- 部署策略对比:蓝绿部署、金丝雀发布及其他
- 使用Docker容器化部署实践之Django应用部署(一)
- 【前端打包部署】谈一谈我在SPA项目打包=>部署的处理
- 「实战篇」开源项目docker化运维部署-后端java部署(七)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
计算机算法设计与分析
王晓东 / 电子工业出版社 / 2007-5 / 29.50元
《计算机算法设计与分析(第3版)》为普通高等教育“十一五”国家级规划教材,是计算机专业核心课程“算法设计与分析”教材。全书以算法设计策略为知识单元,系统介绍计算机算法的设计方法与分析技巧。主要内容包括:算法概述、递归与分治策略、动态规划、贪心算法、回溯法、分支限界法、随机化算法、线性规划与网络流、NP完全性理论与近似算法等。书中既涉及经典与实用算法及实例分析,又包括算法热点领域追踪。 为突出......一起来看看 《计算机算法设计与分析》 这本书的介绍吧!