怎么取数据?
- 我们首先得先通过node端来获取数据, 然后放到vuex里面保存起来, 放到Context中, 达到前后端共享数据的目的
- 在
server-index.js
中, 增加如下代码:
Vue.axios.get('http://localhost:5000/data').then((response) => {
// 获取数据
const list = response.data.data.liveWodList
// 把数据存到Vuex里面
store.commit(LIST.GET_DATA, list)
// 把state存放到context中
context.state = store.state
resolve(app)
})
- 在
/src/index.js
(也就是client的入口文件中), 增加如下代码:
if (window.__INITIAL_STATE__) {
store.replaceState(window.__INITIAL_STATE__)
}
- 通过以上步骤, 数据就已经在前后端共存了
编译
- 在实际生产中, 我们会用
webpack
的插件vue-ssr-webpack-plugin
来生成build/vue-ssr-bundle.json
文件, webpack配置文件如下:
plugins: [
new VueSSRPlugin({
filename: './build/vue-ssr-bundle.json'
})
]
- 在
/server.js
中我们动态的读取build/vue-ssr-bundle.json
, 生成html字符串, 返回到前端. 这里我们会用到createBundleRenderer
函数的别外一个参数, 该方法的第一个参数是上面的bundle.json
文件, 第二个参数是一个对象, 我们用的是{template:'xxx'}
, 这个template的值为通过Client打包生成的HTML文件, 再通过node读取, 传递到参数中, 注意:该HTML必须包含<!--vue-ssr-outlet-->
, 这个createBundleRenderer
函数把这行代码替换成HTML. - 至此, 真正的
Vue-ssr
就搭建完成了!!
码上GitHub
Vue-SSR系列目录
从零开始搭建vue-ssr系列之二:纯client端渲染以及webpack2+vue2注意事项
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。