从上上个周开始,就开始进行了。为啥起了这么蛋疼的一个名字,0 0当时建目录的时候不知道起啥名字,然后就起了一个the first web framework(tfwf),然后在bitbucket上开了一个私有项目,就开始写了。
先说说目的:一直都在用别人写的东西,包括接触的n多东西,一直想自己也实现一个。终于下决心用go准备写一个web框架,因为对这个还算是熟悉的了。选择go的原因是,写了可能会有别人用,但是我的出发点是学习并玩玩。不懂设计,不懂高深的理论,能有点样子就好了。
其实go自带的包写web应用已经非常方便了,现在主要实现的功能有:
url的正则匹配,并且可以定义`^/aa/(?P<second>\d+)/`这样的样式。
网站的基本设置,像域名,名字,templedir等
控制器模仿tornado的样子写的,感觉蹩脚的很0 0.
启动时模板的导入。
就这些了。
说说从一开始写的过程,现在只记得七七八八了,时间有点长了。
准备写web框架的时候,我先去大略看了一遍谢大的 goweb编程那本书,第3.4节是对web框架开头路由的编写起了关键性的作用。
然后我就直接从http包 函数找到源码,把那里的代码意思看懂,就开始写了支持正则匹配的路由,然后对应的handler是函数。之后我就想写成python里边面向对象可以重载的方法,就研究了一下go的面向对象的编程,写成了接口的模式,什么走路像鸭子就是鸭子0 0。。写这里的时候我遇到一点问题:从接口取到对应struct的元素和方法,我有去看来reflect包的内容。
这期间我找了,web.go和beego的代码,大体看来一遍,发现beego的控制器写的跟我想的基本一样,直接看代码,借鉴了很多代码- -算不算抄袭。像url里匹配的变量,我发现go不支持继承的方法参数啥的必须一样。我就在context里边加了一个属性args,感觉真二。
今天开会的时候又加上了temple的启动时集中导入功能,功能的来源beego。再可耻一下0 0.settings和templates都是全局的,这些都不需要修改,第一次启动添加,应该不会有问题。
现在还有好多细节没处理好。还有很多必要的功能没有,像:错误提示,我自己写的时候测试,都发现非常困难,只是自己比较了解,能快速定位刚才修改的代码。我现在很多代码的错误验证都还没有0 0.、
对 一个主要的功能准备,明天实现:异步的问题,现在还没头绪,明天仔细研究一下,并测试一下在普通http请求这两个差别真的很大吗。我现在只是直接调用方法。觉得挺直观明白的0 0.
代码明天实现异步在上传到github上,现在也没格式化。我觉得我应该用我自己写的框架写点能用的东西,才知道还有哪里需要修改的更好0 0.
上一篇: python程序内存占用分析-meliae
下一篇: ubuntu deb包 解包并查看安装时进行的操作
你如我屌吗 这是我的博客 www.host900.com 战斗力只有5的渣渣也敢发博客