Подтвердить что ты не робот

Требовать, чтобы модуль JavaScript внутри одного шаблона Phoenix

Каков стандартный метод, требующий определенного JavaScript-модуля внутри одного шаблона Phoenix?

Я не хочу, чтобы модуль требовался где угодно, но внутри этого одного шаблона.

Вот фрагмент файлов, которые я использую.

Web/статический/JS/trend_chart.js

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

Web/шаблоны/макет/app.html.eex

У этого есть стандартная загрузка/требование приложения.

...

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

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

...

Web/шаблоны/страница/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. (Я знаю, я знаю!)

Итак, 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*
4b9b3361

Ответ 1

Вы можете сохранить файл в 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 без прохождения фазы сборки.