Phản ứng Native
học một lần, viết bất cứ nơi nào.
Đây thực sự là ứng dụng gốc, vì vậy chúng thường có hiệu suất tốt hơn các ứng dụng không phải gốc. Để xây dựng ứng dụng React Native, bạn vẫn cần kiến thức về nền tảng đích (Android/iOS) và vẫn cần phải viết một ứng dụng trên mỗi nền tảng nhưng bạn có thể sử dụng cùng kiến trúc ứng dụng (React/Flux) trên cả hai nền tảng.
Vì nó được viết bằng JS (như React), bạn vẫn có thể chia sẻ mã giữa các nền tảng, nhưng một số mã sẽ luôn phải khác nhau, vì ReactElement bạn sử dụng trong hàm render
của bạn thực sự là nền tảng cụ thể. Vì vậy, về cơ bản bạn có thể chia sẻ tất cả logic quản lý trạng thái của mình, nhưng bạn sẽ phải cung cấp chức năng hiển thị tùy chỉnh cho mỗi nền tảng bạn nhắm mục tiêu.
Đây là một lựa chọn tốt nếu bạn cần biểu diễn tốt/bản địa, bạn có thời gian để tìm hiểu nền tảng iOS và Android và duy trì song song 2 ứng dụng khác nhau.
Hiện tại React Native cho Android không được phát hành nhưng có thể là vào tháng 8 năm 2015. Đây là một lựa chọn tốt cho các ứng dụng gốc thông thường và cung cấp một số ưu điểm như tải lại nóng, nhưng nó vẫn không phải là công nghệ rất trưởng thành và hơi mạo hiểm nhưng rất hứa hẹn về lâu dài và được thử nghiệm bởi Facebook và cộng đồng. Bạn cũng có thể xem ComponentKit, cũng từ Facebook, đó là bằng cách nào đó Phản ứng cho ObjectiveC, nhưng tôi nghĩ phần lớn các dự án mới của Facebook sẽ có xu hướng sử dụng React Native trên ComponentKit.
Cordova/WebView apps
viết một lần, chạy mọi nơi
ứng dụng Cordova/PhoneGap không ứng dụng bản địa. Chúng là các shell gốc xung quanh các ứng dụng WebView. Chế độ xem web là trình duyệt chạy bên trong ứng dụng gốc. Các ứng dụng này được đóng gói trong vỏ gốc để có sẵn cho các cửa hàng ứng dụng của Google/Apple như các ứng dụng gốc khác.
Lợi thế là nó chỉ là HTML, JS và CSS. Điều đó có nghĩa là nếu bạn đã có trang web dành cho thiết bị di động (hoặc trang web dành cho máy tính để bàn xử lý cả màn hình máy tính và thiết bị di động), bạn có thể dễ dàng đóng gói ứng dụng đó dưới dạng ứng dụng Cordova và cung cấp thông qua cửa hàng ứng dụng.
Vì vậy, bạn viết một lần trên trang web dành cho thiết bị di động và bạn cũng nhận được một ứng dụng iOS và Android miễn phí!
Đây là một lựa chọn tốt nếu bạn chỉ muốn biểu diễn có thể chấp nhận được, bạn muốn ứng dụng của mình khả dụng trên hầu hết các nền tảng càng sớm càng tốt và bạn không có thời gian/tài nguyên để phát triển song song nhiều ứng dụng.
Nó cũng giúp nếu bạn đã biết phát triển web :) Và bạn vẫn có thể dễ dàng sử dụng các tính năng ứng dụng gốc (như máy ảnh) với các plugin Cordova.
AngularJS (Ionic, Famo.us) vs ReactJS (Reapp, TouchstoneJS)
Ionic và Famo.us là khung di động chủ yếu được sử dụng trên đầu AngularJS
Reapp và TouchstoneJS là khung di động trên đầu của ReactJS
Chúng không được tạo cho ứng dụng gốc (hoặc React Native), nhưng cho các trang web trên điện thoại di động hoặc ứng dụng webview. Chọn một trong những bạn muốn, tôi không biết bất kỳ đặc biệt. Sử dụng khung không phải là yêu cầu cho ứng dụng trên thiết bị di động/webview nhưng có thể bạn sẽ cần một số tiện ích để xử lý các sự kiện chạm vì sự kiện onclick
thường không đủ để có trải nghiệm di động tốt.
Tôi sẽ không tranh luận về AngularJs vs ReactJ, nhưng đã trải qua cả hai và thích nhiều ReactJS hơn (và tôi không đơn độc). ReactJS, khi được sử dụng đúng cách, có nhiều chức năng, thanh lịch và dễ dàng hơn để giải thích. Tôi không nghĩ AngularJs cho phép elegant hot reloading and time travelling ala Bret Victor vì nó yêu cầu different architecture mà ReactJS cho phép.
Tuy nhiên AngularJS vẫn cho phép xây dựng nội dung và Famo.us/Ionic có thể trưởng thành hơn các khung công tác di động ReactJS hiện có.
Backend
tôi khuyên bạn sử dụng NodeJS vì nó cho phép bạn xây dựng các đẳng cấu/ứng dụng Universal, có nghĩa là bạn có thể chia sẻ mã trên cả client/server, bao gồm cả các Phản ứng linh kiện, do đó bạn có thể hiển thị cả trên máy khách và máy chủ. Điều này có nghĩa là thay vì một trang html trống, bạn có thể trực tiếp phục vụ nội dung để nó có sẵn nhanh hơn, nó dễ dàng hơn để lập chỉ mục cho các công cụ tìm kiếm và nó cũng hoạt động cho các trình duyệt bị tắt js.
Điều này thật kỳ lạ vì tôi thậm chí không thích Javascript (Tôi thích các ngôn ngữ như Scala, Haskell hoặc Clojure).Nếu đây là trường hợp của bạn, bạn vẫn có thể khám phá các lựa chọn khác cho các ứng dụng đẳng cấu, như: (? Hoặc microservices)
- Có hầu hết phụ trợ của bạn bằng ngôn ngữ X, và chỉ cần một dịch vụ NodeJS chút cho các rendering server-side .
- Sử dụng một cái gì đó như Nashorn để chạy JS bên trong JVM
- Sử dụng ngôn ngữ phụ trợ biên dịch sang Javascript (như ScalaJS) và có thể chạy trên cả máy khách/máy chủ.
Tuy nhiên, 2 tùy chọn cuối cùng vẫn còn hơi chưa trưởng thành.
Kinh nghiệm của tôi
Chúng tôi là một khởi động nhỏ (3 devs) với không ai có bất kỳ kinh nghiệm bản địa iOS/Android, và muốn một kết quả nhanh chóng.
Ban đầu chúng tôi đã có trang web ReactJS trên máy tính để bàn phức tạp (SPA). Chúng tôi đã làm cho nó đáp ứng với CSS mediaqueries. Chúng tôi đã thêm trình xử lý sự kiện chạm tùy chỉnh để có trải nghiệm di động tốt hơn. Vì vậy, cuối cùng chúng tôi đã có một trang web hỗ trợ tốt điện thoại di động/máy tính bảng/máy tính để bàn.
Chúng tôi đã sử dụng chính xác ứng dụng này và đóng gói nó trong Cordova, do đó bây giờ nó cũng có sẵn trong các cửa hàng ứng dụng. Nó hoạt động rất tốt và màn trình diễn rất được chấp nhận. Bạn có thể mong đợi các buổi biểu diễn tương tự với ứng dụng di động/cordova trên điện thoại di động của bạn (để kiểm tra Android Crosswalk project)
Chúng tôi kết thúc với một SPA đáp ứng duy nhất HTML/JS/CSS duy trì (vẫn làm việc chăm chỉ của SPA!).
Tôi chắc chắn sẽ thực hiện lại các lựa chọn tương tự, ngay cả khi trong tương lai chúng tôi có thể sử dụng React Native nếu nhóm của chúng tôi phát triển.
Sửa 2016: như bây giờ nếu tôi được chọn những gì để sử dụng, tôi sẽ sử dụng Redux, và sử dụng ReactJS cho máy tính để bàn và điện thoại di động trang web, và ReactNative cho nguồn gốc điện thoại di động. Redux rất hay và thậm chí nếu không phải tất cả các mã đều có thể được chia sẻ giữa các ứng dụng di động, Facebook báo cáo rằng có thể dễ dàng thực hiện được most of it. Lưu ý rằng việc tách biệt rõ ràng giữa các thành phần thùng chứa và giới thiệu là rất quan trọng để bạn có thể sử dụng lại các thành phần vùng chứa trong tất cả các ứng dụng của mình và chỉ cung cấp các thành phần trình bày tùy chỉnh. Cũng cần lưu ý rằng có thể thêm webview vào ứng dụng gốc tương ứng, vì vậy có thể di chuyển ứng dụng web di động sang ứng dụng gốc dần dần (ví dụ: trước tiên có thể di chuyển menu điều hướng và bố cục chung). Chỉnh sửa: cũng thú vị, dự án Ace nhằm mục đích thêm một số bố cục gốc bên trong ứng dụng Cordova.
chỉnh sửa 2017: cho tất cả nhà phát triển ứng dụng dành cho thiết bị di động chắc chắn sẽ khuyên bạn nên thử Expo (React Native). Bạn nhận được tốc độ phát triển của Cordova mà không cần phải biết gì về ứng dụng gốc. Nếu bạn đã biết một chút Phản ứng, bạn có thể bắt đầu sau 1 phút.
Cũng khuyên bạn nên sử dụng GraphQL với Apollo, sẽ mất nhiều thời gian hơn để tìm hiểu nhưng đó là lựa chọn rất tốt để bảo trì dự án dài hạn.
Tôi sẽ đi có nghĩa là ngăn xếp 100%, Mongo DB, Express, Góc/Ionic, NodeJS. (Tuy nhiên bạn có thể trao đổi ra mongo cho sql, hoặc bất cứ điều gì) Có tấn bổ sung và mô-đun cho góc để khá nhiều bất cứ điều gì bạn có thể ước mơ của, nếu người ta không tồn tại đơn giản viết của riêng bạn.Ném trong dây-ova và bạn có thể xây dựng khá nhiều thứ bạn có thể mơ ước hoặc bạn có thể xây dựng trên web và chỉ cần triển khai nó lên bất kỳ nền tảng nào và sử dụng các tính năng thiết bị gốc. Là một người làm việc 4 ngày một tuần, tôi đã xây dựng nhiều ứng dụng trên nhiều nền tảng cho một công ty trên toàn quốc, như thế nào? ion và góc cạnh. –