Переводить сайт на vue можно по частям, я бы даже сказал, что нужно по частям. В большинстве случаев нет смысла делать чисто одностраничную SPA с одним глобальным vue-приложением - проблемы с индексацией поисковиками, другой непривычный UX для пользователей, вот это всё. Выделите места, где нужна активная интерактивность и их сделайте в виде приложений vue. Начальные данные можно получать не аяксом, кстати, а помещать при генерации страницы на бэкенде в глобальную переменную window и потом в приложении vue их оттуда забирать в beforeMount(). Пример можно посмотреть здесь в readme:
https://github.com/spatie/laravel-blade-javascript... . В этом случае пользователь будет избавлен от необходимости после загрузки страницы смотреть на индикатор загрузки данных аяксом.
А при аякс-запросах, конечно, надо делать вариант 2. Пот бэкенда только json, никаких скриптов - запутаетесь. Также заранее ознакомьтесь, зачем полезно нормализовывать данные для хранения на клиенте, когда-нибудь точно пригодится -
https://habrahabr.ru/post/332628/ ,
https://github.com/paularmstrong/normalizr
vuex, кстати, использовать можно только если у вас есть зависимые друг от друга приложения (например, приложением сделан сайдбар, где должны меняться числа после действий пользователей). Если такого не нужно, то можно обойтись и без него.