Bạn là một nhà phát triển solo. Bạn có một ý tưởng. Bạn nói ý tưởng cho bạn bè của bạn. Họ thích ý tưởng. Bạn thiết kế một nguyên mẫu. Bạn dành hàng tháng trời để lập trình nó và sau đó sẽ đến lúc bạn phát hành nó. Bạn đẩy nó ra thế giới và chia sẻ nó với mọi người bạn biết. Sau đó, bạn nhận được một câu hỏi quá quen thuộc…

Khi nào điều này đến với Android?

Vì vậy, bạn dừng lại một phút và nghĩ, “hmm… có vẻ như mọi người cũng muốn điều này trên Android. Điều này thực sự sẽ cần những gì để thực hiện ”? Và bạn tra cứu nó và khám phá ra rằng:

Bạn sẽ cần tìm hiểu một loạt các bước mới để triển khai Bạn sẽ cần tìm hiểu một bộ công cụ giao diện người dùng mới Bạn sẽ cần tuân theo một bộ nguyên tắc giao diện người mới Bạn sẽ cần học một ngôn ngữ lập trình mới !!! Bạn sẽ cần học cách đồng bộ hóa hai triển khai riêng biệt mỗi khi bạn muốn thêm một tính năng mới. Bạn sẽ cần phải nắm vững API thanh toán mới và API thông báo đẩy, cũng như API định tuyến trang, và… bạn sẽ hiểu. Cuối cùng: Bạn sẽ cần phải viết lại hoàn toàn từng dòng mã từ ngày 0 đến hôm nay Phát triển ứng dụng đa nền tảng là gì?

Phát triển đa nền tảng là ý tưởng rằng bạn có thể sử dụng 1 codebase và triển khai nó cho nhiều nền tảng cùng một lúc. Thông thường, điều này được thực hiện bằng cách lập trình dự án của bạn 1 lần bằng ngôn ngữ như JavaScript, sau đó sử dụng WebView để nhúng mã javascript đó vào ứng dụng dành cho thiết bị di động và máy tính để bàn của bạn.

Bạn đang xem: Code base là gì

Về cơ bản, WebView có thể được coi là một trình duyệt web với các đường viền được loại bỏ chỉ hiển thị nội dung của trang. Nó sẽ kết thúc như thế này:


