2015-07-22 19 views
19

Tôi hiện đang duyệt web để biết thông tin với mục tiêu xây dựng một phiên bản Web và Di động của trò chơi bảng cổ điển.Chọn ngăn xếp công nghệ cho ứng dụng Desktop + Mobile

Ý tưởng là có đầy đủ các tính năng và trò chơi trên phiên bản dành cho máy tính để bàn và ứng dụng di động nguyên bản đã bị loại bỏ, cho phép người dùng chơi trò chơi và thay đổi một số cài đặt.

Bây giờ tôi đang sử dụng để xây dựng ứng dụng web cho máy tính để bàn nhưng tôi chưa bao giờ chạm vào bất kỳ thứ gì như Cordova/Ionic.

Tôi cũng muốn thêm rằng tôi có ý định đưa ứng dụng vào sản xuất một ngày nào đó.

Tôi có nhiều câu hỏi:

  • gì bạn sẽ sử dụng có một công nghệ phía máy chủ? (Tôi đang tìm hướng tới Node.js, để được tư vấn hoặc chống lại nó?
  • Làm thế nào để Cordova/Ionic/React tự nhiên và/hoặc những người khác sẽ liên quan đến ứng dụng dành cho máy tính để bàn của tôi? khối mã? (CSS, JS)?
  • nào trong những nền tảng trên, bạn sẽ sử dụng cá nhân và tại sao?

tôi đang cố gắng để thu thập càng nhiều thông tin càng tốt từ bất cứ ai đã từng làm việc với bất kỳ các công nghệ được đề cập ở trên, vì vậy hãy thoải mái chỉ trả lời các phần của bài đăng này để tôi có thể biên dịch mọi thứ.

Cảm ơn s rất nhiều cho thời gian của bạn và giúp

+1

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. –

Trả lời

35

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.

+0

Một điều bạn đã không thực sự chỉ ra là "kiểm tra ở khắp mọi nơi" (cho cả hai tùy chọn). CSS được diễn giải một cách tinh tế khác nhau trên các nền tảng di động khác nhau. –

+0

@EdBallot nếu bạn nhìn vào dự án Lối đi qua đường (hiện chỉ là Android), điều này cho phép nhúng trình duyệt Chromium bên trong APK Android, do đó phiên bản Chromium (gần đây) chạy không có vấn đề với Android SDK mục tiêu: bạn có thể mong đợi cùng một hành vi của trình duyệt trên tất cả các thiết bị Android cho một phiên bản ứng dụng nhất định. –

+0

Câu trả lời rất hoàn chỉnh, nó bắt đầu rõ ràng hơn trong đầu tôi! Không biết về touchstone nhưng nó trông rất hứa hẹn và tôi chắc chắn sẽ nhận được vào nó. Tôi nghĩ React/Node và Touchstone là chồng tôi sẽ kết thúc, thực tế là nó được xây dựng trên đỉnh của Cordova là yên tâm. Cảm ơn rất nhiều ! –

Các vấn đề liên quan