Lập trình React Native hay Ionic: Đâu là lựa chọn tốt nhất để startup?

0
254

ionic-hay-react-native-dau-la-lua-chon-tot-nhat-de-startup

Câu chuyện khởi nghiệp luôn bắt đầu bằng vấn đề tài chính – thứ gây đau đầu nhất. Đặc biệt các bạn công nghệ khi muốn khởi nghiệp, việc lựa chọn công nghệ để tối ưu chi phí phát triển và maintainance nhất là rất quan trọng. Bài viết này mình sẽ chia sẻ với các bạn một góc nhìn về những lựa chọn khi phát triển ứng dụng mobile, giải pháp cho lập trình mobile đa nền tảng: chọn lập trình React native hay Ionic?. Những lựa chọn này sẽ ảnh hưởng trực tiếp đến nhân lực, kinh phí và thời gian của bạn trong tương lai.

#1. Dùng Hybrid hay Native? Ionic hay lập trình React Native?

Chắc hẳn khi bắt đầu dự án thì trong đầu bạn sẽ có nhiều câu hỏi đại loại như thế đúng không?

Trong bài viết này, mình sẽ cố gắng tìm câu trả lời cho từng câu hỏi, được xem xét ở cả hai mặt mạnh và yếu của Ionic và React Native và chia sẻ trải nghiệm về việc sử dụng chúng để thực hiện dự án của mình.

Hiện nay, khi mà Android và iOS là 2 nền tảng thống trị thế giới mobile. Nếu bạn muốn tiếp cận càng nhiều khách hàng càng tốt thì việc ứng dụng của bạn có mặt trên cả hai nền tảng là điều nên nghĩ tới.

Việc phát triển native app cho cả 2 OS này điều khá tốn kém. Bởi vì mã nguồn ứng dùng cho Android và iOS sẽ hoàn toàn khác nhau, nhân lực dev team cho mỗi OS cũng khác nhau, khả năng bảo trì cũng tốn kém… Vì vậy, với nguồn lực tài chính có hạn, mình nghĩ giải pháp lập trình cross platform là khả thi nhất.

Nếu đã chọn giải pháp lập trình đa nền tảng thì lựa chọn lập trình Ionic hay lập trình React Native đây?

Chúng ta sẽ cùng tìm hiểu điểm mạnh và yếu của từng loại nhé

#2. Ionnic là gì? Tại sao tôi nên chọn Ionic mà không phải thứ khác

ionic-hay-react-native-dau-la-lua-chon-tot-nhat-de-startup-2

Ionic được xây dựng trên nền tảng Apache Cordova và Angular, được phát hành vào năm 2013. Nền tảng này cho phép phát triển các ứng dụng lai(hybrid apps) với sự trợ giúp của HTML, CSS và JavaScript với một code base duy nhất và có thể tái sử dụng.

Để xây dựng các ứng dụng hoàn hảo và đầy đủ chức năng, Ionic sở hữu một bộ UI components và functions. Tuy nhiên, bạn sẽ phải cần cả Cordova và PhoneGap để Ionic có thể hoạt động.

Nếu như bạn đã có kinh nghiệm về Angular, bạn sẽ thấy phát triển ứng dụng với Ionic cực kì dễ dàng vì Ionic 2 tương tự với Angular về cả cấu trúc và cách thiết kế. Ngoài ra, TypeScript cho Ionic cũng là một điểm cộng lớn.

Framework này có một số pre-developed components UI. Nhờ vậy, khối lượng công việc của bạn được giảm đáng kể “Bạn chỉ cần viết mã một lần và sử dụng nó ở bất kỳ đâu.”

Một trong tính năng thú vị đó là khả năng thích ứng  với từng OS (theo nền tảng cụ thể). Nếu bạn đang sử dụng các tab, vị trí của chúng sẽ phụ thuộc vào OS của ứng dụng đó.

Ionic cung cấp một lượng lớn các plugin với mức giá hợp lý mà bạn không cần nhờ đến sự can thiệp của bên thứ 3. Ngoài ra, bạn luôn có thể cân nhắc các plugin Cordova nếu bạn không thể tìm thấy plugin bạn muốn. Việc tích hợp các plugin Cordova với phần mềm dựa trên khuôn khổ framework thực sự rất tốt.

#3. React Native là gì? React Native có gì nổi trội?

Lập trình React Native được Facebook xây dựng và phát hành vào năm 2015, ứng dụng kiến trúc ReactJS và có thể tạo ra các ứng dụng cho nền tảng iOS, Android và Universal Windows Platform.

Nó có một tính năng tuyệt vời đó là cho phép xây dựng các ứng dụng đa nền tảng, rất khó phân biệt với các ứng dụng native. Điều này tương tự như khi bạn dịch trên Google dịch và nó sẽ cho bạn một bản dịch tự động.

Nói một cách đơn giản, quá trình này giống nhau: Bạn viết một mã trong các React component. Sau đó, mã này sẽ được hiển thị dưới dạng các thành phần giao diện người dùng native. Tất nhiên là lập trình React Native không sử dụng WebView hoặc trình duyệt để hiển thị UI, do đó các ứng dụng sẽ hoạt động nhanh hơn.

Ngôn ngữ chính của lập trình React Native là JavaScript. Đó là lý do tại sao các developer có thể tái sử dụng code trên các nền tảng khác nhau. Tuy nhiên, bạn sẽ không thể sử dụng một thanh công cụ duy nhất cho tất cả nền tảng. Vì vậy, nếu bạn quyết định chọn React Native, hãy sử dụng các components càng gần với hành vi native của nền tảng càng tốt.

