我来做百科(第三天)
进入第三天,今天主要做词条部分,先做词条的添加和显示吧。
根据百度百科的系统应该是先搜索,当找到就显示,没有就添加。搜索昨天做了,接下来就是添加词条功能。做着做着发现一个问题,因为词条和内容是分开两个表的,我设计了一下添加的过程:插入词条并获取词条id,插入内容并插入对应词条id并获取内容id,更新词条的内容id。过程是定下来了,但责任应该放在del还是bll呢?这也是我一直都没想透的问题,如果放在dal的话,一句sql就可以完成操作更有效率,而且可以使用事务管理整个过程。但这个过程又是一个逻辑的过程,而且出于代码复用,放在bll的话应该更能体现三层结构的好处。现在还是没想通,所以还是按照上一次的做法放到bll来做,这样添加内容和更新词条内容id的程序以后就可以复用了。一阵调试排错后,基本完成了添加词条的功能了,接下来就到显示了。
![](/images/cnblogs_com/cloudgamer/20080119d3d33erweregif.gif)
显示应该很容易吧。但这时又遇到一样的问题,由于是从两个表来获取信息,那把两个表获取的信息合并是哪一层的责任呢?第一排除的应该是dal,既然添加逻辑都给了bll,那这个就更不需要他了。如果交给bll的话又要做一个词条加内容的模型,偷点懒,放到pl好了。
![](/images/cnblogs_com/cloudgamer/20080119d3d33erw34543535f.gif)
编辑部分主要是词条内容,我设计了一下:先判断词条id存不存在,存在的话添加一个内容并插入词条id,更新词条的内容id。还好刚才决定用添加的时候逻辑放在bll,现在又可以拿来用了。
![](/images/cnblogs_com/cloudgamer/20080119f8f8f832e2e.gif)
程序编译的时间,又去baidu百科看看。看到内容上面都有连接,怎么做的啊,如果是机器扫的话,那应该满屏都是连接了。编辑一下,看到有一个词条连接的功能,测试一下先。我添加了一个词条存在的连接,一个不存在的,看看会有什么效果,不过可能要等到明天了。
调试之后,编辑貌似可以了,下一步就是历史版本功能了。这个是普通的列表,应该没什么困难的。
![](/images/cnblogs_com/cloudgamer/20080119f8f8f4fg5g6he2e.gif)
今天的最后要做的就是历史版本显示了,这个跟词条显示差不多,只是id换成内容的。
![](/images/cnblogs_com/cloudgamer/20080119f33336he2e.gif)
这样,总算是做了百科的基本功能了,好饿啊,明天再来吧。
根据百度百科的系统应该是先搜索,当找到就显示,没有就添加。搜索昨天做了,接下来就是添加词条功能。做着做着发现一个问题,因为词条和内容是分开两个表的,我设计了一下添加的过程:插入词条并获取词条id,插入内容并插入对应词条id并获取内容id,更新词条的内容id。过程是定下来了,但责任应该放在del还是bll呢?这也是我一直都没想透的问题,如果放在dal的话,一句sql就可以完成操作更有效率,而且可以使用事务管理整个过程。但这个过程又是一个逻辑的过程,而且出于代码复用,放在bll的话应该更能体现三层结构的好处。现在还是没想通,所以还是按照上一次的做法放到bll来做,这样添加内容和更新词条内容id的程序以后就可以复用了。一阵调试排错后,基本完成了添加词条的功能了,接下来就到显示了。
![](/images/cnblogs_com/cloudgamer/20080119d3d33erweregif.gif)
显示应该很容易吧。但这时又遇到一样的问题,由于是从两个表来获取信息,那把两个表获取的信息合并是哪一层的责任呢?第一排除的应该是dal,既然添加逻辑都给了bll,那这个就更不需要他了。如果交给bll的话又要做一个词条加内容的模型,偷点懒,放到pl好了。
![](/images/cnblogs_com/cloudgamer/20080119d3d33erw34543535f.gif)
编辑部分主要是词条内容,我设计了一下:先判断词条id存不存在,存在的话添加一个内容并插入词条id,更新词条的内容id。还好刚才决定用添加的时候逻辑放在bll,现在又可以拿来用了。
![](/images/cnblogs_com/cloudgamer/20080119f8f8f832e2e.gif)
程序编译的时间,又去baidu百科看看。看到内容上面都有连接,怎么做的啊,如果是机器扫的话,那应该满屏都是连接了。编辑一下,看到有一个词条连接的功能,测试一下先。我添加了一个词条存在的连接,一个不存在的,看看会有什么效果,不过可能要等到明天了。
调试之后,编辑貌似可以了,下一步就是历史版本功能了。这个是普通的列表,应该没什么困难的。
![](/images/cnblogs_com/cloudgamer/20080119f8f8f4fg5g6he2e.gif)
今天的最后要做的就是历史版本显示了,这个跟词条显示差不多,只是id换成内容的。
![](/images/cnblogs_com/cloudgamer/20080119f33336he2e.gif)
这样,总算是做了百科的基本功能了,好饿啊,明天再来吧。
转载请注明出处:http://www.cnblogs.com/cloudgamer/
如有任何建议或疑问,欢迎留言讨论。
如果觉得文章不错的话,欢迎点一下右下角的推荐。
程序中包含的js工具库CJL.0.1.min.js,原文在这里。