Tổng quan dự án

Dự án có tên là Aukana (本当に観たい作品にで合うかな) - ứng dụng cập nhật các phim, video, playlists.. mới nhất.
Chức năng quan trọng nhất của ứng dụng này là chức năng review, người dùng có thể review 1 bộ phim sau khi xem và có thể xem review của người khác
để cân nhắc có nên xem phim hay không.
Ngoài ra người dùng có thể xem thông tin các VODs (video on demand) service nào có thể xem được phim và so sánh mức giá của các dịch vụ này.

Lý do chọn React Native

  • Muốn thử thách với công nghệ mới
  • Code một lần chạy được trên cả 2 nền tảng.
  • Được tạo ra bởi facebook nên có cộng đồng phát triển rất đông, luôn cập nhật liên tục.

Kinh nghiệm học được

  • CPU animation và GPU animation
  • Phương pháp HOC
  • Open API và swagger.
  • Sử dụng redux và cách tối ưu thư mục, tối ưu file xử lý code của redux
  • Xây dựng chart với react-native-svg và d3
  • Xây dựng CustomList
  • Sử dụng codePush để deploy code.

Ưu điểm của react-native:

  • Hot reloading: Đây chắc là chức năng rất tuyệt vời chắc nhiều người đã từng nghe đến, chỉ cần lưu code ngay lập tức sẽ thấy sự thay đổi trên app mà không cần phải build lại.
  • Có nhiều thư viện xây dựng nhanh app rất tiện lợi như react-navigation, react-native-scrollable-tab-view..
  • Làm việc với network rất dễ dàng, có thể dụng hàm fetch mặc định hoặc nếu dùng swagger-client thì càng dễ dàng hơn nữa.

Nhược điểm:

  • Giao tiếp với native qua các bridge nên performance không được như ứng dụng dùng native code, đặc biệt đối với các animation phức tạp.
  • Sự không tương thích giữa các versions của React native, như Airbnb đã gặp phải trường hợp ứng dụng react-native version 0.43 không tương thích với version 0.49 vào năm 2017.
  • Nhiều component được xây dựng sẵn vẫn chưa hoàn thiện, có nhiều bugs như thư viện Keyboard, Image…

Kết luận

Thực sự là lần đầu chuyển từ code native sang code react native có nhiều thứ mới mẻ với mình, ngày trước từng code javascript nhưng toàn là những thứ cơ bản để làm web,
chứ dùng js để xây dựng nên những component hoặc thư viện thì mình chưa làm bao giờ. Rất may mắn trong team có một anh khá pro về js nên nhiều lúc xem code của anh ấy
mình học được khá nhiều kiến thức mới về js. Dự án của mình kéo dài cũng khá lâu nên ngày qua ngày mình học được khá nhiều kiến thức mới, và ngày càng thấy kỹ năng code js
của mình thêm pro hơn :D.
Hiện tại thì dự án ngày càng phình to, code cũng bắt đầu xuất hiện một số vấn đề cần phải refactoring lại. Mặc dù vậy mình thấy quyết định của mình lựa chọn RN cho dự án lần này
khá là đúng đắn.
Kiến thức về react native chắc vẫn còn nhiều thứ hay ho nữa mình chưa biết đến, mình cũng cần phải nỗ lực hơn nữa, tích cực trao đổi hơn nữa với các developer giỏi để hoàn thiện
hơn kỹ năng lập trình RN nói chung và lập trình mobile nói riêng.

Các bạn ở Nhật quan tâm có thể tải app ở link dưới: