V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
noxue
V2EX  ›  程序员

一个用 golang+mongodb 开发的博客,前后端分离的开发模式

  •  
  •   noxue · 2018-10-19 12:12:37 +08:00 · 1480 次点击
    这是一个创建于 2252 天前的主题,其中的信息可能已经有所发展或是发生改变。

    gocms 目标

    暂时只是开发来自用,后期有空慢慢增加功能。根据名字都知道,是打算开发成一个内容管理平台,目前算是一个简单的博客。

    特点

    • 前后端分离,方便扩展。
    • 集成七牛云存储
    • 使用 markdown 编辑文章
    • 支持文章下面添加章节

    演示

    后台效果:

    后台界面.png

    admin.noxue.com

    前台效果:

    www.noxue.com

    gocms 源码

    后台 API

    前端界面

    后台界面

    SEO 处理工具

    开发语言

    后端接口

    golang+mongodb,主要用到的库:gin,mgo

    前台界面

    vuejs, 界面并非原创,模仿 zetcode.com 很早就知道这个网站,一直很喜欢他简洁的风格,上面有很多教程,推荐给大家,不过全是英文的。

    后台界面

    采用 vue-admin-template 感谢作者为我们提供这么方便的后台管理界面。

    seo 处理

    前台是 vuejs 开发的 SPA 应用,官方有 SSR 可以解决,不过看了一下要从一开始就使用,我也没深入学过 vuejs,外加项目已经开发好了,所以考虑另辟蹊径。本质就是要搜索引擎获取到渲染后的 html 代码,这东西通过 python 很容易实现,毕竟做爬虫是 python 的强项,于是搜索一番搞定了。

    1.用 python 写个接口,返回指定 url 渲染后的 html 代码。

    2.nginx 判断 UA,如果是搜索引擎的蜘蛛,就转发到我们 python 的接口上获取渲染后的数据

    流程

    1. 如果是正常用户请求,就直接返回前台界面,前台界面自动调用接口返回数据,渲染显示。
    2. 如果是搜索引擎,nginx转发到seo 处理程序,处理程序模拟人去访问前台界面,把渲染后的 html 返回给搜索引擎

    公开代码的意义

    这是初学 mongodb,第一次用 go 和 mongodb 做的作品,里面很多知识我想很多初学的朋友都会遇到,比如 给子文档添加元素,更新子元素,当初也搜了不少资料。所以这个项目也许可以对需要的朋友有一点帮助。 之所以不是说开源,是因为开源项目不仅有代码还要有配套的文档,所以只能算公开代码而已。

    2 条回复    2018-10-19 13:56:15 +08:00
    JASONWOOD
        1
    JASONWOOD  
       2018-10-19 13:45:20 +08:00
    很棒!收藏加学习了
    xgp
        2
    xgp  
       2018-10-19 13:56:15 +08:00
    不错
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1016 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:17 · PVG 03:17 · LAX 11:17 · JFK 14:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.