如何在模块,包或插件中封装代码?

时间:2016-08-03 10:04:12

标签: elixir phoenix-framework

我正在寻找一种方法来构建类似于symfony中的bundle或CakePHP中的插件。例如:在用户模块中,所有控制器,模板和视图都将位于单个文件夹中,以便我可以轻松访问它们。

我想基于功能创建类似的模块,例如支付模块,库存模块等。

在目前的架构中,我可以将所有控制器放在一起,将所有视图放在一起。由于我的项目非常庞大,所以现在它有近140个控制器等等,对我来说它看起来很乱。凤凰为模块化代码提供了什么?

1 个答案:

答案 0 :(得分:0)

一开始,请查看link,但我也强烈建议您查看由凤凰的创造者,Elixir的创造者和知道至少14种语言的人写的非常精心准备的书 - "凤凰城编程"。

凤凰城的结构与Symfony或任何其他框架有很多不同,因为它只是由函数组成。你没有黑盒子中间件,但你可以创造任何你需要的东西。

菲尼克斯按顺序处理请求:

your request in browser
|> Endpoint (in lib folder)
|> Router (as the rest in web folder)
|> Pipeline (set of Plug functions in router as well)
|> Controller

然后控制器使用视图(而不是中间件,您可以定义在渲染模板时要启用的功能)和模板 - 只是HTML标记的占位符。

与凤凰城开始伟大旅程的最佳想法是遵守惯例。每当您想要添加新动作时,您必须:

  • 在路由器中添加新条目(在router.ex
  • 添加新控制器或使用现有控制器(在网络/控制器中)
  • 添加新视图或使用现有视图(在网络/视图中)
  • 添加新模板或使用现有模板(在网络/模板中)
祝你好运。