脚本宝典收集整理的这篇文章主要介绍了

浮生漫记0.5版本记录

脚本宝典小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望能帮助你少写一行代码,多一份安全和惬意。

迄今为止我的那个小网站已经发布到网上了,然而功能还在迭代中,真的说起来的话,现在距离1.0版本的发布,还差50%。现在记录一下之前做的一些内容,以及一些技术路线方面的改进吧:

首先,这是一个用于我个人统计研究和展示的网站,当前的核心是一个CMS系统,想要统计用户发布信息的关键词与情感趋势

最初的想法是在zuiwan.org的基础上,做一个二级网站。所以在服务端技术架构上,依然沿用主站的NODE+EXPRESS的方法,服务器没有采用一直使用的MongoDB,而是换成了MySQL,也方便后期上Java或者PHP。

前端架构上,也没有采用主站的VUE,而是沿用了我更加熟练的NG1.5。


服务端结构:

Index->Router->Model->DAO->MySQL => HTTP型api访问流
Index->static => 静态页面访问流
Index->socket.io Handler->Model->DAO->MySQL => socket接口访问流

最初是没有socket.io的,当时试图直接用普通的HTTP接口来实现,但是实时性需要用计时器来轮训,后来考虑到后期扩展,直接使用了socket.io。

model层最初被用来做黏合,接收的是req,res,然后直接在model层做了res.end()。但是后期在扩展socket的时候发现,这样会导致耦合度激增。于是改为了,接收data,cb,然后把通用的response体扔给cb的形式。

在之前的设计里,我一直不知道model层该如何设计,为何router不能直接与dao进行调度和数据交换。然后看到他们的java实体类——天了噜,为何一个Model要对应一个dao,这岂不是更没有道理了。

后来我真正开始自己的写法的时候,就找到了一点点思路——比如用户模块,一方面对上层接受的是路由过来的各种相关方法,一方面,并不只是对应一个user的Dao方法,其实涉及到很多个dao,比如token、relation等等。而token这个dao,也不可能单独拿一个Model去对应。——这是我的思路。

这么说来,其实我是少了Controller层。感觉java里Model封装了dao之后,在Controller里调用了各个Model。但是我暂时还没有找到这样的优势。所以还是沿用自己的思路吧。

另外,在与MySQL交互的时候,我抽取了一个dao的封装,暴露了一个query方法,作为各个dao的根基,上面的dao就只需要写dao.query(str, cb)就好了。


前端:

标准的NG1.5+UI-Router,BS做了上层样式展现。只是我一直用不惯UI.BootStrap。导致我现在还在用BS苦苦支撑。

Socket对接沿用了之前的代码、service用来存储全局变量。每个页面进入时需要调用session检查。

其他的无甚好说了。


经验教训:

1.NodeJS编程中,接口的回调参数,默认是err, data。以方便错误处理。

2.NG-repeat是支持子变量过滤的,自动的。

3.新学了express-session。

4.mysql包的连接池,不关闭,最多10个连接,多了会爆掉。

总结

以上是脚本宝典为你收集整理的

浮生漫记0.5版本记录

全部内容,希望文章能够帮你解决

浮生漫记0.5版本记录

所遇到的程序开发问题,欢迎加入QQ群277859234一起讨论学习。如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典网站推荐给程序员好友。 本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。

80%的人都看过