React Native là gì? Những ý nghĩa của React Native

Blog Nghialagi.org giải đáp ý nghĩa React Native là gì

  • Chào mừng bạn đến blog Nghialagi.org chuyên tổng hợp tất cả hỏi đáp định nghĩa là gì, thảo luận giải đáp viết tắt của từ gì trong giới trẻ, hôm nay chúng ta cùng tìm hiểu một khái niệm mới đó là React Native là gì? Những ý nghĩa của React Native. Ngôn ngữ lập trình React Native là gì? React native là gì? Tại sao sử dụng React Native
React Native là gì? Cái nhìn cơ bản nhất về React Native - Nghialagi.org
React Native là gì? Cái nhìn cơ bản nhất về React Native – Nghialagi.org

Định nghĩa React Native là gì?

  • React Native là một framework do công ty công nghệ nổi tiếng Facebook phát triển nhằm mục đích giải quyết bài toán hiệu năng của Hybrid và bài toán chi phí khi mà phải viết nhiều loại ngôn ngữ native cho từng nền tảng di động.
  • Chúng ta sẽ build được ứng dụng Native, và chúng ta cũng có thể build ứng dụng đó một cách đa nền tảng (multi-platform) chứ không phải là một “mobile web app”, không phải là “HTML5 app”, và cũng không phải là một “hybrid app” hay cũng không chỉ build trên iOS hay Android mà chúng ta build và chạy được cả hai hệ sinh thái luôn, sợ chưa!!!
  • Một điểm hay ho nữa mà mình có đề cập là giảm chi phí recompile của Native bằng cách sử dụng Hot-Loading tức là bạn không cần phải build lại ứng dụng từ đầu nên việc chỉnh sửa diễn ra rất nhanh chóng. Giúp cho lập trình viên có thể thấy được những chỉnh sửa của họ một cách nhanh chóng trực quan, không còn phải bỏ quá nhiều thời gian trong việc build và run ứng dụng nữa.

  • Và điểm lợi hại kế tiếp của React Native đó chính là chúng ta chỉ cần sử dụng JS để phát triển được một ứng dụng di động hoàn chỉnh, đồng thời giải quyết được các vấn đề mà Native App gặp phải mà mình đã nêu ở trên. Và rồi còn cả kết hợp với code native như Swift, Java, v.v… Tới đây mình chỉ có thể nói là “Thật là vi diệu”.

Ưu và nhược điểm

Trước khi đi đến phần kế tiếp mình xin dừng lại chút xíu để phân tích xem liệu React Native có phải thần thánh không hay chỉ là cũng như bao framework khác đều có những điểm lợi và hại.

Nhược điểm:

  1. Vẫn đòi hỏi native code.
  2. Hiệu năng sẽ thấp hơn với app thuần native code.
  3. Bảo mật không cao do dựa trên JS.
  4. Quản lý bộ nhớ.
  5. Khả năng tùy biến cũng không thực sự tốt đối với một vài module.

Ưu điểm:

  1. Hiệu quả về mặt thời gian khi mà bạn muốn phát triển một ứng dụng nhanh chóng.
  2. Hiệu năng tương đối ổn định.
  3. Cộng đồng phát triển mạnh.
  4. Tiết kiệm tiền.
  5. Team phát triển nhỏ.
  6. Ứng dụng tin cậy và ổn định.
  7. Xây dựng cho nhiều hệ điều hành khác nhau với ít native code nhất.
  8. Trải nghiệm người dùng tốt hơn là hybrid app.

Hai hệ sinh thái

  • Một lý do lập trình mobile app rất khó và tốn thời gian là vì thực tế bạn cần tìm hiểu 2 hệ sinh thái hoàn toàn khác biệt. Nếu bạn muốn lập trình app iOS, bạn phải học Swift hoặc Objective-C và Cocoa Pods.
  • Nếu muốn lập trình app Android, bạn cần học Java và Android SDK. Tôi từng viết code với 3 ngôn ngữ là Swift, Objective C, Java và không thực sự hứng thú với việc tranh luận ngôn ngữ nào tốt hơn.
  • Tuy nhiên, điều tôi có thể nói là chúng khác nhau và việc học từng ngôn ngữ đó sẽ tốn khá nhiều thời gian. Điều tương tự cũng xảy ra với các frameworks: Cocoa Touch và Android SDK.
  • Tất nhiên, mỗi frameworks luôn có 1 gói các công cụ như công cụ testing, các libs, packages… và việc các dev phải cập nhật các tính năng mới nhất của mỗi hệ sinh thái là điều không thể bàn cãi.
  • Mặc khác, nếu bạn chọn lập trình trên React Native, phần lớn thời gian bạn sẽ chỉ cần học 1 bộ công cụ. Có rất nhiều thứ để bạn làm quen như: JavaScript, Node, React Native… nhưng chỉ có 1 công cụ duy nhất để học.

Khả năng sử dụng lại

  • Khả năng sử dụng lại đóng vai trò quan trọng trong lập trình phần mềm, nên mỗi khi bạn có thể sử dụng lại code thì React Native là công cụ tốt.
  • React Native không phải chỉ viết 1 lần mà nó chạy platform ở mọi nơi. Bất cứ khi nào bạn lập trình 1 app, bạn cần phải xây dựng UI trông native. Vì lý do này, 1 số UI code cần được viết theo đúng các chỉ dẫn và chuẩn mực tốt nhất của platform đó.
  • Tuy nhiên, sẽ luôn có vài UI code thông dụng có thể được chia sẻ chung với nhau cùng tất cả logic. Tính năng “có thể chia sẻ code” có rất nhiều lợi điểm như: tận dụng nguồn nhân lực tốt hơn, duy trì ít code hơn, ít bugs hơn, các tính năng trong cả 2 platforms cũng tương tự nhau…

Học 1 lần, viết ở mọi nơi

  • Khi team của Facebook tạo React Native, mục tiêu của họ là giúp các dev học 1 lần nhưng sử dụng được mọi platform. Bởi vì tất cả code của Android và iOS sử dụng cùng bộ công cụ, nên ý tưởng có 1 team dev làm app cho cả 2 platform là thực hiện được – 1 điều ít khi xảy ra khi có rất ít dev lập trình cả 2 platform iOS và Android.
  • Thậm chí, tôi còn cho rằng team đang lập trình web app sử dụng React.js sẽ không phải cực khổ nữa khi học lập trình React Native và bắt đầu làm mobile app.

Declarative API

  • Khi bạn tạo ứng dụng sử dụng React Native, việc dự đoán và hiểu UI của bạn cũng dễ dàng hơn vì nó có 1 declarative API, tương phản với imperative API. Sự khác biệt giữa các cách tiếp cận này là khi bạn có 1 app với nhiều trạng thái khác nhau, bạn cần phải theo dõi các thay đổi trong UI và chỉnh sửa chúng.
  • Điều này có thể là 1 nhiệm vụ phức tạp và không thể dự đoán được khi app của bạn phát triển. Đây được gọi là Imperative Programming. Nếu bạn dùng React Native vốn đã có declarative APIs, bạn chỉ cần quan tâm đến tình trạng UI hiện tại trông như thế này, mà không cần theo dõi những UI cũ.

Hot Reloading

  • Thói quen thông thường của dev khi code là test các thay đổi mỗi lần code được viết. Để thực hiện được, app cần phải được tổng hợp lại và và cài đặt hoặc trong 1 simulator hoặc 1 thiết bị thật sự.
  • Với React Native, phần lớn thời gian, bạn không cần phải tổng hợp lại app mỗi lần có thay đổi. Bạn chỉ cần làm mới app trong simulator, emulator hoặc thiết bi. Thậm chí còn có 1 tính năng là Live Reload để tự động refresh app mỗi lần phát hiện 1 thay đổi trong code.

Nguồn mở

  • React Native vẫn còn là 1 công nghệ rất mới, mới chỉ trở thành nguồn mở chưa tới 1 năm về trước. Tuy vẫn còn vài bugs, nhưng nhìn chung, các dev có thể sử dụng React Native vào giai đoạn sản xuất ở hầu hết các mobile app.
  • Ngoài ra vẫn còn vài tính năng có sẵn trong các frameworks native, chưa sử dụng được với React Native nhưng đây không phải là vấn đề lớn. Từ kinh nghiệm của bản thân, đây chỉ là chuyện đơn giản khi bạn đã quen thuộc với lập trình native.
  • Thêm nữa, từ khi React Native đã là nguồn mở, 1 cộng đồng lớn các dev đã hỗ trợ thực hiện nhiều tính năng hơn, fix bugs… Phần lớn thời gian, nếu bạn đang cố gắng lập trình 1 thứ gì đó đã quen thuộc trong mobile apps thì nhiều khả năng là nó đã được lập trình rồi.

