Tại sao nên sử dụng Góc thay vì HTML?
Khi thiết lập môi trường phát triển Angular ban đầu của bạn bằng cách sử dụng Angular CLI, bạn sẽ nhận ra CLI hiện đã trở nên cần thiết đến mức nào Show
Điều này là do ngày nay chúng ta cần thiết lập nhiều hơn rất nhiều so với những gì chúng ta đã có trước đây - và đây là trường hợp không chỉ đối với Angular mà còn đối với bất kỳ hệ sinh thái tương đương nào khác Một vài câu hỏi chínhTrong thế giới mới của các trình tải mô-đun này, các hệ thống xây dựng nâng cao mà chúng tôi không còn tự thiết lập từ đầu nữa và nơi mọi thứ được dịch xuống Javascript ES5 đơn giản từ các ngôn ngữ cấp cao hơn, sẽ không ngạc nhiên nếu tại một thời điểm nhất định, bạn sẽ tự hỏi mình
Bạn thậm chí có thể tự hỏi mình, tại sao không làm mọi thứ trong một công nghệ đã tồn tại trước đó, như jQuery chẳng hạn? Có nhiều trường hợp sử dụng ngày nay vẫn được giải quyết tốt bằng cách tiếp cận đó, nhưng điều đó dẫn chúng ta đến câu hỏi
Những vấn đề nào mà Angular giải quyết theo cách tốt hơn về cơ bản và tại sao nó lại tốt hơn? Mọi thứ xảy ra dưới mui xeHãy cùng tìm hiểu. Điều quan trọng về những lợi thế chính của Angular và MVC là mọi thứ diễn ra rất nhiều dưới mui xe đến nỗi đôi khi khó nhận ra rằng những lợi thế đó thậm chí còn ở đó Để hiểu được lợi ích của cách tiếp cận MVC, chúng ta sẽ xây dựng một ứng dụng nhỏ trong jQuery chẳng hạn, sau đó xây dựng ứng dụng tương đương trong Angular - và sự khác biệt giữa cả hai sẽ nhanh chóng trở nên rõ ràng Mục tiêu ở đây không phải là so sánh Angular với jQuery, mà là so sánh cách tiếp cận MVC để phát triển giao diện người dùng với cách tiếp cận trước MVC jQuery được sử dụng ở đây vì đây là một ví dụ rất nổi tiếng và ngày nay nó vẫn rất hữu ích cho nhiều trường hợp sử dụng Một ví dụ về Ứng dụng jQueryĐể hiểu những lợi thế mà cả Angular và MVC mang lại, hãy đưa ra một ví dụ đơn giản. Hãy bắt đầu với một ứng dụng đơn giản chỉ hiển thị danh sách các bài học trên màn hình Các bài học sẽ được tải thông qua yêu cầu HTTP GET từ url này. Trên thực tế, dữ liệu này đến từ Firebase thông qua API HTTP thay thế của nó (tìm hiểu thêm về nó trong Khóa học về sự cố Firebase) Và đây là danh sách các bài học sẽ như thế nào Mô hình trong MVC là gì?Như chúng ta có thể thấy, dữ liệu ở trên chỉ đơn giản là Đối tượng Javascript cũ đơn giản hoặc POJO Những mã định danh duy nhất mà bạn thấy là các phím đẩy của Firebase, hãy tìm hiểu thêm về chúng trong Khóa học về sự cố góc và Firebase Đối tượng JSON ở trên là dữ liệu của ứng dụng của chúng ta, còn được gọi là Model và chúng ta muốn hiển thị nó trên màn hình - do đó chúng ta cần tạo HTML dựa trên Model này Vì vậy, trước tiên hãy bắt đầu bằng cách làm như vậy trong jQuery, sau đó triển khai logic tương tự trong Angular Ứng dụng jQuery trông như thế nào?Hãy xây dựng một ứng dụng jQuery nhỏ để hiển thị dữ liệu này (ứng dụng có sẵn tại đây) Vì vậy, trong ứng dụng jQuery của chúng tôi, điều đầu tiên chúng tôi cần làm là truy vấn phụ trợ API REST của chúng tôi bằng cách thực hiện một yêu cầu jQuery Ajax Lưu ý rằng chúng tôi đã gọi
Với điều này, giờ đây chúng ta đã có Mô hình của mình trong trình duyệt, sẵn sàng để hiển thị - danh sách các bài học. Như bạn có thể thấy, chúng tôi đã không gửi HTML qua dây từ máy chủ trở lại máy khách, thay vào đó, chúng tôi đã yêu cầu máy chủ và chỉ trả lại dữ liệu Đây là một khái niệm quan trọng vì HTML không chỉ là dữ liệu. HTML là một đại diện cụ thể của Mô hình, mà chúng ta có thể gọi là Chế độ xem và cùng một dữ liệu có thể có nhiều chế độ xem Sự khác biệt giữa Mô hình và Chế độ xemCùng một Mô hình (danh sách các bài học) mà chúng tôi đã trình bày ở trên, có thể có nhiều Chế độ xem. Đây là vài ví dụ Như chúng ta có thể thấy, một View của mô hình là một bảng HTML, nhưng một View khác có thể chỉ đơn giản là tổng số bài học Ngoài ra, bản thân mỗi bài học có thể được sử dụng làm Mô hình, với các chế độ xem khác nhau. chúng ta có thể có một màn hình chi tiết bài học hiển thị tất cả chi tiết của bài học, chỉ một hàng trong bảng - hiển thị tóm tắt bài học Cách hiển thị Chế độ xem bằng jQuery?Bây giờ chúng tôi có dữ liệu trên giao diện người dùng, vì vậy chúng tôi cần sử dụng nó để tạo nhiều Chế độ xem. Đây là cách chúng ta có thể tạo một bảng HTML với danh sách các bài học trong jQuery Đánh giá ứng dụng jQueryNhư chúng ta có thể thấy, chúng ta đang viết khá nhiều mã để lấy mô hình và chuyển đổi nó thành nhiều chế độ xem dữ liệu. Chúng ta có thể thấy rằng mã này mặc dù viết đơn giản nhưng có các đặc điểm sau
Điểm cuối cùng này rất quan trọng để so sánh về hiệu suất, chúng tôi sẽ nói thêm về điều này sau Nhập Angular, nó khác như thế nào?Vì vậy, bây giờ hãy viết lại phần này của ứng dụng của chúng ta trong Angular (có thể tìm thấy ứng dụng tại đây) Đây chỉ là phần quan trọng của ứng dụng, sẽ có cấu trúc thư mục CLI góc xung quanh nó, nhưng tiêu chuẩn của nó và được tạo cho chúng tôi. Tương đương với góc sau đó sẽ như sau Vì vậy, hãy chia nhỏ điều này và so sánh nó với phiên bản jQuery
Quá trình tạo chế độ xem gócVậy thì HTML được tạo ra như thế nào? Như chúng ta có thể thấy, đây là nơi lưu giữ HTML hiện tại. Và nó được tách ra khỏi mã thành phần vì nó nằm trong một tệp riêng biệt hoàn toàn Lưu ý rằng mẫu này có một số biểu thức và cú pháp không giống với HTML mà chúng ta viết hàng ngày, chẳng hạn như
Các biểu thức này là cách Angular liên kết dữ liệu và chế độ xem với nhau Thuật ngữ MVCDựa trên ứng dụng Angular ở trên, hãy định nghĩa một số thuật ngữ
Angular vs jQuery - so sánh hai phiên bản của ứng dụngBây giờ chúng ta có hai ứng dụng được viết bằng cả jQuery và Angular, hãy bắt đầu so sánh chúng Ngay trong giai đoạn đầu này, chúng ta có thể thấy một số khác biệt
Sự khác biệt lớn nhất khi nhìn vào mã là trong phiên bản Angular có sự tách biệt về mối quan tâm không tồn tại trên phiên bản jQuery Trong phiên bản Góc, Mô hình và Chế độ xem được tách biệt rõ ràng và tương tác thông qua lớp Nhưng đó không phải là lợi thế duy nhất của việc sử dụng khung MVC. sự khác biệt sẽ trở nên rõ ràng hơn nhiều nếu chúng ta bắt đầu sửa đổi dữ liệu Điều gì sẽ xảy ra nếu bây giờ chúng ta Sửa đổi Mô hình?Việc tách các mối quan tâm của phiên bản Angular là một điều tuyệt vời cần có và cần thiết trong một ứng dụng lớn hơn Nhưng có nhiều điều đang diễn ra trong ví dụ nhỏ này vẫn chưa rõ ràng. Nếu bây giờ chúng ta muốn cập nhật Model thì sao? Để làm cho nó đơn giản, hãy làm điều này để đáp lại một nút. Đây là giao diện của phiên bản jQuery Vì vậy, hãy chia nhỏ những gì đang diễn ra trong phiên bản mã mới này
Hàm mà chúng tôi đã tạo để sử dụng lại logic tạo HTML trông giống như sau Vấn đề với loại mã nàyNó có thể không giống như vậy, nhưng mã này thực sự dễ vỡ và khó bảo trì. một trích dẫn duy nhất ở sai vị trí và chúng tôi vẫn sẽ có một chuỗi Javascript hợp lệ trông sẽ bị hỏng hoàn toàn khi được trình duyệt hiển thị, vì đó không phải là HTML hợp lệ Đây là loại mã mà chúng tôi không muốn phải tự viết. nó thực sự giòn, mặc dù thoạt nhìn nó có vẻ đơn giản So sánh với phiên bản AngularBây giờ chúng ta hãy xem phiên bản Angular tương đương của mã này Hàm Xem lại phiên bản sửa đổi dữ liệu AngularGiống như đối tác jQuery của nó, phiên bản ứng dụng này cũng thêm một chỉ mục vào phần mô tả của mỗi khóa học (hãy xem các tính năng ngFor này để biết giải pháp thay thế) Những gì chúng tôi đã làm trong phiên bản Angular này là. chúng tôi chỉ cần cập nhật Mô hình và Angular đã tự động phản ánh sửa đổi Mô hình trực tiếp trong Chế độ xem cho chúng tôi Chúng tôi không phải gọi hàm tạo HTML, áp dụng HTML vào đúng vị trí của tài liệu, v.v. Đây là một trong những tính năng sát thủ của Angular
Vì vậy, làm thế nào để làm việc này?Angular luôn giữ cho Chế độ xem đồng bộ với mô hình cho chúng tôi thông qua cơ chế phát hiện thay đổi minh bạch của nó Cách thức hoạt động của nó là Angular sẽ tự động kiểm tra Mô hình, để xem liệu nó có thay đổi hay không và nếu có, nó sẽ phản ánh những thay đổi đó trong chế độ xem Nhưng bên cạnh việc phân tách các mối quan tâm và tự động phát hiện các thay đổi và đồng bộ hóa, có một số khác về cơ bản giữa các phiên bản jQuery và Angular Có lẽ sự khác biệt lớn nhất giữa góc và jQuery?Chúng ta không thể biết chỉ bằng cách nhìn vào mã Angular vì tất cả đều diễn ra minh bạch, nhưng một trong những điểm khác biệt chính là không giống như jQuery, Angular đang thực hiện sửa đổi tài liệu theo cách hiệu quả hơn nhiều so với phiên bản jQuery
Điều này hoạt động nhanh hơn nhiều so với việc xây dựng HTML thủ công và sau đó chuyển nó tới DOM để phân tích cú pháp. Bằng cách trực tiếp xây dựng các nút DOM, Angular bỏ qua hoàn toàn bước phân tích cú pháp HTML. Vì vậy, trình duyệt chỉ cần lấy cây DOM sẵn sàng sử dụng và hiển thị nó ra màn hình Và hơn thế nữa, nó sẽ làm như vậy theo cách tối ưu, bằng cách cố gắng chỉ thay đổi HTML thực sự cần thay đổi
Làm cách nào để Angular hiển thị Chế độ xem dưới mui xe?Để hiểu rõ hơn về những gì Angular đang làm, hãy làm như sau. hãy quay lại phiên bản jQuery và thử làm điều gì đó tương tự như những gì Angular đang làm - thao tác DOM trực tiếp Mã trình xử lý nhấp chuột bây giờ trông giống như thế này Vì vậy, như chúng ta có thể thấy, chúng ta đang sử dụng trực tiếp DOM API để loại bỏ các nút trong Và đây là chức năng đó trông như thế nào Nếu bạn muốn thấy điều này hoạt động, hãy sao chép và thử cục bộ hai ứng dụng mẫu (một ứng dụng trong Angular và ứng dụng kia trong jQuery) Ưu điểm của quy trình tạo chế độ xem gócTrên thực tế, đây chỉ là một ước tính rất sơ bộ về những gì mà Angular đang thực hiện. Chức năng này đang tái tạo toàn bộ bảng, nhưng điều mà Angular làm với các mẫu của nó là nó sẽ chỉ thay thế các phần của cây DOM cần được sửa đổi, chỉ theo dữ liệu đã được sửa đổi Vì vậy, ví dụ: nếu chỉ một biểu thức trên tiêu đề trang bị sửa đổi, thì đó là phần duy nhất của DOM sẽ bị ảnh hưởng, danh sách các bài học sẽ không thay đổi Thật không thực tế khi làm thủ công những gì Angular đang làmVà đây là nơi nó sẽ trở nên gần như không thể và chắc chắn là không thực tế khi làm với jQuery giống như điều mà Angular đang làm một cách minh bạch. Đơn giản là không thực tế khi tự viết loại Mô hình này để Xem mã tạo DOM theo cách thủ công như Ví dụ: lưu ý rằng hàm Tóm tắt và Kết luậnVì vậy, hãy tóm tắt. những lợi thế của việc sử dụng khung MVC như Angular như chúng ta đã thấy là rất lớn, vì vậy hãy liệt kê từng cái một Tách Mối Quan TâmChúng tôi có thể xây dựng các ứng dụng giao diện người dùng với ít mã hơn nhiều so với các công nghệ thế hệ trước. Điều này là do chúng tôi không phải viết mã đồng bộ hóa Mô hình và Chế độ xem theo cách thủ công - mã đó được tạo tự động cho chúng tôi Mã mà chúng ta cần viết sẽ dễ đọc và dễ bảo trì hơn rất nhiều, do sự phân tách rõ ràng giữa Mô hình và Chế độ xem Mô hình trong suốt để xem đồng bộ hóaViệc đồng bộ hóa giữa Mô hình và Chế độ xem không chỉ minh bạch mà còn được tối ưu hóa theo cách không thể đạt được trong thực tế bằng cách thủ công Hiệu suất giao diện người dùngChế độ xem được sửa đổi bằng cách tạo trực tiếp các cây đối tượng DOM theo cách tương thích với nhiều trình duyệt, thay vì bằng cách tạo HTML rồi chuyển nó tới trình duyệt để phân tích cú pháp - điều này hoàn toàn bỏ qua bước phân tích cú pháp HTML vẫn cần được phân tích cú pháp, nhưng nó chỉ được thực hiện một lần cho mỗi mẫu bởi Angular và bởi trình duyệt mỗi lần. Việc phân tích cú pháp được thực hiện tại thời điểm khởi động ứng dụng (Just In Time hoặc JIT) hoặc trước thời hạn (AOT) khi xây dựng ứng dụng Và đây là một trong những lý do chính tại sao rất đáng để có một môi trường phát triển tiên tiến hơn như CLI. bởi vì sử dụng nó, chúng tôi có thể có tất cả các tính năng và lợi ích này hoạt động rõ ràng ngay lập tức Ngoài ra, việc tạo và sửa đổi chế độ xem được thực hiện theo cách tối ưu hóa, nghĩa là chỉ những phần của cây DOM có dữ liệu sửa đổi sẽ bị ảnh hưởng, trong khi phần còn lại của trang vẫn giữ nguyên Tại sao MVC trở nên cần thiết cho sự phát triển giao diện người dùngVới Angular và MVC, chúng ta có thể tập trung vào việc xây dựng các ứng dụng theo cách khai báo hơn, bằng cách chỉ cần xác định một mẫu HTML giống như chúng ta đã quen. Chúng ta có thể liên kết mẫu với dữ liệu Mô hình và xử lý dữ liệu thông qua một lớp thành phần Có thể không sử dụng MVC không?Việc chọn không sử dụng khung MVC có nghĩa là chúng ta sẽ phải đồng bộ hóa Mô hình và Chế độ xem theo cách thủ công, điều này thoạt nhìn có vẻ đơn giản nhưng rất nhanh chúng ta sẽ kết thúc với một chương trình không thể duy trì được Tôi hy vọng rằng điều này mang đến cho bạn lời giải thích thuyết phục về lý do tại sao chúng ta cần một khung MVC như Angular và loại công nghệ này giải quyết cho chúng ta một số lượng lớn vấn đề theo cách hoàn toàn minh bạch Và tại sao việc thiết lập một môi trường làm việc tiên tiến hơn lại thực sự mang lại kết quả, để có thể tận hưởng tất cả những lợi ích này và trải nghiệm tuyệt vời dành cho nhà phát triển Tôi hy vọng rằng bài đăng này đã giúp hiểu được một số lợi ích chính của việc sử dụng một khung như Angular và bạn thích nó Tại sao góc cạnh thay vì HTML?UI khai báo
. HTML cũng phổ biến như một ngôn ngữ khai báo và trực quan giúp loại bỏ nhu cầu đầu tư nhiều thời gian vào các luồng chương trình và lập kế hoạch những gì sẽ tải trước. The Angular framework leverages HTML that when compared to JavaScript is a less complex language. HTML is also popular as a declarative and intuitive language that eliminates the need to invest a lot of time in program flows and planning what loads first.
HTML hay Angular tốt hơn?AngularJS được sử dụng rộng rãi để phát triển ứng dụng một trang vì nó cung cấp kiến trúc MVC với liên kết mô hình dữ liệu. Mặt khác, Bootstrap sử dụng HTML, CSS và JavaScript để phát triển nên tương đối nhanh hơn .
Ưu điểm chính của Angular là gì?Angular hỗ trợ bạn bằng một nền tảng có chính kiến khi nhóm và ứng dụng của bạn phát triển . Điều này cho phép bạn xây dựng các giao diện người dùng có thể kiểm tra và có thể mở rộng, hoạt động tốt khi chúng phát triển. Các biểu mẫu và định tuyến của Angular, được phát triển và hỗ trợ bởi nhóm Angular, mang lại sự ổn định và tích hợp với phần còn lại của nền tảng.
Sự khác biệt giữa HTML và Góc là gì?Angular sử dụng HTML để xác định giao diện người dùng của ứng dụng . HTML là ngôn ngữ khai báo trực quan hơn và ít phức tạp hơn so với việc xác định giao diện theo thủ tục trong JavaScript. HTML cũng khó tổ chức lại hơn so với giao diện được viết bằng JavaScript, nghĩa là mọi thứ ít có khả năng bị hỏng hơn. |