Đi tìm sự khác biệt giữa AngularJS, Node.js và Ext JS
AngularJS, Node.js và Ext JS – là 3 trong số những JavaScript framwork nổi tiếng và phổ biến nhất thế giới hiện nay. Với khả năng cross-platform chúng giúp ta xây dựng nên những web-applications giàu tính tương tác và nhiều tính năng độc đáo. Tất cả chúng đều sử dụng công nghệ AJAX, DHTML, DOM ... ...
AngularJS, Node.js và Ext JS – là 3 trong số những JavaScript framwork nổi tiếng và phổ biến nhất thế giới hiện nay. Với khả năng cross-platform chúng giúp ta xây dựng nên những web-applications giàu tính tương tác và nhiều tính năng độc đáo. Tất cả chúng đều sử dụng công nghệ AJAX, DHTML, DOM ... nhưng không có nghĩa có thể sử dụng thay thế cho nhau. Giữa 3 framwork này nhiều sự khác biệt, tùy vào yêu cầu của ứng dụng và nghiệp vụ mà bạn phải chọn cái phù hợp nhất.
Trong bài viết này tôi sẽ tổng hợp một số sự khác nhau giữa chúng, để bạn có thêm lựa chọn đúng khi lựa chọn.
AngularJS:
Đây là một web application framework mã nguồn mở được phát triển bởi Google. Nó giúp chúng ta xây dựng giao diện động cho ứng dụng. Được xây dựng trên kiến trúc Model-View-Whatever (MVW), với components phát triển theo hướng RIA (Rich Internet Application - nghĩa là có thể xây dựng giao diện web giống như desktop). Các đặc tính của AngularJS:
- Dễ sử dụng:
- Thao tác với DOM trở nên đơn giản.
- Nó rất phù hợp để viết các ứng dụng dạng SPA (single-page applications)
- Với các tính năng như directives, filters and automatic data bindings các lập trình viên không cần phải viết hàng trăm dòng mã cho các tính năng đơn giản, do đó dễ quản lý source code hơn.
- Cross-Browser và Mobile Support:
- Ứng dụng bạn xây dựng có khả năng chạy trên mọi trình duyệt với các nền tảng hệ điều hành khác nhau. Tuy nhiên từ AngularJS 1.3 trở đi đã không còn hỗ trợ IE8 (hoặc cũ hơn nữa). Bạn nên chú ý điều này khi quyết định sử dụng AngularJS.
- Có thể phát triển ứng dụng trên mobile (kết hợp với Cordova, Phonegap ...)
- Kiến trúc:
- AngularJS phát triển dựa trên kiến trúc MVW (Model-View-Whatever) nhưng nó cũng support patterns khác như Model-View-Controller or Model-View-View Mode
- Hỗ trợ Dependency Injection and Direct DOM manipulation
- Xây dựng Testing:
- Việc tạo ra các unit testing với AngularJS là rất đơn giản.
- Hỗ trợ nhiều kiểu test khác nhau như unit testing, functional testing.
- Protractor có thể được sử dụng để test font-end. Protractor giúp chạy các test case trên trình duyệt giống như người dùng đang sử dụng.
- Programming:
- Hỗ trợ mô hình Object-oriented, Functional và Event-driven programming.
- Thường hỗ trợ cho Dart, CoffeeScript and TypeScript Scripting languages.
Node.js:
Node.js is xây dựng trên Google Chrome’s JavaScript V8 runtime. Nó giúp bản mở rộng một network applications. Với khả năng event-driven, non-blocking I/O model, lý tưởng để xây dựng những ứng dụng đòi hỏi việc trao đổi dữ liệu mang tính real-time. Lưu ý Node.js là một platform, nó hoạt động phía server. Tuy nhiên nó cũng có thể tương tác với các framwork font-end khác như AngularJS chẳng hạn.
- Thích hợp sử dụng khi:
- Với khả năng lập trình non-bocking I/O, Node.js giúp xây dựng các ứng dụng tương tác với database, web-sockets, middle-ware hay web service ...
- Phát triển các ứng dụng cần sự thay đổi nhanh chóng và thường xuyên.
- Phát triển những ứng dụng mà việc page load time có vấn đề.
- Tối ưu quá trình phát triển sản phẩm, với công cụ npm giúp ta có thể nhóm web và back-end team vào 1 đơn vị duy nhất, tiện cho việc quản lý hơn.
- Architecture:
- Hỗ trợ kiến trúc MVC (Model-View-Controller), nó cũng hỗ trợ các pattern khác như Model-View-Presenter hay Actors.
- Programming:
- Hỗ trợ mô hình Event-driven, Object-oriented, Functional, Concurrency Oriented, Pub/Sub programming.
- Thường hỗ trợ cho Ruby, CoffeeScript and TypeScript Scripting languages.
- Nhiều IDE hỗ trợ
Ext JS: Đây là một Javascript hoàn toàn tuần túy. Với AJAX, DHTML and DOM scripting, nó giúp ta tạo ra ứng dụng có tính tương tác rất cao, đẹp. Ext JS có khả năng tương tác với jQuery and Prototype. Nó được coi là framwork toàn diện nhất để xây dựng một ứng dụng we cross-platform với nhiều tính tương tác. Những đặc điểm của ExtJS
- Cross-Browser and Mobile Support:
- Đây là đặc điểm chung của rất nhiều các framwork lớn có được.Sencha được sử dụng để phát triển giao diện trên mobile.
- Phù hợp với:
- Những ưng dụng có yêu cầu giao diện đa dạng
- Làm Single page applications
- Nó mạnh mẽ với việc hỗ trợ rất nhiều chart mà người phát triển không cần sử dụng thêm các toôl khác.
- Architecture:
- Từ bản ExtJS 5 nó hỗ trợ cả mô hinh MVC (Model-View-Controller) và MVVM (Model-View-ViewModel).
- Với Dependency Injection, nó có thể được tăng cường khi sử dụng Deft JS để thêm Inversion of Control (IoC) container.
- Nó hỗ trợ thao tác trực tiếp với DOM
- Testing:
- Nó không hỗ trợ test tự động nhưng có thể thực hiện điều này bằng việc sử dụng thêm tool hỗ trợ khác.
- Nó không đi kèm testing framework nào nhưng có thể sử dụng Siesta, Jasmine or Mocha để test.
- Programming:
- Hỗ trợ mô hình Object-oriented and Event-driven programming
Có thể kết luận rằng: AngularJS và ExtJS phù hợp để phát triên ứng dụng font-end trong khi Node.js lại thực sự phù hợp để làm back-end.
Với nhưng giới thiệu phía trên, tôi hy vọng mọi người có thêm một số hiểu biết về 3 trong số những Javascript framwork nổi tiếng và được sử dụng rộng rãi nhất hiện nay. Từ đó chọn được cái nào phù hợp nhất với ứng dụng của riêng mình.