程序员

[原创] 如何开发一个博客(更新中)

2018-11-26  本文已影响12人  土土先生

一、概要

这篇文章不打算用很细致的描述来说明如何创建一个博客,而是从原理的角度来让有兴趣的人知道如何开始。(下文都是我自己从一个后端的角度来理解的,有些说法不一定准确,但是原理可以保证无误)。
具体可以参考我的博客实现:cool-blog 一个非常轻量级的博客实现

二、基础概念

短链接

浏览器每次查看页面的操作都是重新发起链接的,即是俗称的短链接。很显然,这是个无状态的过程。

路径/path

对于这样的一个地址 www.baidu.com/find,那么/find 就是我们的路径,一般解决路径的分发,我们称呼他为路由route

方法

浏览器的请求有很多种:

以上对四种方法的理解以及应用规范,可以参考restful api的设计,它将所有的网络页面(这里说法不够精确)都理解为资源,那么所有的操作都是对应于如何操作资源的。

查询

对于这样的地址www.baidu.com/find?a=1&b=2,那么问号之后就是查询,路径和查询构建成了地址中静态和动态的两部分(当然,使用的时候,不用拘泥于此)

消息体

客户端和服务端之间需要传递大量的数据,此时会放在http的主体中

模版

浏览器会根据服务端发回来的html代码正确的渲染页面,而模版则是解决"如何最省力的返回html代码"的方案。

cookies 和 session

对于服务端而言,客户端发起的每次链接都是全新的,那么服务端就没法做出状态来,而类似登陆这种操作是需要状态,解决这类问题的手段就是cookie和session。

cookies

session

对于服务端而言,解决了长连接的概念,那很多东西都开始变得简单起来了。而session 可以理解为是服务端对于长连接的进一步具化,将cookie代表的长连接映射为一个对象,那么这个对象就可以拿来存放东西了。

两者结合起来的例子:登陆

三、技术选型

基础语言

nodejs:这是后端的必然选择了

基本框架

koa:一个非常现代的后端开发框架,他的中间件的理念让我挺佩服的

模版

art-template: 腾讯出品,使用非常舒服

中间件(只列出重要的部分)

四、架构设计

分层

复杂的层次会导致逻辑混乱,而在nodejs提供的底层已经完好的情况下,我们可以减少分层,例如 server + module 一共两层

组合

多使用组合可以减少层次的增加,更容易理解。为什么不使用面向对象的开发方法呢?因为要正确的使用面向对象,必须正确的抽象概念,而抽象能力不是每个人都具备的。组合的概念体现在架构中表现为模块:module

可见性

模块之间互相可见,他们是平等关系,而server层作为基础,都可以被模块调用

模块的数据以及实现

数据和实现的分离有利于划分职责,并且做热更新的时候更加自然(毕竟数据不可热更新,只有实现可以)

路由

路由的地位等同于模块,但是他和模块又有很多不一样的地方

五、文件架构

这里只是给出我自己的版本,没必要一定要按照这样的方式来写

六、前后端分离

我理解的前后端分离应该是后端只考虑数据,前端只考虑布局,但是如果这样开发,为了可以有良好的seo,就必须将这两部分拼凑起来,再发给浏览器,开发比较繁琐,本文只是部分实现了

module/模块

只处理数据的内容

routers

在这里将布局和数据拼凑起来,发送给前端

七、整体规划

页面基本布局

功能划分(只列出基础部分)

待补充

其实写到这里,有关设计方面的已经写完了,至于具体的实现则是后面再补充了。

上一篇下一篇

猜你喜欢

热点阅读