maximsohryakov
@maximsohryakov
MiMEKiZ

Есть ли возможность подставлять произвольные данные в пользовательский js?

Имею скрипт такого вида:

$(document).ready(function () {
    let allVideo = new window.VPlayer('192.168.1.67');
    /**
     * function (number, port, canvas_element, container)
     */
    allVideo.addVideo(0, 49002, $("#video-canvas-1").get(0), $('#jsmpeg1'));
    allVideo.addVideo(1, 49004, $("#video-canvas-2").get(0), $('#jsmpeg2'));
    allVideo.addVideo(2, 49006, $("#video-canvas-3").get(0), $('#jsmpeg3'));
    allVideo.addVideo(3, 49008, $("#video-canvas-4").get(0), $('#jsmpeg4'));

});


Данный скрипт является пользовательским. Выдавать его будет сервер express.js.
Особенность в том, что данные '192.168.1.67' и 4900* меняются в зависимости от определенных причин. Вручную их править неудобно.
Поэтому решено автоматизировать это.
В теории это видится следующим образом: средства сборки gulp\grunt ищет произвольный шаблон, и заменяет его его данные полученные из конфигурационного json файла.

Весь вопрос сосоит в следующем:
1. Подходит ли для текущих задач следующий плагин gulp-jsfmt?
2. Или существуют шаблонизаторы для js кода, на подобии handlebars и\или Mustache.js?
3. Или стоит компановать этот код в handlebars и вставлять его на страницу при помощи хелпера? (похоже на костыль).
4. Умеет ли TypeScript в такое? (Запрашивать данные для посдтановки перед преобразованием его в js)

p.s. запращивать эти данные с сервера при каждом подключении плохая идея. Хоть и не значительная, но лишняя нагрузка серверу.
p.s.s. формат записи скрипта корявый, и его можно записать более лаконично, но это уже совсем другая история
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
Robur
@Robur
Знаю больше чем это необходимо
Вы перемудриваете. Любой шаблонизатор вам поможет - отнеситесь к этому файлу как к текстовому.
Сейчас часто используется env-переменные для того чтобы конфигурить JS при сборке
let allVideo = new window.VPlayer(process.env.SERVER_URL);

дальше перед сборкой SERVER_URL ставится в нужное значение одним из тонны способов (это реальная переменная окружения) - на выходе вы получаете js-файл с подставленной строкой.
Это удобно и супер гибко.

распространенная практика при сборке вебпаком, не знаю умеет ли gulp такое но готов поспорить что да.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы