使用Flask和React构建博客系统(1)

in #cn6 years ago

背景

我想建立一个自己的博客系统,主要是以下几个方面的诉求。

  • 担心内容会丢失。用别人的网站,总担心哪一天它关闭了,或者出故障了,自己的辛苦产出岂不是付诸东流。
  • 希望随时编辑修改。有些网站基本上是不用担心丢失问题,比如基于区块链的steemit网站,或者IPFS文件系统。但是要想编辑修改就比较费劲了。
  • 希望保留一些隐私。有一些文章,希望只有我能查看,起一个备忘的作用。其它很多博客网站是不支持的,另外即使支持,自己也放心不过。
  • 方便检索和定制。我的文章希望分门别类管理,还可以加各种标签,然后极速搜索。这些功能虽然别的博客网站也有,但不如自己完全掌控感觉爽。
    基于以上考虑,我决定开发一个自己的博客系统。

技术方案选型

我租用的是一个很便宜的VPS,CentOs系统,由于配置低,基本上只能跑命令行,图形界面是带不起来的。所以,我就选择了我比较喜欢的基于Python语言的系统。

Flask

经过比较,我选择了Flask系统。因为它很符合我的理念:

  • 微内核架构。不绑定一堆乱七八糟的东西,一切都是开放的,需要什么,就适配对接什么。
  • 系统可以逐步成长。开发简单的应用,使用简单的办法。随着系统越来越复杂,逐步对接、扩展其他的部件,而不是一下子上来一个复杂框架。

React

本来我已经决定使用Flask开发了,但是遇到一个难题,怎么保存数据而不用刷新页面。本来以为很容易解决,上网一搜索,才发现不是那么简单,需要使用ajax技术,要用到js脚本,就这么就找到了一堆前端开发框架,于是我就想不用原生HTML技术了,要使用前端框架来开发。其关键的考虑因素是,我不太喜欢HTML来开发界面,为什么呢?因为我很喜欢写代码,很喜欢自由掌控的感觉,也就是我喜欢图灵完备的编程语言,界面开发也是一样,我希望可以编程实现,而HTML本质上是一个数据信息,不包含控制信息。所以很难做到组件级复用以及灵活控制。

Flask+React

  • 我对这个Flask+React这个方案也不是很满意,因为React是js实现的,Flask是python的,二者语言能统一就好了,最好都用我喜欢的Python。
  • 另外一个问题是React本身就是一个独立的网站,而Flask也是一个独立的网站,虽然前后端实现了强制解耦,但还是不太爽,一个是两个网站有些浪费,另外,跨进程通讯会不会影响效率?

Flask+JQuery

  • 经过一番纠结,决定选择Flask+JQuery方案。只选择Flask是不行的,因为很多复杂前端界面不好做,而JQuery有很多成熟的前端控件可用。有一个开源的库似乎不错:http://www.ligerui.com/
  • 另外,为了实现用Python写前端的梦想,我尽可能使用PyH库,来使用Python来生成HTML,而不是使用默认的模板库。