在Elixir Phoenix框架项目中允许使用子文件夹模板是否存在一些缺点?
默认情况下,不能使用子文件夹在Elixir Phoenix framework中呈现部分模板,但可以在web_应用程序模块视图定义中进行更改。这是我在开始新的凤凰城项目时经常做的改变之一在Elixir Phoenix框架项目中允许使用子文件夹模板是否存在一些缺点?,elixir,phoenix-framework,Elixir,Phoenix Framework,默认情况下,不能使用子文件夹在Elixir Phoenix framework中呈现部分模板,但可以在web_应用程序模块视图定义中进行更改。这是我在开始新的凤凰城项目时经常做的改变之一 def view do quote do use Phoenix.View, root: "lib/demo_web/templates", namespace: DemoWeb, # for template su
def view do
quote do
use Phoenix.View,
root: "lib/demo_web/templates",
namespace: DemoWeb,
# for template subfolders usage
pattern: "**/*"
.....
end
end
所以我想知道,如果默认情况下不可能,可能有一个很好的理由
有人告诉我,但我不明白:
如果将模板嵌套在已具有视图的外部文件夹中
模块设置内部模板将编译到外部视图中
模块,这可能是有问题的
请您解释一下它是如何产生问题的?通过允许模板使用子文件夹,您基本上是在对phoenix说,每个子文件夹都应该编译到相应的顶级视图中 对于一个小型项目来说,这可能不是问题,因为您没有很多页面,但是想象一下,您开始有一些更复杂的东西,您决定嵌套视图 我甚至不知道Phoenix在这种情况下会有什么反应,因为基本上这意味着您的模板将在两个不同的视图中编译 如果它不起作用,您可能会花时间找出原因,如果它起作用,您可能会在顶级和子文件夹视图中使用相同的方法名,在这种情况下,您将不再清楚所引用的方法名 看一下,最后一部分称为跨视图共享模板,它说: 通常,我们发现在应用程序的不同部分中,需要以相同的方式呈现小块数据。最好将这些模板移动到它们自己的共享目录中,以表明它们应该在应用程序中的任何位置都可用
这将为您提供所需的大部分内容,而无需更改默认的Phoenix行为通过允许模板使用子文件夹,您基本上是在对Phoenix说,每个子文件夹都应编译到相应的顶级视图中 对于一个小型项目来说,这可能不是问题,因为您没有很多页面,但是想象一下,您开始有一些更复杂的东西,您决定嵌套视图 我甚至不知道Phoenix在这种情况下会有什么反应,因为基本上这意味着您的模板将在两个不同的视图中编译 如果它不起作用,您可能会花时间找出原因,如果它起作用,您可能会在顶级和子文件夹视图中使用相同的方法名,在这种情况下,您将不再清楚所引用的方法名 看一下,最后一部分称为跨视图共享模板,它说: 通常,我们发现在应用程序的不同部分中,需要以相同的方式呈现小块数据。最好将这些模板移动到它们自己的共享目录中,以表明它们应该在应用程序中的任何位置都可用
这将为您提供所需的大部分内容,而无需更改默认的Phoenix行为哦,我真的没有考虑嵌套视图的情况,只考虑嵌套模板。因此,我根据您的解释推断,只要子文件夹的主视图不嵌套在另一个视图中,我就可以安全地使用子文件夹。共享模板有自己视图的提示,我已经习惯了。有时我只是将一个视图别名为另一个视图,然后我可以使用它的渲染函数调用它。我真正关心的是子文件夹,它只是通过语义组织来轻松找到大型模板的小部分。例如,我只想将同一视图的所有表单放在一个子文件夹中。@Kurisu如果一个视图有多个表单,这可能意味着您的控制器有多个职责,请尝试拆分为多个控制器,例如使用它创建不同的视图;-)哦,我真的没有考虑嵌套视图的情况,只是嵌套模板。因此,我根据您的解释推断,只要子文件夹的主视图不嵌套在另一个视图中,我就可以安全地使用子文件夹。共享模板有自己视图的提示,我已经习惯了。有时我只是将一个视图别名为另一个视图,然后我可以使用它的渲染函数调用它。我真正关心的是子文件夹,它只是通过语义组织来轻松找到大型模板的小部分。例如,我只想将同一视图的所有表单放在一个子文件夹中。@Kurisu如果一个视图有多个表单,这可能意味着您的控制器有多个职责,请尝试拆分为多个控制器,例如使用它创建不同的视图;-)