Как сделать загрузку файла php с помощью vue?
Для обмена информацией между фронтом и бэком без аякса есть вебсокеты. Но их обычно используют только в realtime приложениях. В остальных случаях ajax нормальное решение. Почитайте ещё про SPA. Это когда сразу отдаётся статика со скриптами и стилями, а затем, по мере необходимости делаются ajax запросы к серверу и полученные ответы (обычно в формате json), разбираются в на их основе рендерится контент. 
Laravel очень удобен для бэка в таких проектах.
Пиши api сайта - рано или поздно он все равно будет нужен для связи front back end'a 
Например, давать ответ от php в формате json, разбирать его через js(vue)