如何正确使用Yii模块?

时间:2015-05-11 22:43:57

标签: yii yii2

在Yii PHP框架中,人们可以创建模块。根据Yii的官方文档,这里是definitionmodule

  

模块是一个由模型组成的独立软件单元,   视图,控制器和其他支持组件。在很多方面,a   模块类似于应用程序。主要区别在于a   模块不能单独部署,它必须驻留在一个   应用。用户可以像访问模块一样访问模块中的控制器   使用普通的应用程序控制器。

假设我们有一个巨大的应用,我们必须创建前端和后端。在这种情况下,最好是创建frontend modulebackend module并使用它们,或者最好将前端作为一个Yii应用程序,并将后端作为第二个Yii应用程序。

我问这个是因为如果你看Yii's 2 advance template,有三个是不同的应用程序(common, backend, frontend),但是它们并没有被实现为三个不同的模块,我的问题是为什么?

使用模块时应用程序会变慢吗?使用模块的优缺点是什么?

2 个答案:

答案 0 :(得分:3)

Yii2高级模板有3个不同的应用程序,但它们是前端,后端和控制台(不常见)。

  

创建前端模块和后端模块并使用它们会更好吗?

答案是“它取决于”。让我们举一些例子:

  1. 我在后端有一个“用户”部分,告诉系统每个用户在后端可以更改什么。我在多个应用程序中使用它而没有任何变化,因此我创建了一个用户模块,我可以在任何地方插入。这是最简单的模块,因为我从未将它用于前端。
  2. 一个博客模块,博客模块有点复杂,因为它有一个管理博客的地方(这部分在后端),前面部分显示的帖子和评论(这部分应该在前端) )。但是我仍然希望能够将它插入多个应用程序中。我的解决方案是在实际模块中创建一些文件夹(我实际上创建了相同的结构前端/后端/公共)。逻辑是一样的,在我的网站前端我使用你在模块的前端文件夹中找到的东西,常见的东西包含我在前端和后端使用的东西(比如某些模型)等。不同的应用程序将使用相同的前端控制器/小部件但请确保允许更改视图。
  3. 使用或不使用模块的答案实际上是“我是否会在其他应用程序中使用它并且能否在没有其他应用程序的情况下运行”的答案相同?模块不应与应用程序的其余部分紧密耦合。

答案 1 :(得分:0)

模块的概念在于它们几乎是自主的。 在应用程序开发阶段,您必须从中突出显示所有独立元素。 例如,我有一个大型CRM。我需要一个用户模块(包括与用户,控制器,显示器相关的所有型号 组件及其配置 - 例如路由规则)。还有一个管理模块。 有CRM模块和公司活动和会议日程安排的模块。 大约3-5个独立模块 - 例如内部通信模块,访问控制模块和电子支付模块。 方便的是所有模块都是独立的。他们有自己的MVC集,小部件和配置集。 而且他们可以毫不费力地从一个项目转移到另一个项目。

这是另一个有趣的模块化系统: 有各种功能的资源。它可以分为模块。每个模块文件都应该实现模块化接口(您需要编写它)。 例如,我希望每个模块都为菜单提供自己的小部件。(下拉列表或只是一个按钮)和它自己的仪表板小部件。 还可以在模块文件中指定访问各种操作等。

有一个基本组件,在渲染步骤之前轮询所有模块的规则功能,并在其基础上构建菜单,仪表板和其他小部件。 这种方法的主要内容,请记住,模块提供的所有内容必须由模块化功能(模型,小部件)准备,而不是破坏模块化自治。