На проде обычно js код приложения проходит обфускацию и минификацию, понятно что это от не гарантия, но просто так открыть код и причитать не получится.
В SPA всё приложение отдается целиком, дальше общается с бэком через api, получая только данные, в зависимости от состояния и полученных данных приложение отображает информацию. Т.е. в приложении изначально данных нет. Более того, приложение не обязательно должно общаться только с одним бэкм(доменом), оно может слать запросы куда угодно, где будут готовы дать ему ответ, таким образом реализуется структура микросервисов, когда каждый сервис выполняет свою задачу независимо от другого. Например учётные записи пользователей, номенклатура, остатки и цены, заказы - это всё могут быть независимые сервисы.
Если не хотите всем подряд светить js файл с аппом, сделайте стандартную страницу авторизации на php, авторизованным пользователям в ответ отдавайте js файл приложения, который после получения будет запускаться.