*
(Skiwise: https://skiwise-app.com)

Bằng cách thiết kế một ứng dụng như vậy có nghĩa là bạn chỉ phải viết mã một lần, vì vậy năng suất đạt được có thể rất lớn. Hãy suy nghĩ về nó như thế này:

Nếu n là số nền tảng bạn hỗ trợ, thì khi bạn viết mã gốc cho mỗi nền tảng này, về cơ bản bạn đang phát triển với tốc độ O (n). Khi bạn phát triển bằng cách sử dụng các công nghệ đa nền tảng, bạn hiện đang phát triển với tốc độ O (1) vì bạn không phải làm nhiều việc hơn để tạo ứng dụng cho nhiều nền tảng hơn. Bây giờ không phải là tối ưu hóa đó trông ấn tượng trong một cuộc phỏng vấn mã hóa?

Được rồi, vậy nếu có rất nhiều thứ để đạt được bằng cách phát triển các ứng dụng đa nền tảng, tại sao mọi người không làm điều đó?

Chà, đó là bởi vì sự phát triển đa nền tảng, giống như bất kỳ công nghệ nào, không có mặt trái của nó.

Mặt trái của ứng dụng đa nền tảng

Khi bạn chọn một giải pháp đa nền tảng, hầu như luôn có sự đánh đổi về tốc độ, sự hỗ trợ và tính ổn định so với việc xây dựng một ứng dụng gốc cho mỗi nền tảng. Tôi nghĩ rằng những nhược điểm này có thể dễ dàng bị bỏ qua, vì vậy ở đây tôi sẽ liệt kê một số vấn đề bạn có thể gặp phải trong quá trình này:

Ứng dụng đa nền tảng chậm hơn

Xây dựng một ứng dụng đa nền tảng có nghĩa là có thêm một lớp trừu tượng mà mã của bạn phải chạy qua. Tôi muốn nói rằng đối với hầu hết các ứng dụng, sự khác biệt này là không đáng kể, nhưng nó vẫn có thể phát huy tác dụng.

Triển khai có thể phức tạp hơn

Việc triển khai các tính năng mới sẽ dễ dàng hơn khi cơ sở mã cho các plforms khác nhau được tách ra khỏi nhau. Mỗi nền tảng có thể có lịch trình khởi chạy, quy trình thử nghiệm và đường ống dẫn riêng của chúng, nhưng khi mọi thứ gắn liền với nhau, bạn phải tìm ra giải pháp tốt để quản lý mọi thứ.

Chức năng hạn chế

Một số giải pháp đa nền tảng có một kho thư viện tốt để thực hiện các hoạt động gốc như thông báo đẩy, cửa sổ bật lên, đối sánh giao diện người dùng, v.v., nhưng tôi vẫn chưa tìm thấy giải pháp bao gồm đầy đủ tất cả các chức năng gốc có thể có, vì vậy bạn sẽ gặp phải những hạn chế và đôi khi bạn sẽ phải viết mã gốc để vượt qua những hạn chế này

Vì vậy, bây giờ bạn đã biết những hạn chế của các ứng dụng cross-plaform, hãy cùng tìm hiểu cách tạo ứng dụng đa nền tảng ưa thích của tôi.

Tôi nên sử dụng khung đa nền tảng nào?

Có rất nhiều giải pháp khác nhau để xây dựng các ứng dụng đa nền tảng. Bạn có một số giải pháp phổ biến như React-Native, Cordova , Ionic , Capacitor , Flutter , vì vậy quyết định không phải là dễ dàng. Tôi sẽ không thảo luận về sự cân bằng giữa những thứ này trong bài viết này, nhưng đây là một số bài viết hay so sánh sự khác biệt giữa những lựa chọn thay thế này:

Khung ứng dụng Cross-Platfrm năm 2019 của Amit Manchanda 7 công cụ phát triển ứng dụng đa nền tảng phổ biến sẽ thống trị vào năm 2020 bởi Sophia Martin Ngăn xếp công nghệ đa nền tảng của tôi

Rất nhiều nhà phát triển React sẽ chọn một thứ như React-Native. Tôi quyết định chống lại điều này vì tôi không muốn viết bất kỳ mã gốc nào cả. Tôi cũng không muốn giải quyết các vấn đề tương thích với các thư viện React khác mà tôi có thể muốn đưa vào, vì vậy tôi đã sử dụng Ionic

Ionic đã phát hành phiên bản chính thức hỗ trợ React vào tháng 10 năm 2019. Tôi là người sớm chấp nhận bản phát hành này và bắt đầu sử dụng một tháng sau khi nó được phát hành. Bây giờ tôi đã sử dụng công nghệ được 9 tháng và mặc dù nó có một số vấn đề, tôi nghĩ công nghệ này đã đi được một chặng đường dài. Dưới đây là một số điều tôi thích về Ionic + React:

Nó có thể triển khai cho mọi thứ. iOS. Android. Electron (máy tính để bàn). Web. Vân vân. Tôi chưa bao giờ phải viết bất kỳ mã gốc nào. Tôi có thể kiểm tra mã của mình và phát triển nó trong trình duyệt, sau đó khi tôi sẵn sàng kiểm tra cách nó hoạt động trên thiết bị di động, tôi có thể tạo mã và kiểm tra trực tiếp trong XCode / Android Studio Ionic hiện là bất khả tri khung Có một kho lưu trữ các móc phản ứng ion cung cấp cho bạn một giao diện dễ dàng cho nhiều khả năng gốc

Ionic

Ionic về cơ bản là một bộ giao diện người dùng gồm các thành phần chung khác nhau mà bạn có thể sử dụng trong mã web của mình để có các tính năng trông giống như nguyên bản trong ứng dụng của mình. Nó cung cấp các thành phần chung như có thể trông giống như thế này trên iOS:


*

*

Sự khác biệt giữa những thứ này có thể trông nhỏ, nhưng nó có nghĩa là làm cho ứng dụng của bạn trông giống như nguyên bản cho dù bạn đang sử dụng thiết bị nào. Tôi nghĩ điều này có sự cân bằng vì giao diện người dùng của bạn không phải lúc nào cũng nhất quán trên các nền tảng. Ví dụ: trên iOS, các nút này lớn hơn một chút, có nghĩa là giao diện người dùng của bạn sẽ trông khác nhau trên cả hai nền tảng. Điều này lúc đầu khá khó chịu, nhưng theo thời gian, bạn sẽ tìm hiểu những điểm kỳ lạ của từng thành phần và chúng trông như thế nào trên mỗi nền tảng, và sau đó làm việc với chúng dễ dàng hơn nhiều.

Xem thêm: What Is A Directory Traversal Là Gì ? Directory Traversal Attack Là Gì

Tôi cũng sẽ lưu ý rằng các thành phần Ionic này là chung, vì vậy chúng có thể được sử dụng kết hợp với React, Angular, Vue hoặc thậm chí không có framework nào cả . Điều này rất mạnh mẽ vì nó có nghĩa là bạn cũng sẽ không bị khóa vào khung giao diện người dùng nếu bạn chọn công nghệ này. Theo tôi, đây là một lợi ích lớn so với những thứ như React-Native, vì nó chứng minh công nghệ trong tương lai tốt hơn nhiều.

Phản ứng

React là khung công tác web phổ biến nhất, vượt lên trên mọi góc cạnh với lợi nhuận lớn hơn mỗi ngày. Lần đầu tiên tôi bắt đầu ghép nối Ionic + React vào năm 2019 trong vòng một tháng kể từ khi Ionic được hỗ trợ trên React. Thông qua quá trình này, mọi thứ đã trở nên ổn định hơn nhiều, vì vậy bây giờ tôi cảm thấy thoải mái khi đề xuất hai công nghệ cùng nhau.

Tụ điện

Mã React là những gì sẽ được hiển thị trong “WebView” và nó sẽ sử dụng các thành phần Ionic để bắt chước giao diện của các thành phần gốc. Sau đó, Capacitor xuất hiện và đóng vai trò là “bước xây dựng” sẽ lấy mã web đó, gói nó vào một ứng dụng và sau đó đưa nó vào Android Studio hoặc XCode để bạn định cấu hình thêm.

Firebase Cloud Messager

Về phần phụ trợ, tôi thích sử dụng FCM vì nó cung cấp cho bạn khả năng đa nền tảng giống nhau, ngoại trừ lần này là với thông báo đẩy của bạn. Nếu bạn chưa biết, cả android và apple đều có các dịch vụ thông báo đẩy riêng. Nếu bạn muốn gửi thông báo cho tất cả người dùng của mình, bạn phải viết lệnh gọi API hai lần để tải thông báo đó lên cho cả hai dịch vụ. Sử dụng một cái gì đó như FCM, bạn có thể có 1 API duy nhất để tải thông báo đẩy lên và sau đó chúng sẽ được chuyển tiếp đến tất cả các dịch vụ thông báo khác nhau cho các nền tảng mà người dùng của bạn đang sử dụng.

Ionic Appflow cho CI / CD

Tôi thừa nhận rằng, tôi chưa sử dụng Ionic Appflow, nhưng phải nói rằng công nghệ này trông rất hấp dẫn. Một trong những tính năng thực sự thú vị đối với tôi là ý tưởng “triển khai trực tiếp” của họ. Về cơ bản, ý tưởng ở đây là cho phép bạn đẩy mã web mới vào các ứng dụng dành cho thiết bị di động của mình mà không cần phải đẩy bản phát hành mới ra cửa hàng. Điều này có nghĩa là bạn có thể sử dụng nền tảng CI / CD của họ để chỉ đẩy mã giao diện người dùng mới một lần và để nó tự động cập nhật trang web và ứng dụng của mọi người dùng. Đó là sức mạnh điên cuồng nếu bạn nghĩ về nó! Bạn không chỉ phải viết mã một lần mà còn phải triển khai nó một lần nữa.

Nếu AppFlow miễn phí, tôi sẽ dùng thử ngay bây giờ vì đó là một dịch vụ siêu hấp dẫn cho các nhóm phát triển nhỏ.

Phần kết luận

Cuối cùng, có thể có khá nhiều sự cân bằng bạn sẽ phải thực hiện với một giải pháp đa nền tảng, tuy nhiên, những nhược điểm có thể được giảm thiểu bằng cách chọn một công nghệ phù hợp. Sử dụng một thứ gì đó như tụ điện sẽ cung cấp cho bạn một cách thực sự chắc chắn để nhúng các ứng dụng web của bạn vào mã gốc. Nhưng hãy kết hợp điều đó với nền tảng CI / CD đa nền tảng như AppFlow và bộ giao diện người dùng đẹp mắt như Ionic và bạn có thể kết thúc với một ứng dụng vững chắc. Thưởng thức!


*

Startupper một công cụ để khởi động các thiết bị của công ty

Trải nghiệm của nhà phát triển cho đến nay là một trong những từ thông dụng được sử dụng nhiều nhất trong năm nay, nhưng tôi chia sẻ ý tưởng và ý nghĩa đằng sau nó rất nhiều, đến mức tại Santagostino (công ty nơi tôi làm việc hiện nay), tôi đã phát triển một công cụ nhỏ cho công ty khởi nghiệp. của những người trong bộ phận CNTT / THIẾT BỊ. Công cụ này, được gọi là “startupper” được lấy cảm hứng từ sách chơi SparkFabrik mà tôi rất cảm ơn.