Công nghệ

React Native là gì?

react native la gì

React Native là một khung JavaScript để viết các ứng dụng di động thực cho iOS và Android. Nó dựa trên React, thư viện JavaScript của Facebook để xây dựng giao diện người dùng, nhưng thay vì nhắm mục tiêu trình duyệt, nó nhắm mục tiêu các nền tảng di động. Nói cách khác: các nhà phát triển web giờ đây có thể viết các ứng dụng di động trông và cảm nhận thực sự là “sống động” tất cả đều thoải mái từ một thư viện JavaScript mà chúng ta đã biết và yêu thích. Thêm vào đó, vì hầu hết các mã bạn viết có thể được chia sẻ giữa các nền tảng, React Native giúp dễ dàng phát triển đồng thời cho cả Android và iOS.

Tương tự như React cho Web, các ứng dụng React Native được viết bằng cách sử dụng hỗn hợp JavaScript và XML, được gọi là JSX. Sau đó React Native gọi các API kết xuất gốc trong Objective-C (cho iOS) hoặc Java (cho Android). Do đó, ứng dụng của bạn sẽ kết xuất bằng các thành phần UI di động thực sự, không phải webview và sẽ trông giống như bất kỳ ứng dụng di động nào khác. React Native cũng hiển thị giao diện JavaScript cho API nền tảng, vì vậy các ứng dụng React Native của bạn có thể truy cập các tính năng nền tảng như máy ảnh điện thoại hoặc vị trí của người dùng.

React Native hiện hỗ trợ cả iOS và Android và cũng có tiềm năng mở rộng sang các nền tảng trong tương lai. Bạn thực sự có thể sử dụng React Native để xây dựng các ứng dụng di động có tính sẵn sàng cáo! Một số giai thoại: Facebook, Palantir và TaskRabbit đã sử dụng nó trong sản xuất các ứng dụng hướng tới người dùng.

Ưu điểm của React Native

Việc React Native thực sự kết xuất bằng cách sử dụng API kết xuất chuẩn của nền tảng máy chủ của nó cho phép nó nổi bật so với hầu hết các phương pháp phát triển ứng dụng đa nền tảng hiện có, như Cordova hoặc Ionic. Các phương pháp viết ứng dụng di động hiện có bằng cách sử dụng kết hợp JavaScript, HTML và CSS thường hiển thị bằng cách xem web. Trong khi phương pháp này có thể hoạt động, nó cũng đi kèm với những hạn chế, đặc biệt là về hiệu suất. Ngoài ra, họ thường không có quyền truy cập vào bộ phần tử UI gốc của nền tảng máy chủ. Khi các khung công tác này cố gắng bắt chước các thành phần UI gốc, kết quả thường là cảm giác của Google chỉ là một chút; kỹ thuật đảo ngược tất cả các chi tiết tốt đẹp của những thứ như hoạt hình cần một nỗ lực rất lớn, và chúng có thể nhanh chóng trở nên lỗi thời.

Ngược lại, React Native thực sự chuyển đánh dấu của bạn thành các thành phần UI gốc, thực, tận dụng các phương tiện hiển thị hiện tại trên bất kỳ nền tảng nào bạn đang làm việc. Ngoài ra, React hoạt động tách biệt với luồng UI chính, vì vậy ứng dụng của bạn có thể duy trì hiệu suất cao mà không bị mất khả năng. Chu kỳ cập nhật trong React Native giống như trong React: khi đạo cụ hoặc trạng thái thay đổi, React Native tái hiện lại các khung nhìn. Sự khác biệt chính giữa React Native và React trong trình duyệt là React Native thực hiện điều này bằng cách tận dụng các thư viện UI của nền tảng máy chủ của nó, thay vì sử dụng đánh dấu HTML và CSS.

Đối với các nhà phát triển đã quen với việc làm việc trên Web với React, điều này có nghĩa là bạn có thể viết các ứng dụng di động với hiệu suất và giao diện của ứng dụng gốc trong khi sử dụng các công cụ quen thuộc. React Native cũng thể hiện sự cải thiện so với phát triển di động thông thường trong hai lĩnh vực khác: trải nghiệm của nhà phát triển và tiềm năng phát triển đa nền tảng.

Trải nghiệm của nhà phát triển

Nếu bạn đã từng phát triển cho thiết bị di động trước đây, bạn có thể ngạc nhiên bởi React Native dễ dàng hoạt động như thế nào. Nhóm React Native đã đưa các công cụ phát triển mạnh mẽ và các thông báo lỗi có ý nghĩa vào khung, do đó, làm việc với các công cụ mạnh mẽ là một phần tự nhiên trong trải nghiệm phát triển của bạn.

Chẳng hạn, vì React Native là chỉ là JavaScript JavaScript, nên bạn không cần phải xây dựng lại ứng dụng của mình để xem các thay đổi của bạn được phản ánh; thay vào đó, bạn có thể nhấn Command + R để làm mới ứng dụng của mình giống như bất kỳ trang web nào khác. Tất cả những phút đó chờ đợi để ứng dụng của bạn được xây dựng thực sự có thể cộng lại, và ngược lại, chu trình lặp lại nhanh chóng React Native cảm thấy giống như một ơn trời.

