Динамический компонент и загрузка шаблона с VueJS
Я рассматриваю VueJS на сайте несколько страниц. В официальном примере маршрут, они показывают, что вы можете динамически изменять шаблон и компонент на основе URL-адреса, но у них все еще есть все HTML-шаблоны и компоненты JS в одном файле, который загружается сразу.
мой сайт будет довольно большим, и я хочу загружать все только тогда, когда это необходимо. Поэтому мой вопрос:как я могу асинхронно загружать эти шаблоны HTML и JS компоненты по требованию при изменении URL-адреса? было бы полезно, чтобы просто показать, как приведенный выше пример маршрутизации может быть изменен для динамической загрузки скриптов.
2 ответов
обновление: см.Асинхронные Компоненты раздел в официальных документах.
жестко, но работают. Решение Webpack слишком сложно для начинающих, таких как я.
var router = new VueRouter({hashbang:false})
var routerMap = {};
router.beforeEach( function (transition) {
var path = transition.to.path;
if ((path != '/') && !(path in routerMap)) {
_ajax('/reports/'+ path + '.html', function(res){//$.ajax replacement (async)
routerMap[path] = {
component: {
template: res
}
};
router.on(path, routerMap[path]); //associate dynamically loaded component
transition.abort(); //abort current
router.stop();
router.start(); //restart router
router.go(path); //init new transition to the same path
});//_ajax
} else
transition.next(); //default action for already loaded content
});