当前位置: 首页 > 工具软件 > koa2-easy > 使用案例 >

koa2 vue搭建博客

皇甫高阳
2023-12-01

seemnite项目是本人做的一个博客,主要目的是学习 node koa2 mongoose

项目预览

本文主要讲述项目的过程,希望对同样困惑的朋友提供一些参考

在开始前,我简略的跑了下以下库,并对ssr有了一定的认识

webpack的配置主要是参(cao)考(xi) vue-hackernewseasy-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源码地址 后续还会继续完善,麻雀虽小五脏俱全,后面还有一篇关于服务器部署的 服务器篇

转载于:https://juejin.im/post/5adf0072f265da0b92653acf

 类似资料: