Vue JS для не SPA-приложений - загрузка компонентов без компонента приложения - PullRequest
2 голосов
/ 16 мая 2019

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

Когда я сделал это с реагирующими Js, я использовал реагирующую среду обитания. Мне интересно, есть ли что-то подобное для vue js, которое доступно, или это можно сделать с помощью стороннего модуля-инструмента.

Ответы [ 2 ]

1 голос
/ 16 мая 2019

Это можно сделать, импортировав ваши компоненты в файл JavaScript и создав экземпляр vue с указанным элементом:

// JS File
import Vue from 'vue';

import YourComponent from './YourComponent.vue';

export default new Vue({
   el: '#app',
   components: { 
     YourComponent
   }
});


// HTML file
<div id="app">
  <your-component></your-component>
</div>
1 голос
/ 16 мая 2019

Вам не нужен компонент приложения. Просто назначьте любую оболочку (div) модулю Vue (экземпляр Vue). Я использую компонент для получения контактов, например.

Вы можете иметь несколько приложений Vue на одной странице. Они просто не могут перекрываться.

HTML:

<div class="col-md-4 col-sm-4" id="safeContactsFooter">
 ..some html stuff

     <ul class="phone">
         <li>Phone: <safe-contact type="phone" ></safe-contact></li> 
     </ul>

</div>

Vue модуль:

export default new Vue({
    el: '#safeContactsFooter',

    components : {
        'safe-contact' : () => import('./components/Safe contact') ,
    },

});

Тогда вы должны регистрировать модуль только при наличии div с правильным ID. В противном случае консоль будет кричать вам, что объект не существует. Я делаю это так:

if(document.getElementById("safeContactsFooter")){
    import('../Safe contacts/Safe contacts footer.Module.js');
}
...