[原创] 如何开发一个博客(升级中)
一、概要
这篇文章不打算用很细致的形容来说明如何创立一个博客,而是从原理的角度来让有兴趣的人知道如何开始。(下文都是我自己从一个后台的角度来了解的,有些说法不肯定精确,但是原理可以保证无误)。
具体可以参考我的博客实现:cool-blog 一个非常轻量级的博客实现
二、基础概念
短链接
浏览器每次查看页面的操作都是重新发起链接的,即是俗称的短链接。很显然,这是个无状态的过程。
路径/path
对于这样的一个地址 www.baidu.com/find,那么/find 就是我们的路径,一般处理路径的分发,我们称呼他为路由route
方法
浏览器的请求有很多种:
- get:请求,一般用于查询
- post:升级,例如表单
- put:创立,例如新建资源
- delete:删除
以上对四种方法的了解以及应用规范,可以参考restful api的设计,它将所有的网络页面(这里说法不够准确)都了解为资源,那么所有的操作都是对应于如何操作资源的。
查询
对于这样的地址www.baidu.com/find?a=1&b=2,那么问号之后就是查询,路径和查询构建成了地址中静态和动态的两部分(当然,使用的时候,不用拘泥于此)
消息体
用户端和服务端之间需要传递大量的数据,此时会放在http的主体中
模版
浏览器会根据服务端发回来的html代码正确的渲染页面,而模版则是处理”如何最省力的返回html代码”的方案。
cookies 和 session
对于服务端而言,用户端发起的每次链接都是全新的,那么服务端就没法做出状态来,而相似登陆这种操作是需要状态,处理这类问题的手段就是cookie和session。
cookies
- 存在于http协议中的cookie字段中,在每次的请求,浏览器都会补充上这个字段,传到服务端,而后服务端再传回来,整个过程就如同乒乓球一样,不停的来回
- 它用于伪造一个相似于长连接的标识,所以正常做法是只要要保存一个唯一的id既可以最大化使用,这样也可以减少网络传输的消耗
session
对于服务端而言,处理了长连接的概念,那很多东西都开始变得简单起来了。而session 可以了解为是服务端对于长连接的进一步具化,将cookie代表的长连接映射为一个对象,那么这个对象即可以拿来存放东西了。
两者结合起来的例子:登陆
- 客户第一次打开页面,此时服务端生成唯一的id存放到cookie中,此时对应的session开始产生
- 客户输入客户名和密码,服务端验证通过,此时可以将对应的客户id存放进去session
- 客户重新打开这个界面(或者者任何需要登陆的页面),检查session能否存放了客户id,假如有那么允许,假如没有,那么跳转到登陆界面。
三、技术选型
基础语言
nodejs:这是后台的必然选择了
基本框架
koa:一个非常现代的后台开发框架,他的中间件的理念让我挺佩服的
模版
art-template: 腾讯出品,使用非常舒服
中间件(只列出重要的部分)
- 路由:koa-router
- cookies和session:koa-session-minimal
- 消息体:koa-bodyparser
四、架构设计
分层
复杂的层次会导致逻辑混乱,而在nodejs提供的底层已经完好的情况下,我们可以减少分层,例如 server + module 一共两层
组合
多使用组合可以减少层次的添加,更容易了解。为什么不使用面向对象的开发方法呢?由于要正确的使用面向对象,必需正确的笼统概念,而笼统能力不是每个人都具有的。组合的概念表现在架构中体现为板块:module
可见性
板块之间互相可见,他们是平等关系,而server层作为基础,都可以被板块调用
板块的数据以及实现
数据和实现的分离有利于划分职责,并且做热升级的时候更加自然(毕竟数据不可热升级,只有实现可以)
路由
路由的地位等同于板块,但是他和板块又有很多不一样的地方
五、文件架构
这里只是给出我自己的版本,没必要肯定要按照这样的方式来写
- index.js:所有的文件夹都应该有这个文件,用于正确的require
- config:文件夹,里面存放了开发期以及发布后的配置
- content:存放少量上传的,或者者是静态文件
- kernel:少量工具类的存放,和业务无关
- server:业务代码
- core:少量需要扩展到server层的代码
- data:存放板块的数据
- impl:存放板块的实现
- routers:存放各种路由
六、前后台分离
我了解的前后台分离应该是后台只考虑数据,前台只考虑布局,但是假如这样开发,为了可以有良好的seo,就必需将这两部分拼凑起来,再发给浏览器,开发比较繁琐,本文只是部分实现了
module/板块
只解决数据的内容
routers
在这里将布局和数据拼凑起来,发送给前台
七、整体规划
页面基本布局
- 上:导航
- 中:内容
- 下:底部
功能划分(只列出基础部分)
- 首页
- 文章列表
- 文章详细页
- 后端管理
- 登录
- 文章列表
- 增加文章
- 修改文章
- 删除文章
待补充
其实写到这里,有关设计方面的已经写完了,至于具体的实现则是后面再补充了。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » [原创] 如何开发一个博客(升级中)