May 25, 2017
Misuzu 这个名字被人吐槽了很久,不知道怎么读,也不知道什么意思。所以就改成了 Nougat 这个名字,意为牛轧糖。
handler 的参数从原来的 request 改成了 ctx 。相比于前者, ctx 增加了 request 和 app 的支持。
因为 Nougat 这个框架不像 Flask 那样使用子线程的方式来处理。 所以 Flask 中的 url_for 和 abort 不能裸露使用。因此必须依赖上下文(Flask 可以在线程池中依靠线程ID 寻找上下文)。所以一定要这样使用something.url_for() 和 something.abourt 。
url_for abort redirect 这些操作放在 request 中感觉不三不四的。因此采用了ctx的写法。
所以handler 的写法就变成了一下的样子:
async def handler(ctx):
pass
原来那种以类的形式来写 middleware,过于累赘,而且不支持异步操作。因此改为 koa-like 的方式来写。
async def middleware(ctx, next):
# doing before handler
await next() # doing handler
#doing after handler
还有一些小小的改进
yarl.URL 来格式化 URL, 比我自己写更加高效,更加可信register_middleware 和 register_section 改用 use 。更加简约TOML 来做项目配置文件,并且同伴完成了Config 模块的编写,不过还需要我重构一次不过还是需要有一些等待修改的地方(都是我现在能想到的):
ctx.params的读取方式不太满意,应该重构以下param_group 或者叫 params 方法,一次性读入多个通用参数并且,从现在开始 Nougat 从原来的pre-alpha 进入了alpha 状态,意味着可以尝试投入工程中使用了。
我也会写一个工程去尝试以下 Nougat 的可用性。