Như bạn đã biết, “cross pflatform” có nghĩa là bạn có thể sử dụng một code base duy nhất cho nhiều nền tảng khác nhau. Tuy nhiên, bạn sẽ không thể viết một code duy nhất và sử dụng nó ở mọi nơi.

Mục tiêu của bạn là xây dựng ứng dụng “native” thực sự với người dùng đúng không? Nếu vậy, bạn sẽ cần phải thay đổi một số code để phù hợp với nền tảng mà ứng dụng chạy

#4. Điểm lại những điểm mạnh và yếu của Ionic và React Native

ionic-hay-react-native-dau-la-lua-chon-tot-nhat-de-startup-3

1. Ionic

Ưu điểm:

  • Cho dù đó là HTML, CSS, JS hay Angular – nó đều là nền tảng độc lập;
  • Bản chất Ionic được wrapped từ Cordova và PhoneGap;
  • Hoạt động trên UIWebView (nếu là iOS) hoặc WebView (nếu là Android);
  • Nó cho phép tạo các UI ứng dụng di động mặc định dễ dàng và hiệu quả;
  • Bạn có thể sử dụng TypeScript để phát triển.

Nhược điểm:

  • Hiệu suất sẽ giảm đáng kể nếu gọi quá nhiều native code
  • Nếu ứng dụng cần tương tác với phần cứng của thiết bị như Camera, Sensor… sẽ tương đối khó khăn

2. React Native

Ưu điểm:

  • Có thể tái sử dụng code của dự án hiện tại mà không phải code lại từ đầu khi quyết định sử dụng lập trình React Native.
  • Cộng đồng phát triển lớn, do đó bạn sẽ không phải sợ bất kỳ thách thức nào. Mọi người sẵn sàng giúp đỡ bạn khi cần
  • Vì code độc lập với nền tảng (iOS hoặc Android):  Nó có thể được sử dụng trên cả hai nền tảng.
  • Khả năng debug trong React Native rất tốt với nhiều tool hỗ trợ

Nhược điểm:

  • Các components cho Android hơi cùi, vì vậy nếu bạn trau chuốt thì cần phải bỏ efforts để chỉnh sửa lại
  • Nghĩa là đối với các ứng dụng “phức tạp”, có thể yêu cầu nhiều tài nguyên hơn và ngân sách tất nhiên sẽ cao hơn.

Qua bảng so sánh trên, bạn đã có quyết định của mình chưa?

Cá nhân mình thấy React Native vẫn là một nền tảng tuyệt vời. Trước đây mình đã từng xây dựng úng dụng bằng React Native cho phép người dùng chụp ảnh các vụ tai nạn, tạo report bằng PDF hoặc .doc và gửi qua email cho công ty bảo hiểm.

Ứng dụng có thể nhập văn bản bằng bàn phím hoặc giọng nói. vì vậy người dùng có thể dễ dàng thêm mô tả cho từng ảnh. Chỉnh sửa và thay đổi từng dự án cần thiết nhiều lần để gửi lại ở định dạng Word hoặc PDF. Report được lưu trữ trên Cloud cho đến khi dự án bị xóa thủ công khỏi tài khoản của bạn.

Đó là một trong những ví dụ để chứng minh khả năng của React Native.

#5. Về các tiêu chí khác thì sao?

Một trong những điểm khác biệt chính là Ionic dùng để phát triển hybrid apps. Các ứng dụng này sẽ được hiển thị thông qua WebView cho iOS và WebView dành cho Android.

Còn React Native, bạn phát triển các ứng dụng với giao diện người dùng chuẩn. React Native sử dụng các native rendering với Java cho Android và Objective-C cho iOS.

Performance:  Hybrid apps (được xây dựng với Ionic) chắc chắn sẽ chậm hơn các ứng dụng được xây dựng với React Native.

Testing: Ionic có 1 điểm cộng vì nó có thể test trong bất kỳ trình duyệt nào. Còn với React Native, bạn sẽ cần một thiết bị hoặc trình mô phỏng(emulator)

Features: Tài liệu của lập trình Ionic rõ ràng hơn lập trình React Native nhiều. Một ưu điểm khác là khi install Ionic có rất nhiều pre-designed được thế kế sẵn, bạn chỉ việc dùng. Còn lập trình React Native thì lại có một tính năng khá thú vị đó là Hot Reload. Tính năng này cho phép debug và cập nhật ứng dụng đang chạy mà không hoàn toàn rebuilding lại.

Cộng đồng phát triển. React Native là một trong những framework phổ biến nhất trên Github. Nó không ngừng được phát triển. Nếu bạn là member của cộng đồng này, bạn có thể dễ dàng tìm thấy câu trả lời cho bất kỳ câu hỏi nào. Tất nhiên, bạn cũng có thể  truy cập vào một số lượng lớn thư viện của bên thứ ba. Khi nói đến Ionic, nó không có lượng người quan tâm lớn như vậy. Tuy nhiên, tốc độc phát triển rất đều đặn.

Lời kết

Vì vậy, làm thế nào chọn đúng cho công ty startup? Điều này nó phụ thuộc vào từng yêu cầu cụ thể của dự án. Có thể là sự phức tạp của dự án, thời hạn giao hàng, và thậm chí cả các kỹ năng của các lập trình viên.

Thực tế là những nền tảng này có nhiều đặc điểm khác nhau với những dự án khác nhau. Tuy nhiên, mặc dù hoạt động khác nhau nhưng cả hai đều có thể giải quyết yêu cầu của bạn

Cuối cùng, hãy cho mình biết về những ý tưởng mới, sở thích và mong muốn của bạn nhé!

Bình luận. Đặt câu hỏi cũng là một cách học

avatar
  Theo dõi bình luận  
Thông báo