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

默认情况下,不能使用子文件夹在 Elixir Phoenix框架中呈现部分模板,但可以在web_app模块视图定义中进行更改。这是我开始新的Phoenix项目时始终做出的更改之一。

    def view do
      quote do
        use Phoenix.View,root: "lib/demo_web/templates",namespace: DemoWeb,# for template subfolders usage
          pattern: "**/*"

          .....
      end
   end

所以我想知道如果默认情况下不可能,那可能是有充分的理由。

有人告诉我,但我不明白:

  

如果您将模板嵌套在已经具有视图的外部文件夹中   模块设置内部模板将被编译到外部视图中   模块,也可能有问题。

请您能解释一下有问题吗?

caoxingxiecan 回答:在Elixir Phoenix Framework项目中允许使用子文件夹模板是否有一些缺点?

通过允许子文件夹作为模板,您基本上是对phoenix说,应该将每个子文件夹编译为相应的顶层视图。

对于一个没有很多页面的小型项目来说,这可能不是问题,但是想象一下,在决定嵌套视图时,您开始遇到更复杂的事情了?

我什至不知道Phoenix在这种情况下会如何反应,因为基本上这意味着您的模板将以两种不同的视图进行编译...

如果它不起作用,您可能需要花一些时间弄清楚原因,如果确实如此,则可能在某一时刻在顶级和子文件夹视图中使用相同的方法名称,在这种情况下,它将不不再清楚您指的是哪一个。

看看templates guide,最后一节称为跨视图共享模板,它说:

  

通常,我们发现一小部分数据需要在应用程序的不同部分中以相同的方式呈现。最好将这些模板移到它们自己的共享目录中,以指示它们应该在应用程序中的任何位置都可用。

这应该为您提供大部分所需的功能,而无需更改默认的Phoenix行为

本文链接:https://www.f2er.com/3116757.html

大家都在问