Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Elixir Phoenix框架项目中允许使用子文件夹模板是否存在一些缺点?_Elixir_Phoenix Framework - Fatal编程技术网

在Elixir Phoenix框架项目中允许使用子文件夹模板是否存在一些缺点?

在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

默认情况下,不能使用子文件夹在Elixir Phoenix framework中呈现部分模板,但可以在web_应用程序模块视图定义中进行更改。这是我在开始新的凤凰城项目时经常做的改变之一

    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如果一个视图有多个表单,这可能意味着您的控制器有多个职责,请尝试拆分为多个控制器,例如使用它创建不同的视图;-)