dosya97
@dosya97
Fullstack web-developer

Как лучше реализовать SPA?

Привет, пробовал разрабатывать на vue-cli со всеми готовыми батарейками на webpack.v.1 и обычным кастомным с нуля на webpack.v.3. Удобнее конечно на vue-cli, но мне не нравится, что после сборки, все раздрабливается на отдельные css, js. И при этом браузер, в частности chrome видит все мои внутренние компоненты проекта. И это немного неприятный момент. Вроде все минифицируется и аглифай встроенный в vue-cli делает свое дело. Но браузер все парсит и все понимает. А при webpack3 генерится один единственный bundle.js который я подключаю в проект. В данном случае все работает отлично. Но вопрос встал о производительности. Настанет такой момент когда мой bundle.js будет много весить, и заставлять браузер ждать полной загрузки - плохо. Или я преувеличиваю? Что лучше? Спасибо!
  • Вопрос задан
  • 1835 просмотров
Решения вопроса 1
dosya97
@dosya97 Автор вопроса
Fullstack web-developer
Удалить .js.map файлы. Это sourcemaps от webpack))
Дело в том, что месяц назад я добавил дополнительный loader в vue-loader.conf.js. И закомментил sourcemap-овский condition. А именно вот так:
18e808f46fa34a6ba3267544c87c0242.png
Ха-ха. Просто я не знал как это организовать вместе)) Смешно правда?
Так вот решение:
7ac0e9f1cbea4556b8809afdcb4ea643.png
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
lavezzi1
@lavezzi1
Последний vue-clie на webpack 2.x из коробки поддерживает code splitting. На выходе получается vendor.js (библиотеки из node_modules), app.js. Также посмотри в сторону lazy loading components. То есть можно модалки например, или другие компоненты не грузить вообще если нет надобности. То есть на модалку вещаете директиву v-if и компонент подключаете так:
components: {
  Modal: () => import('components/modal.vue');
}


При этом компонент на выходе будет лежать в отдельном файле и не загрузится до того, пока не отработает v-if.

Если без v-if, то компонент загрузится асинхронно во время загрузки страниц.

Я например, гружу так страницы через vue-router, асинхронно.
Ответ написан
@kulaeff
Front-end developer
Много весить - довольно субъективное понятие. К тому же не нужно забывать, что есть такая штука как кеш. Я разбиваю код на два бандла: в одном находится мой код, в другом - код сторонних библиотек. Смысл в том, что сторонние либы обновляются редко, браузер этот бандл закеширует при первой загрузке и будет подгружать только мой код, который обновляется часто, но весит мало.
Ответ написан
Ваш ответ на вопрос

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

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