Nâng cấp ứng dụng doanh nghiệp lên Angular 16

Tôi hoàn toàn hài lòng với tất cả các tính năng mới của Angular v16 , bắt đầu bằng tín hiệu và mọi thứ khác. Và tôi không thể cưỡng lại mong muốn nâng cấp một trong những ứng dụng của công ty chỉ để xem nó khó đến mức nào.
Có cạnh hàng đầu và cạnh chảy máu. Bạn có thể chọn dẫn đầu hoặc chảy máu, đó là sự lựa chọn của bạn về nỗi đau.
Mọi người ( hầu hết ) đang nói về Angular 16. Cường điệu hay không, rất có thể bạn đã đọc về:
- phản ứng dạng hạt (tín hiệu)
- bắt buộc @Inputs()
- tham số truy vấn, dữ liệu và trình phân giải dưới dạng Đầu vào ()
- mô tả có thể phá hủy
- đầu vào trên ngComponentOutlets
- Vite cho máy chủ phát triển
- hydrat hóa SSR
- tín hiệu, tín hiệu, tín hiệu…
Ứng dụng doanh nghiệp hiện có ở đâu?
Chỉ Ivy được hỗ trợ.
Và nỗi đau?
Thư viện cũ…
Người để đổ lỗi?
Rất tiếc ! câu hỏi khó. Nhưng đó là sự pha trộn của các trách nhiệm.
- Các nhà phát triển thư viện góc . Chỉ kể tên một số thư viện: custom-validators , text-mask , old versions for formly , ng-bootstrap , nebular (sẽ sớm có thêm các phiên bản cũ). Không có cái nào được nâng cấp đúng cách để sử dụng phiên bản Angular mới nhất hoặc ít nhất được hỗ trợ. Một số rõ ràng là bị bỏ rơi. Thường xuân không được hỗ trợ.
- nhà phát triển công ty . Ok, tôi biết không đơn giản để cập nhật tất cả các phụ thuộc của bạn, càng khó đạt được hơn nếu “ mã đã hoạt động, thực sự không cần cập nhật ”. Đã trải qua nỗi đau này khi cập nhật lên Angular 15; một số thành phần Vật liệu góc nặng và được tùy chỉnh kém vẫn đang gây nhiễu trong mã của chúng tôi (không biết các
LegacyMaterialXXX
mô-đun sẽ tồn tại được bao lâu). - Nhóm góc ( ?) Chúng ta có thể tranh luận về vấn đề này, nhưng trên MHO, câu hỏi nên là “ Angular 16 có nghĩa là nâng cấp các ứng dụng doanh nghiệp hiện có hay chỉ để tạo ứng dụng mới từ con số không? ”.
Nhận xét này không hay ( từ vấn đề: Cách thay thế để biên dịch các thư viện không phải cây thường xuân sau khi xóa ngcc trong v16 #24797) :

Ý tôi là, một cơ sở mã lớn đáng kể, kéo theo một số (nhiều) thành phần “ đã hoạt động theo cách này ” dựa trên các thư viện bị bỏ rơi, không đơn giản để nâng cấp. Nó cũng có thể có nghĩa là một dự án hoàn toàn mới (thời gian dành cho nhà phát triển) và để làm gì? vì vậy góc ≤ 17 lại phá vỡ mọi thứ? quyết định khó khăn. “ Có lẽ chúng ta nên ở lại với Angular 9… ”

Nếu bất kỳ ai gặp khó khăn với việc nâng cấp Bootstrap (không phải ng-bootstrap ) phiên bản 4 lên 5, bạn có thể có một ý tưởng nhỏ, hầu hết mọi thứ vẫn hoạt động và trông gần như (gần như) giống nhau, nhưng đồng thời, nhiều thứ đã từng hoạt động ( hoặc trông đẹp mắt trên các tiêu chuẩn Bootstrap) đã bị hỏng.
Hãy tưởng tượng một cơ sở mã phụ thuộc nhiều vào các kiểu Bootstrap cũ, các thành phần Vật liệu góc được tùy chỉnh nặng và phát triển kém, nhiều chỉ thị và thư viện không rõ ràng để xử lý từ hoạt ảnh đến xác thực biểu mẫu.
Nâng cấp lên bất kỳ phiên bản khung nào thúc đẩy cách tốt hơn cho ehm…, mọi thứ (?) sẽ không phải là một nhiệm vụ dễ dàng.
Phiên bản cũ, tại sao?
Khi bạn đang làm việc trên một dự án, bạn có thể phải đối mặt với quyết định sau:
Chúng ta có phải sử dụng khung giao diện người dùng không? hay chúng ta sử dụng các thành phần ad-hok được mã hóa thủ công được tạo kiểu bằng CSS đơn giản?
Chọn chất độc của bạn:
- Vật liệu
- Bootstrap
- tinh vân
- Gió cùng chiều
- bạn đặt tên cho nó, chúng tôi có sự lựa chọn vô hạn
Nỗi đau nâng cấp là khó tránh khỏi.
Tôi nhấn mạnh vào nỗ lực nâng cấp của mình. Nó có thể khó như thế nào?
Vì vậy, để có được một ứng dụng đang chạy mà không có lỗi biên dịch (bỏ qua các lỗi hình ảnh), tôi đã cập nhật hầu hết các thư viện có thể cập nhật được. Thử lại, thử lại, và thử lại… rửa sạch và lặp lại…
Vấn đề chính là bạn có thể có nhiều thư viện đã lỗi thời, bị bỏ rơi hoặc không được bảo trì trong đó mã cơ bản thực hiện công việc, VẪN LÀM VIỆC! Vấn đề duy nhất là các phụ thuộc Góc trong các thư viện này đã lỗi thời.
Ví dụ. một trong những loại thư viện này trong dự án tôi đang thực hiện là text-mask , một thư viện từ 5 năm trước. Và mặc dù đó là một thư viện không được quản lý, mã vẫn hoạt động. Việc di chuyển sang thư viện khác sẽ yêu cầu thời gian của nhà phát triển + thời gian để kiểm tra mọi thứ vẫn hoạt động như trước.
Đã sao chép và dán mã thư viện chính như thể nó là một thư viện nội bộ trong dự án, thực hiện một số điều chỉnh, và thì đấy , nó vẫn hoạt động, mã không sai, các phần phụ thuộc của thư viện là “ sai ”. Tuy nhiên, nếu sử dụng thư viện gốc, Angular 16 sẽ báo lỗi “ Thư viện không hỗ trợ Ivy ”.
Cho đến nay, có rất nhiều phụ thuộc cũ, lỗi thời, không được quản lý và bị bỏ rơi trong dự án này nên bản thân việc nâng cấp có thể trở thành một dự án hoàn toàn khác. Đã ngừng cố gắng nâng cấp sau khi nhận thấy rằng còn rất nhiều thay đổi cần thực hiện chỉ để có được một bản dựng sạch.
Có thể nâng cấp ứng dụng Angular dành cho doanh nghiệp lên Angular 16 không?
Có thể, nhưng nếu ứng dụng phức tạp hoặc nếu ứng dụng có nhiều, giả sử “ chưa được thư viện Angular 16 hỗ trợ ” thì có thể không đơn giản như vậy.
Hãy sẵn sàng bắt đầu bằng cách thực hiện nhiều kiểm tra biên dịch để xác định thư viện nào cần nâng cấp phiên bản và thư viện nào có thể yêu cầu một số xử lý đặc biệt (chẳng hạn như trích xuất mã đang hoạt động và xây dựng phiên bản nội bộ cho thư viện đó).
Sau đó, nếu bạn quản lý để có được một bản dựng rõ ràng, có thể bạn sẽ cần kiểm tra tất cả các kiểu trực quan cho mọi thành phần (đề phòng trường hợp thứ gì đó bị hỏng về mặt trực quan).
Nâng cấp là hợp lý (nhiều hơn có thể), nhưng nó sẽ không phải là một “ chiến thắng hoàn hảo ”.
Tôi thực sự đã nâng cấp thành công một ứng dụng Angular lên Angular 16.
Đây không phải là một ứng dụng doanh nghiệp, nó không có bất kỳ phụ thuộc bên ngoài nào ngoài Tailwind và Angular, vì vậy việc nâng cấp gần như là một nhiệm vụ trực tiếp rất đơn giản.
Trên các ứng dụng doanh nghiệp thực sự, đừng mong đợi một con đường hạnh phúc, cũng không phải là một kết thúc có hậu. Thất bại trong nhiệm vụ này có khả năng xảy ra cao.
Và không phải là tôi không thích Angular 16, tôi thực sự yêu thích tất cả các tính năng đã được công bố, nhưng việc nâng cấp lên phiên bản vừa phát hành này SẼ LÀ MỘT ĐAU ĐÓ!
Những người chấp nhận sớm : Hãy coi chừng!