在单个Phoenix模板中需要JavaScript模块

时间:2015-07-11 14:53:59

标签: javascript html phoenix-framework

在单个Phoenix模板中要求定义的JavaScript模块的标准方法是什么?

我不希望在这个模板中的任何地方需要模块。

以下是我正在使用的文件片段。

网/静态/ JS / trend_chart.js

let TrendChart = {
  //... some JS module code here
}

网/模板/布局/ app.html.eex

这有标准的app load / require。

...

<script src="<%= static_path(@conn, "/js/app.js") %>"></script>

<script>require("web/static/js/app")</script>

...

网/模板/页/ index.html.eex

<!-- what do i put in this template to require / load the TrendChart module code? -->
<!-- i don't want it required globally, so i don't want to put it in the app.html.eex file -->

更新#1

我真的在寻找一种在主布局中有两个@inner块的方法。一个用于内容,另一个用于在内容之后加载其他JavaScript项目。

ASP.NET MVC中的sections之类的东西。 (我知道,我知道!)

所以app.html.eex会这样结束:

...
@inner
...

<script src="<%= static_path(@conn, "/js/app.js") %>"></script>
<script>require("web/static/js/app")</script>

*something here to load page/template specific javascript*

1 个答案:

答案 0 :(得分:7)

您可以将文件保存到web/static/assets/trend_chart.js,然后将其复制到priv/static/trend_chart.js,并可从<script src="<%= static_path(@conn, "/trend_chart.js") %>"></script>获取。

保存到web/static/assets目录的所有文件都会直接复制到priv/static,而无需经过构建阶段。