我本是一名文科专业半路出家的前端开发人员,从最初只会切图和写CSS、Html到如今会写点JS,一路坑坑洼洼,也是经历了不少,从2010年开始就用WordPress开设了本身的博客,虽然内容零零散散的并很少,可是多多少少也留下了时光的缩影,一直但愿本身有一个自留地。用Node.js作服务端替换WordPress是去年的一个想法,因为一直腾不出时间,因此拖到了如今。固然了WordPress做为全球用户量最广的开源博客程序,易用性等诸多好处无可厚非,光本身的博客在过去几年就用了不少套模板,也用它作过不少不一样风格不一样功能的网站, 也许Node.js不是我的博客的最好的开发语言选择,不论是情怀仍是其余,我相信必定有前端开发人员跟我同样有想过这样的尝试。市面上开源的博客程序不少,UI模板也至关漂亮,可是本身开发一个属于本身的博客程序,没事的时候折腾折腾,可能会是一件比较美好的事情,最主要的目的是在其折腾的过程当中,能够多尝试服务端的功能开发,这对从一个纯前端转向全栈开发工程师是很是好的实践。 git上面有不少开源的Node.js源码,教程也比较详细,有的功能全面,有的相对简约,固然每一个人只要选择适合本身的就好,下面简单介绍下个人项目。前端
架构node
项目沿用传统的MVC,比较古老的架构,model(对象模型),view(视图),controller(控制器),model通俗的说就是数据库表字段的映射,view就是界面,UI,controller就是操做数据库,通常是接收到路由信息,而后对数据库进行操做,再把数据返回给view层。若是是熟悉后端的开发人员可能一眼就看的懂,不过对于没有作事后端开发的纯前端人员来讲,可能须要一些时间去消化。想起我第一次作全栈开发,一个存储CCTV配置数据的项目,基于c#和sqlserver,也是标准的MVC架构,很简单的增删改查,是废了很多功夫。mysql
数据库git
数据库这块用的MongoDB,为何用它,由于简单好用,再就是它是在非关系数据中功能最丰富,最像关系数据库的。操做数据库的工具用了mongoose,api易读,很容易上手。以前是wordpress用的mysql,导出数据到MongdoDB确实没什么特别的好的方法和工具,尝试用了一些工具和脚本,效率不高,最后仍是手工完成的,好在本人比较懒,那么多年没几篇内容。github
WEB框架和模板web
后端用了Express的web框架,页面渲染部分是handlebars模板,我的感受{{}}大括号的写法比较适合前端开发人员,可是handlebars模板是个弱逻辑语言,有一些不方便,须要helper,特别是分页和评论,逻辑特别复杂,不过若是你喜欢hb模板,能够去git上下helper的库。jade模板(如今改为pug了)会比较方便一些,对一些复杂逻辑的处理比较高效,主要是能够直接在模板中写js语法,可是缩进的写法不是每一个前端开发都能习惯的。sql
前端数据库
现在的先后端分离,MV*框架,工程化,模块化,这些概念大行其道,若是一个作前端的不知道这几个概念,恐怕工做都难找到。可是这个项目没有先后端分离,直接在后端渲染页面,也没有用MVVM框架,工程化和模块化就更不用说了,后台页面用了一个jQuery和BootStrap和一些插件,前台页面好像就一个jQuery,CSS基本手写,我相信前端开发人员看到会比较亲切。个人初衷是但愿经过这个项目了解更多后端开发思路和模式,其次我的博客是个传播源,在后端渲染也是为了利于SEO。express
原理c#
我这里简单从一个页面打开到彻底加载,程序作了哪些事去论述一下整个项目工做原理,当你打开博客的一个页面,node.js在后端经过路由机制(express提供的路由模块)去匹配到这个页面的url,而后查找对应的controller(就是处理这个URL的函数),在这个controller函数中,对数据库进行一些过滤筛选(用mongoose对数据库进行操做)最终拿到页面须要的数据,而后再把数据传递给对应的模板(handlebars),最终渲染成HTML。
因为时间仓促,博客的功能可能比较简陋,可是基本的功能已经知足了,另外项目也有不少没用到的函数和接口,来不及整理,留待之后扩展吧。 博客 demo 这是个人博客git地址https://github.com/frogo/blog,欢迎你们star和fork