Как условно добавить код в шапку приложения Vue

Я сделал простое приложение Vue с помощью Vue CLI, и теперь я хочу добавить код Google Tag Manager в заголовок html условно только для производственной сборки. Я мог бы сделать это с серверным языком, таким как php, поэтому я попытался изменить index.html на index.php, но когда я создаю проект, он выводит index.html с введенным приложением и index.php без приложения, введенного в папку dist. Код php также не работает с webpack-dev-сервером в vue cli.

Как я могу интегрировать некоторый код на стороне сервера (он не обязательно должен быть php) в индекс приложения vue, созданный vue cli, чтобы условно добавить код диспетчера тегов для производственной сборки? Я не уверен, как выполняется процесс сборки vue cli. Могу я сказать ему использовать другой index.html для производственной сборки?

Дополнительно: мне интересно узнать больше о процессе сборки vue cli. бывший. В шаблоне index.html нет тега сценария, так как же Vue внедряется в индекс при создании или использовании webpack-dev-server?

Обратите внимание, что у вас должно быть два файла index.hmtl: один шаблон и один в комплекте. Пакет должен находиться в вашей папке src и содержать файлы js и css с хешами фрагментов в конце. Один шаблон находится в вашей корневой папке (где находится ваш package.json). Возможно, вы это уже знаете, но в Vue.js есть полное руководство по рендерингу на стороне сервера: ssr.vuejs.org

Máté Wiszt 19.09.2018 09:31

Специально для вашей цели есть плагин vue-analytics. В плагине есть возможность отключить его во время разработки, вы должны проверить это: matteogabriele.gitbooks.io/vue-analytics/content/docs/…

Máté Wiszt 19.09.2018 09:34

@ MátéWiszt Я бы не хотел изменять связанный index.html после сборки. Мне нужно будет изучить SSR и нагрузку на сервер PHP. Спасибо за ссылку на плагин.

Devin Crossman 19.09.2018 09:49

Да, вам никогда не следует изменять связанный index.html, потому что он всегда будет автоматически сгенерирован, поэтому все ваши изменения исчезнут, я просто упомянул его, чтобы привлечь ваше внимание к шаблону, в который вы можете добавлять вещи.

Máté Wiszt 19.09.2018 09:52
Поиск всех неиспользуемых файлов в проекте
Поиск всех неиспользуемых файлов в проекте
Количество файлов в проекте растет по мере его развития. И если быть по-настоящему честным, их продвижение происходит в геометрической прогрессии...
Настройка шаблона Metronic с помощью Webpack и Gulp
Настройка шаблона Metronic с помощью Webpack и Gulp
Я пишу эту статью, чтобы поделиться тем, как настроить макет Metronic с помощью Sass, поскольку Metronic предоставляет так много документации, и они...
6
4
4 999
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я только что видел в документация vue cli, что страница index.html обрабатывается веб-пакетом. Это означает, что я могу использовать синтаксис шаблона lodash, чтобы легко добавлять теги в заголовок только на продакшене.

<head>
...
<%= process.env.NODE_ENV === 'production' ? '<script>...</script>' : '' %>
...
</head>

@AlexanderKim, он работает над v 3.2.1, так что он должен работать и на v 3.0.5 ...

Aakash 22.12.2018 10:32

Более важный вопрос: работает ли этот синтаксис и в компонентах .vue? Я хочу создать несколько флагов сборки и условно распечатать html в теге <template tag> или скрипты в теге <script>, это сработает?

Tofandel 11.10.2019 17:39

альтернативный метод:

<% if (process.env.NODE_ENV === 'production') { %>
    <script>...</script>
<% } %>

Другие вопросы по теме