博客园是个很好的学习场地,但是我感觉博客园本身也很值得学习.总喜欢看看博客园的一些功能,想想怎么实现,可能我的理解比较单纯,但是也是一种进步吧。
我感觉先从个人首页到博客园首页进行学习,下面例子以本人博客园测试。本人经验一般,很多地方看不明白,还请指教。
class="pBlue">1:个人首页地址
个人首页的地址我试出来是http://www.cnblogs.com/xiaoshuai1992/default.html,可是我们的连接上显示是http://www.cnblogs.com/xiaoshuai1992/,后面的default.html被省略掉了,如果按照我开发小网站,这个default.html不能被省略,但是发布站点的首页可以省略,我不知道这个地方是怎么做的,是每个人一个站点,还是用程序故意省略的。
要我开发小型一点网站,肯定是一个大站点,按照用户名称为每个人建立文件夹,文件夹下存放自己发布的文章。
2:单篇博客
(1)页面生成与皮肤
还是先从简单的看起,每一篇文章都是一个静态页面。
点开博客园后台的添加文章,输入内容后会根据输入内容+固定模板生成html进行保存。可是每个人都会选择不同的皮肤,这些皮肤是怎么生成的呢?随便点开一篇文章,看到样式表的地址为http://common.cnblogs.com/Skins/nature/style.css?id=20140415,中间的nature就是我的皮肤名称,模板html中div名称和样式名称一样,每个人选的皮肤名称不一样,皮肤下面的样式名称一样,只是内容不一样。
但是有一点我很想知道,如果我改了皮肤,这时难道是把所有的博客的css地址换掉还是直接在模板中用js控制进入页面时读取用户设置的样式。我测试如果我修改了皮肤,进入马上就已经换皮肤了,如果批次去替换,速度应该没那么快,也不方便。但是如果是用js替换,我查看源码又查询不到,而且文章的js好像是有加密的,地址为http://www.cnblogs.com/bundles/blog-common.js?v=15gzXd7pJ_PNpSlGpVykf0EBaNg79HWL7oD5vVw0NGA1
(2)模板编辑
进入后台,设置里面有编辑html,标题,子标题,我认为这些是在编辑模板,因为这些都会显示在每个页面上,那这样每个人都需要有一个模板,可能是新建帐号的时候就会把一个母模板copy到新建用户的特定文件夹下,然后我们每次修改更改自己下面的模板页面就可以了,其实这样换皮肤也比较简单。但是这样以前发布的文章皮肤不会换,所以有我上面的推断为js切换。
(3)公告栏和分类
查看源代码可以看到,在公告栏地方有一个js方法loadBlogNews();,这个估计就是调用的ajax进行显示了
日历:loadBlogDefaultCalendar();
分类排行等:loadBlogSideColumn();
(4):上一篇和下一篇
这个是在id 为post_next_prev的div里面,这个我想也是ajax生成的。
当然下面的评论和广告都是ajax更新的了。
(5)更新
关于更新,我的猜想是先删除后新增了,因为已经生成的页面已经没有替换的地方了。或者用div id来判断,但是这样麻烦多了,反正我喜欢干先删除,再新增的事情。
3:分类
(1):自定类别
比如我点到我自己的asp.net ,看到地址为
http://www.cnblogs.com/xiaoshuai1992/category/523390.html
523390这个编号是自动生成的,所以我猜想,我们新建类别时其实已经生成了这个地址和html,我们在发布文章选择了这个类别,就会把我们刚新增的文章写进去。当然按照我上面的原则,可能是先删除,再把所有的重新查询,拼为html。其实这个也需要这样做,不然删除就不会更新上去了。
(2)随便档案
我找到我 2013/10 月的档,地址为
http://www.cnblogs.com/xiaoshuai1992/archive/2013/10.html
这个类别估计就是博客园做的幕后工作了,我们在发布文章的时候自动更新的,也是类似上面类别的操作。
我改变我2013年10月的一篇文章,发现他还在10月中,说明数据库里面是有个创建时间和更新时间的,文章更新时,当然是取创建时间为那个月的进行更新。
4:个人首页补充
看到上面的分类等,我再看看首页,首页也是要生成的吧,我们勾选发布在个人首页后,就会显示在首页,然后按照时间排序,把最新的一笔内容完全显示出来,下面的就用个方法把html转为纯文字,取个前200个字就可以实现了。
这样我不禁想了下,那我们发布和修改一篇文章,首先要更新自己的,勾选了分类还要更新分类,博客园后台还要更新按照月分类,还要更新首页,这个更新的还是比较多的了。
感觉也写的差不多了,首页的ajax分页,排序啊,推荐啊其实还是比较繁琐的,各种栏位,各种排序,各种分类。