Если кратко, то - конечно, можно.
Но давайте все-таки разберемся какие варианты реализации этой задачи есть.
Первый вариант - у вас не SPA (Single Page Application), а именно отдельная страница под каждый серверный роут. Страница целиком приходит с сервера (рендерится заново) и Vue каждый раз при переходе инициализируется. Этот вариант, хоть и возможен, но он имеет ряд нюансов. Да, у вас не будет проблем с SEO, но вы не сможете полноценно работать с VueX и роутингом, а для крупных проектов это важно.
Второй вариант - у вас все-таки SPA и Vue инициализируется единожды, роутингом управляет Vue Router и вы можете свободно использовать асинхронное хранилище (VueX).
Все бы хорошо, но тут появляются новые нюансы -SEO. Если вы разрабатываете сервис, который требует авторизации на первом же экране или для внутреннего использования, то вы вероятно, не будете задумываться о SEO, но если у вас есть публичные страницы, то без SEO не обойтись.
К счастью, есть несколько путей решения - SSG и SSR. Это перендеринг (SSG) - по сути генерация статичного сайта или же выполнение кода на стороне сервера (SSR) и возвращение уже готовой разметки.
Сама настройка SSR требует определенный навыков, но и тут есть решение - Nuxt.js, который предлагает на этапе создания проекта выбрать как мы хотим работать с кодом - на клиенте, на сервере или универсальный вариант. Nuxt.js, по сути, надстройка над Vue, там очень многие рутинные моменты автоматизированы.
Начнем с того, что там есть структура папок, которая уже заточена под многостраничность и новая страница создается и регистрируется в роутере автоматически. Все что вам надо - просто создать файл в папке pages.
К примеру, если создали файл test.vue, то моментально появится роут /test. Хотите принимать параметры, создайте папку test и в ней файл _id.vue , и тогда появится динамический роут /test/:id . Можно даже обрабатывать динамически роуты с бесконечной вложенностью. То есть такой путь /catalog/nakopiteli/ssd/4 и /catalog/bitovaja-tehnika/dla-kuhni/krupnogabaritnaya/holodilnik/10 могут вести на одну страницу. Для этого надо создать папку catalog а в ней файл _.vue и в этом файле обрабатывать запрос.
А как же дело обстоит с SEO? Тоже очень просто. У вас теперь есть поля для указания мета-тегов в страницах, которые созданы в папке pages примерно так.
<script>
export default {
head: {
title: 'Home page',
meta: [
{
hid: 'description',
name: 'description',
content: 'Home page description'
}
],
}
}
</script>
Это лишь крупицы из возможностей Nuxt, которые непосредственно связаны с темой вопроса, но если вы изучите документацию, то поймете, что этот инструмент дает очень много преимуществ и SPA уже не выглядет чем-то страшным и пугающим SEO-специалистов.
В заключении скажу, какой вариант работы со Vue выбрать - вам решать, но ответ - однозначно можно делать многостраничные и большие проекты и при этом очень комфортно.
Удачи!