Masonite 2.3

未匹配的标注
本文档最新版为 4.0,旧版本可能放弃维护,推荐阅读最新版!

Masonite 2.3

前言

Masonite 2.3带来了许多代码和生活质量的改进。 没有什么重大的突破性变化,这取决于应用程序的结构,并且不需要太多的升级工作。

以下是Masonite 2.3中的更改列表:

组件变化

一些较大的更改包括Masonite使用SEMVER版本控制的所有软件包,而Masonite自从Masonite启动以来仍在使用ROMVER。

Masonite也不需要通过Masonite要求为您提供任何软件包,而是将要求放到新项目的requirements.txt文件中。 允许软件包在Masonite的主要升级之外发布新的Majors。 因此,我们可以更快地开发新的程序包并改进。

删除TestSuite类

masonite.testing.TestSuite类已被完全删除。 这是一个过时的类,已经被masonite.testing.TestCase类代替。 TestSuite类基本上是对较早的测试功能前的某些命令的包装。

删除了SassProvider

有很多关于使用Pythonlibsass提供程序编译sass的局限性。 由于这些限制,Masonite 2.3将完全删除它。

默认添加了Laravel Mix

Laravel Mix文件附带由craft创建的新安装的应用程序。

增加Responsable 类

Responsable类可以被任何类继承并在控制器中返回。 如果该类具有get_response()方法,则使用该方法呈此类。 View类将以这种方式起作用。

不再支持 Python 3.4

Masonite支持4个Python版本,由于Python 3.8发布,Masonite仅将对 Python 3.5, 3.6, 3.7和3.8支持。当Python3.9发布,Python3.5支持将会被移除。

如果你需要之前Python版本,依然可以选择使用Masonite之前对应支持版本。

重写验证模块

Masonite移除Auth类,新增Guard类。这些类负责用户登录和注销。

更佳注册guards方式,来为你节省切换工作。

切换Auth类为Guard

这里变更极小,为你升级应用节省了大量的时间。现在任何需要使用Auth类地方,会被Guard类取代。两个类使用方法相同,这样切换后也能正常工作。

(这种切换可能会在 Masonite 2.4版本中移除)

新增 AuthenticationProvider

改进的身份验证已经抽象到自己的服务提供者里,我们需要在服务提供者指明。

导入Auth类同时加入相关脚手架

Auth类现在包含一些路由。这样web.py文件会更加整洁。

移除容器管理模块

现在容器并不绑定这些模块。需要导入。

新增断言

新增一批断言方法使得测试方法更加简短。包括assertHasHeaderassertNotHasHeader

新增下载类

新增下载类,使得下载下载和显示文件更加容易。

使用类似如下:

from masonite.response import Download

def show(self):
    return Download('/path/to/file', force=True)

这里会强制文件下载,如果不传递force参数,文件内容会直接在浏览器中显示。

加入 Preset 命令

你现在可以执行craft preset命令来生成一些.json文件和示例模板。目前支持react,vueboostrap支持。

解析查询字符串变更

之前 /?filter[name]=Joe&filter[user]=bob&email=user@email.com

解析为:

{
    "filter[name]": "Joe",
    "filter[user]": "Bob",
    "email": "user@email.com"
}

现在为:

{
    "email": "user@email.com",
    "filter": {
        "name": "Joe",
        "user": "bob"
    }
}

原始解析方法已经不支持了。还提供了query_parse辅助函数帮你手动使用Masonite方式来解析字符串。

改善容器集合

容器提供了collect方法让你可以根据提供的关键字来获取相关类:

app.collect('*Command')

这里将获取所有以Command结尾的类。

你还可以获取传入的所有子类:

from masonite.response import Responsable

app.collect(Responsable)

这里将获取所有 Responsable的子类

不仅是类,同样也支持实例。

移动 masonite/ 目录到src/masonite 目录

这里对于用户来说是完全透明的,允许安装任意同名第三方包,防止命名冲突。

改变WSGI服务器处理响应结果方式

Masonite现在响应结果为字节类型。允许不同类使用不同方式来处理响应结果。

之前Masonite最终响应内容都会转换为字符串,但是一些(例如文件下载)又需要将内容转换为字节。如果你需要处理原始响应内容,现在要注意其类型为字节而不是字符串了。

调度器

调度器有一些变更

新方法

提供了一些新方法 every, every_minute, every_15_minutes, every_30_minutes, every_45_minutes, daily, hourly, weekly, monthly.

这些方法可以在服务提供者里执行,或者命令里执行,提供更强的调度能力。

新的调度辅助类

服务提供者现在继承自CanSchedule类,提供了self.call()方法(用来调度命令)和self.schedule()方法(用来调度任务)。

这些辅助方法用来提供服务提供者绑定更加容易。

新的调度方式

现在可以调度任务和命令更简单。除了作为Task属性,你还可以在服务提供者里配置:

def register(self):
    self.call('your:command --flag').daily().at('9:00')
    self.call('your:command --flag').every_minute()
    self.schedule(YourJob()).every('3 days')

发行时还会记录其他一些方法。

命名变更

我们将scheduler命名空间变更为masonite.scheduler。所以你需要重构你的导入。

可邮件类

支持可邮件类,帮助包装一些逻辑来构建邮件。例如:

mail.to('user@example.com').reply_to('admin@me.com').template('emails.register').subject(..).send()

现在可以这样

from app.mailables import RegistrationMailable
mail.mailable(RegistrationMailable()).send()

控制器返回元组方式指定状态码

通过返回一个元组,可以指定期响应状态码。

之前需要这样:

def show(self, response: Response):
    return response.json({'error': 'unauthenticated'}, status=401)

现在我们如下就可以实现:

def show(self):
    return {'error': 'unauthenticated'}, 401

WSGI服务器返回结果变更

之前响应内容为字符串,现在变更为字节(例如返回图片或者PDF)。它将会在WSGI需要响应之前就发生了(或者没有)。所以应用程序有略微变更。

Masonite CLI 内置在内核

CLI工具无需安装了。在安装了masonite就提供了craft工具。从这就可以创建一个新项目了。

变更 Masonite API 命名控件

Masonite API 之前为from api.,现在使用 from masonite.api. 命名控件。

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/masonite/2.3/wh...

译文地址:https://learnku.com/docs/masonite/2.3/wh...

上一篇 下一篇
贡献者:3
讨论数量: 0
发起讨论 查看所有版本


暂无话题~