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 的可用性。