iOS vs Android

  • Ngày nay chúng ta có hai nền tảng cạnh tranh chính là iOS và Android, mỗi kẻ một thế lực làm khuynh đảo giới lập trình. Từ đó sinh ra các công cụ hỗ trợ nhà phát triển ứng dụng có thể phát triển mỗi ứng dụng một cách dễ dàng chẳng hạn như Apple thì có XCode, Android thì có Android Studio.
  • Nhưng cũng chính vì lẽ mỗi kẻ một thế lực nên không ai chơi với ai, mỗi bên xưng đế một “phương” cuối cùng con dân lập trình viên là những người phải chịu trận. Và cũng từ lẽ đó mà giang hồ sinh ra hai môn vang danh thiên hạ là Native và Hybrid? Trước khi đi sâu vào React Native thì chúng ta nên biết Native và Hybrid là cái chi chi và những lợi và hại giữa hai môn phái này. Thông qua đó chúng ta sẽ biết được tại sao mà React/React Native lại được khai sinh ra đời để giải quyết vấn đề nan giải của con dân lập trình viên di động.

Native vs Hybrid

Hybrid

  • Hybrid App là sự kết hợp giữa ứng dụng Web và ứng dụng mobile. Tức là chúng vừa có thể cài đặt lên điện thoại người dùng giống như là những ứng dụng Native bình thường và bạn có thể tìm thấy chúng trên chợ ứng dụng nhưng khó có thể nhận ra đâu là ứng dụng Native và đâu là ứng dụng Hybrid thường thì người dùng sẽ không để ý quá nhiều. Đồng thời như ứng dụng Web chúng được xây dựng dựa trên HTML + CSS + JS. Nhược điểm của Hybrid App đó chính là vấn đề hiệu năng sẽ bị ảnh hưởng đáng kể cũng như không tương tác được hết những tài nguyên hệ thống phần mềm cũng như phần cứng.

Native

  • Mình xin nói về khái niệm Native App trước, Native App khá là dễ hiểu, tức đó là các ứng dụng được phát triển và build trên chính những công cụ hỗ trợ mà nhà phát triển iOS và Android cung cấp cho người lập trình viên ở đây là XCode và Android. Chúng được viết bằng ngôn ngữ mà nhà phát triển iOS và Android cung cấp ra iOS thì là Swift hiện tại, xưa là Objective C, còn Android thì hiện tại tồn tại song song là Java và Kotlin. Các ứng dụng Native được build dựa trên ngôn ngữ của chính hệ điều hành và sử dụng những tính năng sẵn có của hệ điều hành mà không phải thông qua bất cứ ứng dụng bên thứ ba hay engine nào khác để vận hành nên tốc độ là nhanh nhất.

Vì vậy, mà Native App là sự lựa chọn hàng đầu của giới lập trình trong việc phát triển phần mềm di động bởi vì nó mang lại hiệu năng cao, trải nghiệm người dùng tốt.

Tài liệu React Native

Cộng đồng học React Native

  • https://github.com/react-native-community
  • https://www.facebook.com/groups/reactnativevietnam/

Kết luận

Cảm ơn bạn đã đọc bài viết của blog nghialagi.org, hy vọng những thông tin giải đáp React Native là gì? Những ý nghĩa của React Native sẽ giúp bạn đọc bổ sung thêm kiến thức hữu ích. Nếu bạn đọc có những đóng góp hay thắc mắc nào liên quan đến định nghĩa React Native là gì? vui lòng để lại những bình luận bên dưới bài viết này. Blog nghialagi.org luôn sẵn sàng trao đổi và đón nhận những thông tin kiến thức mới đến từ quý độc giả

Co-founder tại Blog Nghilagi.org Giải đáp thắc mắc bạn đọc. Tra thuật ngữ nhanh và chính xác nhất. Nghĩa Là Gì - Giải thích mọi câu hỏi kỳ quặc nhất Hãy cùng nhau chia sẻ những kiến thức bổ ích