美文网首页前端Vue专辑Web前端之路让前端飞
Vue+Node.js+MongoDB 个人博客项目总结(一)

Vue+Node.js+MongoDB 个人博客项目总结(一)

作者: howell5 | 来源:发表于2017-06-20 02:13 被阅读5447次

一直就有要做一个前后端完整的个人项目的想法,但因为学校和面试的事一直没开始。两个星期前开始了行动,选定Vue + express + mongoDB 的技术栈。Vue框架的文档还是非常友好易懂的,一个星期看官方文档和写小demo,一个星期开始正式开发。总算完成了主体功能的开发。现在写个文章做个阶段性总结。

Github地址:https://github.com/Howell5/Josephong.me

项目架构图

个人博客项目架构图.png

client

  • 技术框架和基本库:
  • 用了Vue-cli 构建基本项目目录,Vue-Router 做路由控制,用 axios 库做 ajax 操作。
  • 前台展示页(/psot 和 /postDetail)
    • 用 Marked.js 和 highlight.js 处理 Markdow 转化为 HTML。从服务器拿到数据进行渲染。
    • UI 借用了尤雨溪大佬博客的风格,因为实在没想好自己的博客风格,后期会改。
  • 后台管理页(/admin 和 /admin/articleEdit)
    • 这里用到了嵌套路由。编辑器用了第三方插件 simplemde。
    • UI 用 element-ui 很快能搭建好,毕竟不是展示页,简洁好用就行。

Webpack作为静态资源的打包和发布工具。

server

服务端部分采用 express 作为开发框架,提供api接口服务给前端ajax调用,后端不做页面模板的渲染和路由的导航工作,这部分都由前端的 vue 来处理,所以该博客其实是一个前后端分离,以 RESTful api 来通信的单页应用。

因为主要逻辑处理(虽然也没有多少业务逻辑)都放在了前端,所以服务端写的很简单。利用 mongoose 与数据库 MongoDB 建立连接,并写好CURD(增删改查)的接口给前端用就行了。

不得不说这种开发方式很爽,不像以前后端丢一个JSP页面,然后才能进行前端工作。我个人认为 业务进行前后端分离,而个人开发者进行全栈发展。

难点

跨域

因为在vue-cli中本身就有一个小型服务器(本项目中:localhost:8525)供我们的vue项目跑起来,但我们需要的数据是我们自己搭建的服务器(本项目中:localhost:9999)提供给我们的。因为浏览器的“同源政策”,我们不能直接进行跨域访问,解决方案也有很多。CORS,jsonp,...。详情见文章 浏览器同源政策及其规避方法---阮一峰。而在我们的项目中,webpack-dev-server 给我们提供的proxy模块,可以很快解决这个问题。配置如下:

** config/index.js **

  dev: {
    env: require('./dev.env'),
    port: 8525,
    autoOpenBrowser: true,
    assetsSubDirectory: 'static',
    assetsPublicPath: '/',
    proxyTable: {
      '/api': {
        target: 'http://localhost:9999
        changeOrigin: true
      }
    },

嵌套路由

一开始在文章管理后台中,我比较头痛组件复用问题,在github看了相似项目的源码,发现他们直接用复制代码解决,显然代码冗余严重。在看Vue-Router的文档中,一开始并没有注意嵌套路由的作用,后面多看几遍就发现嵌套路由可以很完美解决这个问题(果然官方文档还是要反复看的)。我的路由配置:

{
      path: '/admin',
      name: 'admin',
      component: admin,
      children: [
        {
          path: '/',
          component: articleList
        },
        {
          path: 'articleList',
          component: articleList
        },
        {
          path: 'articleEdit',
          component: articleEdit
        },
        {
          path: 'articleEdit/?id=:id',
          name: 'EditArticle',
          component: articleEdit
        }
      ]
    }

实际演示

博客前台演示页面.gif 后台管理页面演示.gif

TODO

  • [ ] 增加登录/注册功能
  • [ ] 前台展示页面UI重新设计,完善细节
  • [ ] 部署到云服务器上
  • [ ] 移动端适配

本项目持续更新,如果对你有所帮助,欢迎到github上点个star :)

相关文章

  • Vue+Node.js+MongoDB 个人博客项目总结(一)

    一直就有要做一个前后端完整的个人项目的想法,但因为学校和面试的事一直没开始。两个星期前开始了行动,选定Vue + ...

  • 个人博客项目

    源码地址:github示例:Yui_tycc的博客 (好久没更博客,等服务器换好之后也会在个人博客网站上更新,同时...

  • [项目蓝图] 个人博客项目

    此项目属于萌新学习(>▽<),还请大佬们多多指教 _(:」∠)_该日记主要记录写Bug和改Bug的过程 项目介绍 ...

  • iOS-综合类型相关

    综合类型涵盖学习资源、博客、Demo地址、个人总结、软件等. 1.iOS学习资源汇总(开源项目、第三方库、技术博客...

  • 个人博客项目流程

    2019.5.11日,我创建了第一个属于自己的个人博客,接下来,我们一起重温一下流程!我们用的是pycharm来进...

  • beego框架 golang web项目-个人博客系统

    beego框架 golang web项目-个人博客系统 beego个人博客系统功能介绍 首页 分页展示博客 博客详...

  • 个人博客捣鼓总结

    Jekyll Github原生支持自动编译,很方便,但是缺点也有,个人最开始使用,最后想换其他的。只需要直接仓库中...

  • Swift编程(六):Snapkit的启示录

    写在前面(Github地址) 个人项目 个人站点:LN电影网个人博客:L&N博客 欢迎大家关注我的个人博客: 博客...

  • vue+Node打造个人博客(一)——前端项目结构

    这篇博客我将用vue+elementUI+Node.js搭建个人博客项目,项目已经上传到github。这个项目我打...

  • Hexo+github博客搭建记录

    为何搭建个人博客 一直想搭建自己的个人博客,写博客可以记录我的学习笔记、总结经验、分享技术等等。本来csdn、博客...

网友评论

  • ff182cf48457:朋友,在下载mongodb中,下载了很久还是没下载完,有什么法子能解决啊
  • fdbce1fe74fa:排除万难启动之后前台访问不了,后台列表页一直在加载没有数据,是因为mongodb没有启动?
  • Nic_ofh:我想问下怎么配合百度编辑器写makdown?
  • 张贯宇:dev server是给你开发用的,不是线上用的。vuecli只是脚手架而已。
    翻滚的前端程序员:确实是开发用的,部署的时候并不需要,部署在同一个域下就可以了

本文标题:Vue+Node.js+MongoDB 个人博客项目总结(一)

本文链接:https://www.haomeiwen.com/subject/xlznqxtx.html