Hi tất cả các bạn, hiện tại mình đang là Mobile Developer, mình được làm với React Native tới nay cũng được hơn 6 tháng. Hôm nay mình sẽ chia sẻ cho các bạn về những điểm mà React Native rất được nhiều bạn yêu thích. Dù cho bạn có là 1 web developer hay là mobile developer native.

Nếu bạn là một fan cứng của Javascript thì có lẽ bạn cũng biết là số liệu thống kê trên StackOverflow qua các năm từ 2014 đến 2018 thì Javascript lên ngôi đầu bảng là ngôn ngữ được sử dụng phổ biến nhất. Một số các framework sử dụng Javascript như AngularJS, ReactJS, React Native, NodeJS…. Quả thật rất nhiều. Nhưng hôm nay mình sẽ chú trọng vào React Native hơn.

Những ưu điểm mà React Native mang lại 

Trong lĩnh vực phát triển Mobile:

1. Hot reloading, Live reload: Với bản thân đã code native application bằng Android, mỗi lần mình thay đổi 1 xíu kiểu như một cái chuỗi để hiển thị, thình mình phải ngồi chờ nó rebuild lại project rồi mới run application trên device nó rất là mất nhiều thời gian.

Sau khi mình thử code với React Native, phải nói là giai đoạn build app khá nhanh và nếu mình có thay đổi gì, mình chỉ cần Edit và Save lại, thì lập tức nó reload lại project rất nhanh, cứ như bạn F5 lại 1 trang web với mạng siêu nhanh :v, cái đó là tính năng của Hot reloading nhé.

Còn live reload nó sẽ load lại tất cả các file của Project. Thì đôi lúc Hot reloading nó tiện trong lúc handle với UI design, còn thay đổi logic đôi lúc nó lại không cập nhật được (cái này cũng hiếm khi) thì Live reload là giải pháp đó, live reload cũng rất nhanh. Hot reloading thì nó chỉ load lại cái file có sự thay đổi, còn live reload thì nó sẽ load lại toàn bộ các file trong Project. Nên chúng ta sẽ cân nhắc trước khi sử dụng 2 cái đó

2. Native application: có lẽ bạn cũng nghe thoáng thoáng đâu đó giữa Hybrid App và Native App.

Thì Hybrid App là ứng dụng kết hợp những ưu điểm của cả Mobile Web App và Native App. Theo đó, các phần cơ bản của ứng dụng vẫn viết bằng ngôn ngữ web, nhưng được đặt trong native container.

Còn Native app là những ứ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 của mỗi nền tảng đó ví dụ Java trên Android, Object C trên iOS, C# trên winphone. Mỗi Native App chỉ chạy được trên một nền tảng và không thể mang sang các nền tảng khác.

Không giống những framework khác như Cordova cái mà thường chỉ là một Webview (giống kiểu bật cái ứng dụng điện thoại lên thật chất là bạn đang lướt web mà không có cái thanh địa chỉ trên trình duyệt, tạo ảo giác như đang xài application). React Native được sử dụng để xây dựng một ứng dụng Native thật sự. Những Webview không thể cung cấp trải nghiệm chân thật cho người dùng – điều mà chỉ React Native có thể làm được.

Với React Native, những component cơ bản(View, Image, Button, Checkbox) đều là những component native. Do đó ứng dụng sẽ mang một trải nghiệm liền mạch với từng hệ điều hành. Điều đó thực sự làm lên một khác biệt lớn so với các framework lập trình cross-platform khác.

Nó thực sự ấn tượng hơn nữa khi bạn lại code bằng ngôn ngữ javascript và render ra các component native từ OS.

Mình lấy một ví dụ đơn giản: Đó chính là DatePicker widget. Bạn sẽ thấy ứng dụng của bạn với widget này sẽ hiển thị khác nhau trên Android và IOS.

Đây chính là một đặc điểm tạo nên sự khác biệt: Không chỉ là tốc độ vì nó gần native nhất, mà nó còn làm cho cuộc sống của lập trình viên trở nên dễ dàng hơn. Họ không cần phải code lại một logic cho các nền tảng khác nhau mà vẫn có ứng dụng native cho từng nền tảng đó.

Nếu nó đã build được như 1 native application thì hiệu năng nó sẽ rất là tốt.

3. Tiết kiệm nhân lực và thời gian:

Chúng ta có thể hiểu nó qua 1 case sau: Khách hàng deal với sếp của bạn rằng tui muốn sản phẩm tui chạy được trên cả Android và IOS, và chi phí rẻ cho tui, với nhanh lên giùm tui, tui muốn sản phẩm tui hoàn thành càng sớm càng tốt (Client ăn gì khôn thế không biết :v), và sếp transfer lại cho bạn (và bản thân sếp cũng không muốn tốn quá nhiều nhân công đầu tư 1 một dự án như vậy, nếu phải tuyển thêm dev cho team Android và cả team IOS nữa, chi phí bỏ ra khá nhiều) thì Leader mình sau khi xem xét các yêu cầu và thời gian của dự án thì Leader mình không chần chừ mà đưa ra giải pháp ngay đó là chọn React Native để implement cái sản phẩm đó và chi phí chỉ bằng ½ chỉ cần tuyển dev biết code React Native thậm chí là ReactJS hoặc dev vững core về JS, hay native application cũng có thể Join team để tham gia dự án. Lúc đó mình chỉ biết về native application đôi chút, hoàn toàn không biết gì về JS hay là react native. Thế mà mình tiếp cận nó khá nhanh. Quả thật nhanh hơn so với thời gian mình tiếp cận native app. Và điều đó khiến mình khá thích ở React Naive này.

4. Viết 1 được nhiều: như lời chia sẻ trên có lẽ bạn cũng thấy bạn hoàn toàn thấy. Code dự án bằng React Native đều có thể build trên Android và IOS một cách nhanh chóng và dễ dàng.

5. Cộng đồng khá lớn: bạn có thể check ở đây cả trăm thư viện https://github.com/jondot/awesome-react-native

Thứ 2 nó được sự hậu thuẫn của facebook, và với một cộng đồng khá lớn cùng chung tay phát triển thì tương lai nó sẽ còn lớn mạnh hơn nữa.

6. Kiến thức nền để tiếp cận: Nó không đòi hỏi bạn phải thật giỏi hay quá cao siêu mới có thể tiếp cận được nó. Thứ nhật bạn chỉ cần biết những cái căn bản như XML, HTML, CSS hay chỉ cần biết javascript hoặc Java core, hoặc cho dù bạn có là Web developer hay mobile developer thuần cũng đã có thể học tốt React native rồi.

Trong lĩnh vực cơ hội nghề nghiệp:

Bởi vì nó bắt nguồn từ core JS nên con đường mở rộng hướng đi cho bạn cực kỳ lớn rộng và đầy cơ hội nghề nghiệp với ước mơ ngàn đô là chuyện có thể thành hiện thực. Bởi vì nếu bạn tốt React Native, bạn có thể tiếp thu ReactJS rất nhanh, hoặc ngược lại. Rồi sau đó bạn lại dành 1 khoảng thời gian học NodeJS nữa. Bạn sẽ rất dễ dàng thành một Full Stack Developer bởi vì cái kia là nền tảng cho cái này. Thế là con đường hướng đi rất là rộng mở và thật sự rất tốt cho những cơ hội nghề nghiệp. Cho nên trường đào tạo lập trình, họ cũng nắm bắt điều này và họ tạo ra các khóa học để giúp các bạn nâng cao trình độ cũng như để giúp bạn trang bị những skill cần thiết để đáp ứng tốt cho nhà tuyển dụng bạn.