Tản mạn về Ionic

Xin chào các bạn, chắc hẳn nhiều bạn đọc bài viết này đều đang có thắc mắc rằng Ionic là gì? Tại sao nên dùng Ionic? Nó có điểm mạnh, điểm yếu như nào? Làm sao để lập trình Ionic?… Tất cả những thứ đó chúng ta sẽ bàn trong phạm vi bài viết này. Tuy nhiên, trước khi đi vào vấn đề chính, tôi muốn giới thiệu một chút về “Mobile App” để các bạn biết tại sao lại có sự ra đời của Ionic.

Như các bạn đã biết, kể từ khi smart phone xuất hiện thì thuật ngữ “Mobile App” cũng được hình thành để chỉ các phần mềm hoạt động phục vụ cho smart phone. Thời điểm mới ra mắt, mobile app là dạng native, có nghĩa là ứng dụng được viết riêng cho một loại nền tảng như iOS, Android, Windows Phone bằng các ngôn ngữ tương ứng trên mỗi nền tảng đó. Chẳng hạn, muốn viết app chạy trên iOS phải dùng Objective C hoặc Swift, trên Android phải dùng Java, hay trên Windows Phone phải dùng ngôn ngữ C#. Mỗi native app chỉ có thể chạy được trên một nền tảng và không thể mang sang nền tảng khác. Điều này nghĩa là bạn viết app iOS thì app đó không thể chạy được trên Android hoặc Windows Phone và ngược lại. Lợi thế lớn nhất mà native app mang lại là chúng cho phép người dùng truy cập và sử dụng tất cả các tính năng một cách dễ dàng. Ngoài ra, native app mang đến một trải nghiệm tuyệt vời và hoàn chỉnh nhất nên vẫn chiếm phần lớn tổng lượng ứng dụng hiện nay.

Web app – là các ứng dụng web được phát triện dựa trên nền tảng html/css/javascript. Web app có thể chạy trên các thiết bị desktop lẫn trên các thiết bị di động, với điều kiện là các thiết bị này phải có trình duyệt và phải có kết nối internet. Các trình duyệt phổ biến hiện nay là Chrome, Safari, IE, Firefox,… Điểm mạnh của web app là không cần cài đặt, không tốn nhiều dung lượng, phát triển dễ dàng với nền tảng html/css/javascript hiện nay đang được hỗ trợ mạnh bởi cộng đồng. Điểm yếu của web app là cần phải có internet, phải có máy chủ để triển khai, không lưu trữ thông tin offline được nhiều, và thông tin lưu trữ không được bảo mật tốt.

Hybrid App – khác với native, hybrid app là loại ứng dụng được thiết kế để chạy trên nhiều nền tảng khác nhau. Tại sao hybrid app lại kỳ diệu đến vậy? Bản chất của hybrid là giao diện được viết thuần bằng ngôn ngữ web HTML, CSS, Javascript nhưng nó cho phép gọi được các API của hệ thống để thao tác với hệ điều hành (đọc ghi file, camera, bluetooth,…). Lợi thế của hybrid là vừa tận dụng được sức mạnh của Web app vừa tận dụng được khả năng thao tác hệ thống của Native app. Tuy nhiên, với những ứng dụng đòi hỏi những tương tác phức tạp và cần tinh chỉnh nhiều của hệ thống thì hybrid sẽ là bài toán rất khó cho các nhà phát triển. Hybrid cũng có nhiều hạn chế khi lập trình viên muốn phát triển app của mình lên cao và tinh tế hơn.

