Vue js как виджет на другом сайте

Мне было интересно, можно ли создать компонент vuejs, который можно было бы встроить в другой сайт. Дело в том, что компонент будет появляться на веб-сайте несколько раз, поэтому у меня не будет доступа к корневому элементу. Я знаю способ сделать это с помощью реакции, но я бы предпочел сделать это во Vue.

5 способов использования оповещений, предупреждений, ошибок, сообщений об успехе в Bootstrap
5 способов использования оповещений, предупреждений, ошибок, сообщений об успехе в Bootstrap
Bootstrap - это популярный front-end фреймворк, который делает веб-разработку проще и быстрее. Использование Bootstrap растет по мере того, как все...
Библиотека Bootstrap
Библиотека Bootstrap
Bootstrap - это бесплатный набор инструментов для разработки веб-приложений с открытым исходным кодом, разработанный компанией Twitter. Написанный на...
HTML И VS CODE Для Веб-разработки
HTML И VS CODE Для Веб-разработки
Прежде чем начать кодировать html в "VS CODE", мы должны сначала создать папку и назвать ее x.html, здесь я принимаю x как имя файла, который мы...
Красиво оформленное веб-приложение для отправки HTML писем на PHP
Красиво оформленное веб-приложение для отправки HTML писем на PHP
В современный цифровой век маркетинг электронной почты играет жизненно важную роль в успехе любого бизнеса, а создание красиво оформленных HTML-писем...
Раскройте весь потенциал вашего проекта Angular с помощью экспертного знания команд Angular CLI
Раскройте весь потенциал вашего проекта Angular с помощью экспертного знания команд Angular CLI
Angular - это популярный JavaScript-фреймворк для создания веб-приложений. Одной из ключевых особенностей Angular является его мощный интерфейс...
Соскабливание и загрузка изображений Google с помощью Python
Соскабливание и загрузка изображений Google с помощью Python
Растущая распространенность веб-скрейпинга значительно расширила области его использования. Многие приложения искусственного интеллекта сегодня...
1
0
3 185
4

Ответы 4

Вы можете разместить более одного корневого элемента на одном сайте. Каждый компонент должен быть отрисован под корнем. Кроме того, у вас всегда есть доступ к корню через свойство $root. Какой у Вас вопрос?

Да, это возможно.

Я создал этот проект очень давно https://github.com/lmarqs/odw-form. Задача заключалась в создании встраиваемых компонентов для использования на других сайтах.

Он был создан с использованием vue-cli, но мне пришлось его адаптировать.

По сути, я создал новый файл входа в веб-пакет (main.prod.js). Эта запись устанавливает компоненты на Vue. Таким образом, в html можно создать следующее:

<div id = "app-1">
  <my-component1></my-component1>
  <my-component2></my-component2>
</div>
<div id = "app-2">
  <my-component1></my-component1>
  <my-component2></my-component2>
</div>
<script>
  var app1 = new Vue({
    el: "app-1"
  });

  var app2 = new Vue({
    el: "app-2"
  });
</script>

После создания новой записи я установил запись на webpack.base.conf.js

module.exports = {
  entry: {
    main: isProduction ? ["./src/main.prod.js"] : ["./src/main.js"]
  }
}

Затем, запустив команду npm run build, в папку /dist будут созданы встраиваемые файлы css и js.

Что, если бы я хотел иметь несколько экземпляров, в которых каждый <div id = "app" query = "foo"> <my-component></mycomponent> </div> <div id = "app" query = "bar"> <my-component></mycomponent> </div>

akhilcjacob 04.05.2018 20:23

Я мог бы использовать var app1 = new Vue({ el: "app1" });, var app2 = new Vue({ el: "app2" });, и у вас были бы разные экземпляры одного и того же компонента.

lmarqs 04.05.2018 20:28

Могут ли эти несколько экземпляров повлиять на производительность?

akhilcjacob 04.05.2018 20:29

У меня никогда не было проблем с производительностью. При запуске npm run build шаблоны переносятся в функции рендеринга (та же концепция, что и в реакции). Эти функции рендеринга действительно легкие.

lmarqs 04.05.2018 20:34

Знаю, я не отвечаю на ваш вопрос так, как вы хотите (используя компонент vue на другом сайте).

It would be perfect if you create a component and use it in frameworks like Angular,React,Vue etc.You can do it with Stencil.js

Нажав здесь вы видите отличный учебник по этому поводу.

Выглядит потрясающе! Спасибо!

akhilcjacob 04.05.2018 20:43

Да, я знаю, я обновил свой ответ, чтобы вы могли увидеть отличный учебник, сделанный академией.

roli roli 04.05.2018 20:50

Возможно стоит посмотреть в сторону vue-custom-element

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