我使用 Django 已经很多年了(从 Django 1.2 开始)。过去,我也使用过不同类型的 web 框架(例如 CakePHP、Rails、ASP.NET MVC 和其他一些全栈框架),Django 并不是我的第一个框架。
不同的框架在它们的方法和优点上存在差异。我喜欢其中的一些方面,也不喜欢其中的一些方面。在这个背景下,我想更详细地研究 Django 框架的设计。
转向 Django 后,我喜欢它如何设计框架。当学习一种新语言(比如 Go、Scala、Ruby、Haskell)时,我会尝试寻找一个在设计上有一些相似之处的框架,特别是后者提到的那些。
以下是两个 Django 框架设计决策的主要区别:
- 它鼓励可插拔应用程序或应用程序可重用性。因此:
- 摆脱 Jacob Kaplan-Moss 的整体式设计
- 使用多个应用程序创建一个完整的功能站点,没有任何模型或逻辑
- 在 James Bennett 的Practical Django Projects中提到编写不需要项目的 Django
- 它使用模型-视图-模板(MVT)而不是传统的 MVC:
- 在FAQ中提到。
- 视图描述呈现哪些数据
- 模板描述数据如何呈现
- 视图通常委托给模板
- 控制器可能是框架本身:根据Django URL配置将请求发送到适当的视图的机制。
- 'ruby'中类似于Django的框架
- 'Java'中类似于Django的框架
- 'Haskell'中类似于Django的框架
- 'Go-Lang'中类似于Django的框架
- 'Scala'中类似于Django的框架
我不相信Django开创了这样的特性。我相信这种模式在框架设计中非常常见。只是我不知道这个(设计)模式叫什么?这个概念很有用,可以应用于其他框架。我相信知道模式的名称可以帮助我理解甚至建立一个具有相同概念的不同语言的新框架。
目前有大量的Web框架,其中大多数都遵循经典的MVC模式。一些使用插件的概念来添加特定的功能。然而,插件解决了依赖于上下文的不同方法的可重用性问题。
所以我尽可能学习了许多框架,以便找到不同语言的替代框架。希望我能找到Django使用的模式。但是,对我来说学习所有这些框架非常困难。事实上,到目前为止我还没有找到一个。
我一直在寻找:
不幸的是,它们中没有一个真正强调我感兴趣的概念。
在这个问答中,我想知道人们如何称呼这样的框架?(或Django使用了什么模式?) 如果您能提供参考,说明其他框架可能也在使用该设计,那就太好了。