Masonite 2.3
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文件会更加整洁。
移除容器管理模块
现在容器并不绑定这些模块。需要导入。
新增断言
新增一批断言方法使得测试方法更加简短。包括assertHasHeader和assertNotHasHeader。
新增下载类
新增下载类,使得下载下载和显示文件更加容易。
使用类似如下:
from masonite.response import Download
def show(self):
    return Download('/path/to/file', force=True)
这里会强制文件下载,如果不传递force参数,文件内容会直接在浏览器中显示。
加入 Preset 命令
你现在可以执行craft preset命令来生成一些.json文件和示例模板。目前支持react,vue和boostrap支持。
解析查询字符串变更
之前 /?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. 命名控件。
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
          
 Masonite 中文文档
            
            
                关于 LearnKu
              
                    
                    
                    
 
推荐文章: