@kolo2012

Как заставить работать vue-router?

Добрый день. Я впервые взялся за всё это, я работаю bnackend -разработчиком и иногда юзал джейквери. Сейчас хочу стать fullstack, для фронта выбрал vue.

Я смог завести vue-loader но подружить его с роутером не вышло, точнее роутер у меня вообше не заработал. В main.js написал что-то вроде
import Vue from 'vue';
import VueRouter from 'vue-router';


Vue.use(VueRouter);

const router = new VueRouter({history: true});

router.map({
    '/': {
        name: 'app',
        component: view('App')
    }
});


/**
 * Asynchronously load view (Webpack Lazy loading compatible)
 * @param  {string}   name     the filename (basename) of the view to load.
 */
function view(name) {
    return function (resolve) {
        require(['./views/' + name + '.vue'], resolve);
    }
}
;

export default router;

index.html
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
    </head>
    <body>

        <div id="app"></div>
        <script src="/dist/build.js"></script>
    </body>
</html>


В итоге "белый экран"
  • Вопрос задан
  • 380 просмотров
Решения вопроса 1
k12th
@k12th
console.log(`You're pulling my leg, right?`);
А в принципе роутинг заработал? Просто статичный компонент, без ленивой загрузки, показывается?

Вообще require не делает ленивую загрузку, ее делает require.ensure, то есть будет как-то так (писал из головы, смотрите доки):

function view(name) {
    return function (resolve) {
        require.ensure(['./views/' + name + '.vue'], (require) => {
            const loadedComponent = require('./views/' + name + '.vue');
            // тут еще наверное шаг монтирования загруженного компонента
            resolve();
        });
    }
}


Ну и пора начинать использовать import() вместо нестандартных расширений нестандартного механизма:)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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