Vậy, màn giới thiệu trên thì có liên quan gì tới Ionic của chúng ta không? Câu trả lời là có, vì Ionic chính là một framework dùng để xây dựng các ứng dụng hybrid. Ionic được xây dựng trên nền Cordova, chúng ta sẽ hiểu đơn giản như sau, Ionic đóng vai trò xử lý một phần giao diện người dùng, nó sẽ phải làm việc với Angular, có tác dụng xử lý logic của ứng dụng. Còn cordova, đây là một framework đa nền tảng cho phép biên dịch ứng dụng thành một tập tin có thể cài đặt và chạy bên trong web view của thiết bị di động. Vậy thì, lý do chúng ta chọn Ionic là gì? Đơn giản các bạn có thể thấy ở phần hybrid app, đó là có thể xây dựng ứng dụng chạy được trên mọi nền tảng, và ứng dụng vẫn hoạt động giống như một ứng dụng native với các plugin do cordova cung cấp. Thật tuyệt phải không nào 🙂

Tới thời điểm hiện tại, Ionic đã ra tới phiên bản thứ 3. Tuy nhiên thực tế thì Ionic chỉ thực sự khác biệt giữa phiên bản đầu tiên và phiên bản thứ 2, các phiên bản sau này cũng chỉ là các bản nâng cấp của phiên bản Ionic 2 mà thôi.

Ở phiên bản Ionic 1, các nhà phát triển chỉ có thể xây dựng nên các ứng dụng hybrid. Tuy nhiên, ở Ionic 2, mọi thứ còn mạnh mẽ hơn thế, Ionic 2 có thể được dùng để hỗ trợ các ứng dụng web hiện đại hoặc các ứng dụng Electron. Cụ thể hơn, bây giờ chúng ta có thể xây dựng không chỉ các ứng dụng ionic chạy bên trong môi trường cordova mà còn các ứng dụng web có trải nghiệm giống như ứng dụng cho người dùng. Với Electron, đây là nền tảng xây dựng ứng dụng Desktop đa nền tảng bằng HTML, CSS và Javascript. Electron tương tự như Cordova, nhưng là cho các hệ điều hành desktop như macOS, Windows hoặc Ubuntu.

Ionic 2 sử dụng Angular 2 để xây dựng logic cho ứng dụng, chúng ta sẽ chưa bàn tới các thế mạnh mà Angular 2 mang lại so với Angular 1, tuy nhiên có một điều cơ bản chúng ta cần phải nắm, đó là Angular 2 sử dụng Typescript. Thực chất Typescript giống như một ngôn ngữ nâng cao của Javascript, điều này có nghĩa là chúng ta vẫn có thể sử dụng cú pháp thuần Javascript để xây dựng ứng dụng Ionic 2. Nhưng tất nhiên, Typescript có những điểm mạnh của riêng nó chẳng hạn như cú pháp ES6 và ES7, static-typing, tính năng hoàn tác code thông minh,… Vì vậy, chẳng có lý do gì mà các lập trình viên như chúng ta lại không nâng cấp lên ngôn ngữ này cả.

Để trình bày tất cả những cái mới, cái hay mà Ionic 1 hay Ionic 2 mang lại thì phạm vi bài viết này là không đủ. Việc cập nhật phiên bản Ionic từ 1 lên 2 có thể nói là một cuộc cách mạng lớn của Ionic. Những người có nền tảng tốt về Web thì việc sử dụng Ionic để mở rộng con đường sự nghiệp của mình là một sự lựa chọn thông minh. Với cộng đồng đông đảo, hoạt động rất tốt trên 2 hệ điều hành chính dành cho di động là iOS, Android, tài liệu cụ thể, ví dụ đa dạng, được nhà phát triển chăm sóc kỹ lưỡng, tôi nghĩ framework này chính là tương lai của những người lập trình hướng Client.

Hy vọng qua bài viết này, các bạn có thể có được một cái nhìn tổng quan nhất về lập trình cho mobile, với thế mạnh mà Ionic mang lại, các lập trình viên chỉ cần nắm chắc kiến thức nền tảng HTML, CSS và Javascript là hoàn toàn có thể chinh phục được con đường gian khó và cực kỳ đa dạng như lập trình Front End.


Bài viết liên quan