seemnite项目是本人做的一个博客,主要目的是学习 node
koa2
mongoose
本文主要讲述项目的过程,希望对同样困惑的朋友提供一些参考
在开始前,我简略的跑了下以下库,并对ssr有了一定的认识
webpack的配置主要是参(cao)考(xi) vue-hackernews 和 easy-mock
不过,过程是一步一步的,在构建的过程学习了很多, 也遇到了很多问题,一开始我是想用webpack4构建,所有的组件也都是next版的,但最后‘renderer.renderToString’一直报错,为了继续学习koa,最后放弃了,回滚到webpak3.
当时的心情可想而知(一万只草泥马),koa还要继续。webpack3简单了很多,也有一些问题。
- document,window in undefind 未找到
主要问题还是组件生命周期钩子函数,具体的可以看vue-ssr文档的说明。 该避免在 beforeCreate 和 created 生命周期时产生全局副作用的代码,请将副作用代码移动到 beforeMount 或 mounted 生命周期中。
- 前端路由出不来
//添加了路由的匹配
router.get('*', require('./middlewares/view').render(app))
app.use(router.routes()).use(router.allowedMethods())
复制代码
- tags 已经存在的及新增的怎么存入
mongodb
await Promise.all(
body.tags.map(async tag => {
let value = await Tag.findOne({ name: tag })
if (!value) {
value = await Tag.create({ name: tag })
}
return value.id
})
)
复制代码
- 前端路由权限的控制
//enter-server.js中添加
if (meta.requiresAuth && !serverCookies.get(conf.storageNamespace + 'token')) {
return reject({ code: 401 })
} else {
router.push(url)
}
复制代码
github源码地址 后续还会继续完善,麻雀虽小五脏俱全,后面还有一篇关于服务器部署的 服务器篇