Ngoài ra, React Native cho phép bạn tận dụng các công cụ gỡ lỗi thông minh và báo cáo lỗi. Nếu bạn cảm thấy thoải mái với các công cụ dành cho nhà phát triển Chrome hoặc Safari Safari (Hình 1-1), bạn sẽ rất vui khi biết rằng bạn cũng có thể sử dụng chúng để phát triển di động. Tương tự, bạn có thể sử dụng bất kỳ trình soạn thảo văn bản nào bạn muốn để chỉnh sửa JavaScript: React Native không bắt buộc bạn phải làm việc trong Xcode để phát triển cho iOS hoặc Android Studio để phát triển Android.

Hình 1-1. Sử dụng Trình gỡ lỗi Chrome

Bên cạnh những cải tiến hàng ngày cho trải nghiệm phát triển của bạn, React Native còn có khả năng tác động tích cực đến chu kỳ phát hành sản phẩm của bạn. Chẳng hạn, Apple cho phép các thay đổi dựa trên JavaScript đối với hành vi của ứng dụng được tải qua mạng mà không cần thêm chu kỳ xem xét.

Tất cả các đặc quyền nhỏ này cộng lại để tiết kiệm thời gian và sức lực cho các nhà phát triển đồng nghiệp của bạn, cho phép bạn tập trung vào các phần thú vị hơn trong công việc của bạn và có năng suất cao hơn.

Sử dụng lại mã và chia sẻ kiến ​​thức

Làm việc với React Native có thể thu nhỏ đáng kể các tài nguyên cần thiết để xây dựng các ứng dụng di động. Bất kỳ nhà phát triển nào biết cách viết mã React giờ đây đều có thể nhắm mục tiêu vào Web, iOS và Android, tất cả đều có cùng một bộ kỹ năng. Bằng cách loại bỏ nhu cầu đối với các nhà phát triển silo, dựa trên nền tảng mục tiêu của họ, React Native cho phép nhóm của bạn lặp lại nhanh hơn và chia sẻ kiến ​​thức và tài nguyên hiệu quả hơn.

Bên cạnh kiến ​​thức được chia sẻ, phần lớn mã của bạn cũng có thể được chia sẻ. Không phải tất cả mã bạn viết sẽ là đa nền tảng và tùy thuộc vào chức năng bạn cần trên một nền tảng cụ thể, đôi khi bạn có thể cần phải nhúng vào Objective-C hoặc Java. (Hạnh phúc thay, điều này quá tệ và chúng tôi sẽ nói về cách thức được gọi là các mô đun gốc hoạt động trong Chương 7.) Nhưng việc sử dụng lại mã trên các nền tảng rất dễ dàng với React Native. Ví dụ: ứng dụng Trình quản lý quảng cáo Facebook cho Android chia sẻ 87% cơ sở mã của nó với phiên bản iOS, như đã lưu ý trong bài phát biểu của React Europe 2015. Ứng dụng cuối cùng mà chúng tôi sẽ xem xét trong cuốn sách này, một ứng dụng flashcard, có tổng số lần sử dụng lại mã giữa Android và iOS. Nó khó đánh bại nó!

Rủi ro và hạn chế

Như với bất cứ điều gì, sử dụng React Native không phải là không có nhược điểm của nó, và liệu React Native có phù hợp với nhóm của bạn hay không thực sự phụ thuộc vào tình huống cá nhân của bạn.

Rủi ro lớn nhất có lẽ là sự trưởng thành của React Native, vì dự án vẫn còn khá trẻ. Hỗ trợ iOS đã được phát hành vào tháng 3 năm 2015 và hỗ trợ Android được phát hành vào tháng 9 năm 2015. Tài liệu này chắc chắn có chỗ để cải thiện và tiếp tục phát triển. Một số tính năng trên iOS và Android vẫn chưa được hỗ trợ và cộng đồng vẫn đang khám phá các thực tiễn tốt nhất. Tin vui là trong phần lớn các trường hợp, bạn có thể tự thực hiện hỗ trợ cho các API bị thiếu, mà chúng tôi sẽ trình bày trong Chương 7.

Vì React Native giới thiệu một lớp khác cho dự án của bạn, nó cũng có thể thực hiện gỡ lỗi hairier, đặc biệt là tại giao điểm của React và nền tảng máy chủ. Chúng tôi sẽ đề cập đến việc gỡ lỗi cho React Native chuyên sâu hơn trong Chương 8 và cố gắng giải quyết một số vấn đề phổ biến nhất.

React Native vẫn còn trẻ và những cảnh báo thông thường đi cùng với việc làm việc với các công nghệ mới được áp dụng ở đây. Tuy nhiên, về tổng thể, tôi nghĩ rằng bạn sẽ thấy rằng lợi ích vượt xa rủi ro.

Tóm lược

React Native là một khung công tác thú vị cho phép các nhà phát triển web tạo ra các ứng dụng di động mạnh mẽ bằng kiến ​​thức JavaScript hiện có của họ. Nó cung cấp sự phát triển di động nhanh hơn và chia sẻ mã hiệu quả hơn trên iOS, Android và Web mà không làm mất đi trải nghiệm hay chất lượng ứng dụng của người dùng cuối. Sự đánh đổi là nó mới, và vẫn đang trong quá trình hoàn thiện. Nếu nhóm của bạn có thể xử lý sự không chắc chắn khi làm việc với một công nghệ mới và muốn phát triển các ứng dụng di động không chỉ cho một nền tảng, bạn nên xem React Native.

Comment here