Giả sử tôi có một giao diện người dùng chủ yếu là một ứng dụng một trang được viết bằng cách sử dụng góc cạnh, lẩm bẩm và bower. Và giả sử tôi có một phụ trợ, phần lớn chỉ là API REST nằm trên ORM, lưu trữ / truy xuất các đối tượng từ cơ sở dữ liệu, sử dụng những thứ như grunt, express và sequelize.
Ứng dụng góc cạnh thực hiện tất cả các công cụ trực quan mà người dùng nhìn thấy, nhưng nó làm như vậy bằng cách là một GUI trên các dịch vụ được cung cấp bởi back-end.
Sẽ là mong muốn để tách chúng thành hai cơ sở mã khác nhau, để cho phép phát triển độc lập, tạo phiên bản, tích hợp liên tục, thúc đẩy phát triển, v.v.
Câu hỏi của tôi là, những phương pháp nào hiện có để làm điều này sạch sẽ? Có khuyến nghị thực hành tốt nhất cho javascript đầy đủ không?
Tùy chọn # 1 dường như là một khối nguyên khối, tức là "không tách chúng ra". Điểm chuyên nghiệp là chuỗi xây dựng rất đơn giản và mọi thứ đều ở một nơi - nhưng dường như có nhiều nhược điểm; khó hơn để phiên bản độc lập, mặt trước bị hỏng có nghĩa là mặt sau không thể triển khai, v.v.
Tùy chọn # 2 dường như là một khối đơn, trong đó chuỗi xây dựng mặt trước dẫn đến việc viết một loạt các tệp vào mặt sau. Thư mục dist
ở mặt trước sẽ đề cập đến một số thư mục ở mặt sau, vì vậy về cơ bản khi mặt trước thu nhỏ, làm xấu đi, v.v., nó kết thúc xuất bản lên mặt sau, chạy mọi thứ.
Tùy chọn # 3 dường như tách biệt hoàn toàn: front-end và back-end đều chạy các máy chủ của riêng họ trên các cổng khác nhau và chúng là các dự án hoàn toàn riêng biệt. Hạn chế có vẻ là chúng cần được cấu hình để biết về các cổng của nhau; mặt sau phải cho phép CORS từ mặt trước và mặt trước cần biết vị trí của tất cả các điểm cuối đó.
Tùy chọn # 4 có thể là sử dụng một cái gì đó như docker-compose để kết hợp tất cả mọi thứ lại với nhau.
Tôi chắc chắn có những lựa chọn khác. Thực hành tốt nhất được đề nghị là gì?