Требовать, чтобы модуль 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*
Ответы
Ответ 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
без прохождения фазы сборки.