日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

全棧移動(dòng)開發(fā)入門

 看見就非常 2020-05-25

本文探討了全棧移動(dòng)開發(fā)環(huán)境的功能,并介紹了若干個(gè)核心的原生和混合移動(dòng)備選方案以及影響每個(gè)平臺(tái)選擇的因素。

首先,我們來弄清楚一些概念??吹?em>全棧一詞時(shí),我們很容易聯(lián)想到一個(gè)人幾乎樣樣精通,既具備系統(tǒng)管理員的技能,也具備數(shù)據(jù)庫工程師的技能。在某些特殊情況下,可能剛好需要全棧開發(fā)者。通常全棧開發(fā)者既熟悉前端框架、后端數(shù)據(jù)庫和服務(wù)的業(yè)務(wù)邏輯和流程,也能自動(dòng)創(chuàng)建、編輯和配置應(yīng)用程序和數(shù)據(jù)。他們制作和編輯媒體的能力相對較弱,因?yàn)槊襟w需要的是展示和交互。

全棧移動(dòng)應(yīng)用程序開發(fā)是銜接內(nèi)容與技術(shù)的紐帶?,F(xiàn)在,全球有數(shù)十億人使用智能手機(jī)和平板電腦,這些智能手機(jī)和平板電腦便構(gòu)成了全棧應(yīng)用程序的客戶端。服務(wù)器端通常是微服務(wù)、認(rèn)證服務(wù)器和 CDN 資產(chǎn)(每次打開應(yīng)用程序時(shí)在運(yùn)行時(shí)進(jìn)行編譯)的分布式集合。這兩者是通過流程來銜接的,這些流程包括測試、持續(xù)集成和持續(xù)部署、擴(kuò)展和容器化以及專有設(shè)備要求。

設(shè)備正在決定媒體的展示和使用方式。在許多情況下,與傳統(tǒng)電視和廣播相比,人們更傾向在手持式設(shè)備上觀看、閱讀或收聽新聞與娛樂資訊。電視本身就是開發(fā)者的設(shè)備目標(biāo)。

作為技術(shù)的紐帶,移動(dòng)設(shè)備推動(dòng)了 Apple、Google、Facebook 和 Microsoft? 等大型跨國公司的競爭范式。這些商業(yè)巨頭都對搶占設(shè)備受眾有極大的興趣。雖然 Apple 和 Google 分別代表 iOS 和 Android 兩大品牌陣營,但您可以使用后兩者公司的 React Native(Facebook)和 Xamarin(Microsoft?)產(chǎn)品來開發(fā)在設(shè)計(jì)和功能上越來越本土化的應(yīng)用程序。許多科技公司正在竭盡全力地在這個(gè)市場中保持持續(xù)增長,并且正在積極尋找最先進(jìn)且最有前景的技術(shù),幫助實(shí)現(xiàn)其提供最佳服務(wù)的愿景。

全棧移動(dòng)開發(fā)

要成為全棧移動(dòng)開發(fā)者,您需要對應(yīng)用開發(fā)的全局有一個(gè)了解。

這包括:

  • 設(shè)備界面外觀

  • 可訪問來獲得內(nèi)容和進(jìn)行數(shù)據(jù)處理的服務(wù)器和容器

  • 開發(fā)流程,如測試和調(diào)試

  • 在許多備選方案中選擇解決方案的理由和權(quán)衡因素

如果必須要選擇全棧開發(fā)者具備的最可取特質(zhì),那么將會(huì)是領(lǐng)導(dǎo)項(xiàng)目并有效溝通易于理解的流程的能力。全棧開發(fā)者必須能夠設(shè)置代碼庫、項(xiàng)目管理工具(例如 Jira)、通信應(yīng)用(例如 Slack),并且必須熟悉各種客戶機(jī)框架、數(shù)據(jù)庫、API 和微服務(wù)??偠灾?,他們必須能夠支持和影響項(xiàng)目管理決策。全棧開發(fā)者除了具備客戶機(jī)和服務(wù)器堆棧能力外,還與應(yīng)用程序的架構(gòu)師或項(xiàng)目經(jīng)理共享許多特質(zhì)。

全棧移動(dòng)開發(fā)的客戶端

從廣義上講,客戶端可分為原生和混合兩座孤島。通常,當(dāng)需要更高的性能時(shí),您希望盡可能都是原生客戶端?;旌祥_發(fā)的優(yōu)勢往往來自使用熟悉的 Web 工具和構(gòu)造。開發(fā)者通常需要選擇是從頭開始學(xué)習(xí)并使用一種語言,例如 Swift 或 Kotlin,還是沿用已經(jīng)熟悉的語言(例如 JavaScript 和 CSS)?;旌祥_發(fā)的另一個(gè)優(yōu)勢是,可能會(huì)對多臺(tái)設(shè)備使用同一組組件和樣式。每臺(tái)設(shè)備都有自己特有的外觀品質(zhì),但與原生應(yīng)用程序不同,這些品質(zhì)可能來自同一個(gè)來源。

閱讀"在原生和跨平臺(tái)移動(dòng)前端編程框架之間進(jìn)行選擇(英文)",以深入了解全棧移動(dòng)開發(fā)的客戶端。

全棧移動(dòng)開發(fā)的服務(wù)器端

服務(wù)器端的移動(dòng)應(yīng)用開發(fā)很大程度上類似于桌面或 Web 服務(wù)器應(yīng)用程序開發(fā)。不同之處包括:在設(shè)備上安裝新應(yīng)用程序(即 Apple Store 或 Google Play)的方式受限制;服務(wù)器端功能都綁定到同一操作系統(tǒng),以及可使用特定服務(wù)(例如 Meteor 或 Ionic)更新設(shè)備應(yīng)用程序的方式有細(xì)微差別。相似之處包括:通過 API 調(diào)用與數(shù)據(jù)交互的方式;通過版本控制更新內(nèi)容,以及確??蓴U(kuò)展性和持久性。在整個(gè)項(xiàng)目中,全棧開發(fā)者通常會(huì)研究如何在構(gòu)成應(yīng)用程序服務(wù)器端的各個(gè)微服務(wù)層之間實(shí)現(xiàn)處理負(fù)載、緩存負(fù)載和其他任務(wù)負(fù)載的最佳平衡。

請閱讀"使用移動(dòng)后端技術(shù)開發(fā)全棧移動(dòng)應(yīng)用(英文)",以深入了解全棧移動(dòng)開發(fā)的服務(wù)器端。

全棧移動(dòng)開發(fā)環(huán)境的特性

全棧移動(dòng)應(yīng)用開發(fā)者可能需要確保其生產(chǎn)環(huán)境具備以下特性。與后端或前端問題相比,全棧開發(fā)者可能更熟悉這些特性。

  • 自動(dòng)化:我們通常是通過持續(xù)集成和持續(xù)部署之類的術(shù)語來了解"自動(dòng)化"概念。對于當(dāng)前的移動(dòng)應(yīng)用開發(fā)者而言,使更新不會(huì)破壞應(yīng)用程序或使應(yīng)用程序脫機(jī),這一點(diǎn)至關(guān)重要。

  • 可擴(kuò)展性:從設(shè)計(jì)角度講,可擴(kuò)展性與自動(dòng)化密切相關(guān),也是處理部署的。這包括容器化(例如 Docker)以及數(shù)據(jù)庫和磁盤冗余,可確??煽啃圆⒎乐箶?shù)據(jù)丟失。如果未正確設(shè)計(jì)可擴(kuò)展性,那么開發(fā)者的前期工作越成功,后期的擴(kuò)展工作就越困難。CDN、緩存以及在網(wǎng)絡(luò)中添加和移除區(qū)塊的能力都會(huì)導(dǎo)致這一現(xiàn)象。

  • 反饋環(huán):可以在多個(gè)位置提供用戶反饋,以便為開發(fā)者提供指導(dǎo)。這可以包括測試框架和構(gòu)建機(jī)制,也可以包括通過界面或會(huì)話跟蹤來獲取用戶反饋,以了解用戶通常使用應(yīng)用程序的方式或者用戶無法使用哪些應(yīng)用程序功能。

  • 輔助功能選項(xiàng)、國際化和本地化:利用個(gè)人增強(qiáng)功能(例如,輔助功能選項(xiàng)、語言和本地化),可以接觸到以前被忽視的群體,從而為更廣泛的受眾提升應(yīng)用程序的價(jià)值。如果使用變量代替文本,那么實(shí)現(xiàn)本地化和國際化就毫無意義。輔助功能選項(xiàng)尚未在 Web 內(nèi)容設(shè)計(jì)中扎根。例如,與 Internet Explorer 用戶數(shù)相比,有更多人可以使用輔助功能。當(dāng)考慮服務(wù)難度不大的市場規(guī)模時(shí),移動(dòng)開發(fā)者應(yīng)承擔(dān)起責(zé)任并努力解決這些問題。通過平衡對開發(fā)時(shí)間的影響,可以實(shí)現(xiàn)每一個(gè)輔助功能的優(yōu)勢。

選擇移動(dòng)開發(fā)框架

選擇適當(dāng)?shù)墓ぞ呓M合來構(gòu)建移動(dòng)應(yīng)用取決于多個(gè)條件,包括:

  • 工具的易用性及其生態(tài)系統(tǒng)

  • 與設(shè)備相符的內(nèi)容外觀,包括字體和圖

  • 用戶體驗(yàn)和激贊效果

  • 與第三方 API 和網(wǎng)絡(luò)服務(wù)的集成

  • 社區(qū)支持:通過 fork、star、點(diǎn)贊和其他其他評價(jià)機(jī)制判斷

  • 文檔和當(dāng)前示例

  • 對于先前已知代碼和構(gòu)造的熟悉程度(例如,熟悉 React 或 ReactNative 框架)

競爭需求影響軟件選擇的程度取決于多種因素,包括時(shí)間、預(yù)算和人群目標(biāo)。通常都沒有最佳答案,但是出于某些原因,對于特定的應(yīng)用程序和目標(biāo)受眾來說,某些方法比其他方法更有意義。 表 1 展示移動(dòng)應(yīng)用程序開發(fā)的六種常用工具。

核心軟件iOSAndroidWeb優(yōu)點(diǎn)缺點(diǎn)
XCodeX

用于開發(fā) iOS 和 MacOS 應(yīng)用程序的唯一方法。大型且專有;強(qiáng)制開發(fā)者包含它及其 IDE 選項(xiàng)。
Android Studio
X
Android Simulator;大型插件社區(qū)。JetBrains 工具(非 Eclipse)或其他 IDE(面向熟悉這些 Java? 工具的用戶)。
Apache CordovaXXX將 WebView 直接移植到原生實(shí)現(xiàn)。在線文章和源碼不一定是最新的。
XamarinXX
Visual Studio 和 C#;為 Microsoft 開發(fā)者所熟悉。Microsoft 代碼和服務(wù)偏差。
React NativeXX
大型社區(qū)和生態(tài)系統(tǒng)。混合應(yīng)用程序的速度不如原生應(yīng)用程序。
IonicXXX區(qū)分免費(fèi)版和專業(yè)版;專業(yè)版具有包含持續(xù)集成和測試的服務(wù)器端功能。混合應(yīng)用程序的速度不如原生應(yīng)用程序;大小不如社區(qū);Angular 偏差。

乍看起來,您已經(jīng)可以確定,如果要包含 iOS 目標(biāo)群體,那么您需要 Apple ID 以及關(guān)聯(lián)帳戶并安裝 XCode。對于 Android,雖然此處不明確,但是通過 Android Studio 可最輕松地訪問設(shè)備模擬器。這通常表明最快速的應(yīng)用是采用 Apple 或 Google 支持的軟件所編寫。其他四種工具的較大優(yōu)勢來自將常用代碼集成到原生應(yīng)用中,這意味著 Web 開發(fā)者會(huì)由于生產(chǎn)期間的學(xué)習(xí)曲線損失較少時(shí)間。

IDE、CLI 和包裝器

集成開發(fā)環(huán)境(IDE)的普及時(shí)間超過因特網(wǎng)。命令行界面(CLI)雖然早于 IDE,但是通過開源經(jīng)歷了重生,接納 CLI 作為如今創(chuàng)建應(yīng)用的最典型方式。移動(dòng)應(yīng)用程序引入了包裝器技術(shù)的概念:類似 Web頁面上的某個(gè)插件,與其周圍的瀏覽器包裝器進(jìn)行通信。

例如,在 React 中構(gòu)建應(yīng)用程序時(shí),在發(fā)布該應(yīng)用程序之前會(huì)進(jìn)行轉(zhuǎn)換。在該過程中,代碼按照 Webpack 配置文件中的定義,轉(zhuǎn)換為在所有目標(biāo)設(shè)備和瀏覽器中都適用的內(nèi)容。如果在設(shè)備的包裝技術(shù)中融入此過程,那么將涉及類似于將 Babel 或 Typescript 執(zhí)行的轉(zhuǎn)換應(yīng)用于客戶機(jī)應(yīng)用程序整體的操作。包裝器是與其自身(其父代)以及其子代通信的 shell(命令解析器)。

幾種經(jīng)過審核的軟件包括 IDE、版本控制、部署和 CLI 配套軟件;其他軟件需要包裝技術(shù)才能編輯移動(dòng)應(yīng)用。例如,Ionic 通常在 Cordova 包裝器中進(jìn)行編寫,Xamarin 和 React 也可以如此。在 Mac 上使用 XCode 編寫 iOS 非常重要。它是用于為 Apple 設(shè)備開發(fā)原生應(yīng)用程序的軟件的唯一必備項(xiàng)。Apache Cordova 因?yàn)槟軌驅(qū)С龅綖g覽器而脫穎而出。對于希望具有單個(gè)適用于移動(dòng) Web 和設(shè)備應(yīng)用程序的代碼庫的人員而言,Apache Cordova 由于針對大多數(shù)平臺(tái)而保持位列首選。請參閱表 2 以獲取每個(gè)移動(dòng)開發(fā)框架的 IDE、CLI、操作系統(tǒng)和語言比較。

核心軟件IDECLI操作系統(tǒng)語言
XCodeXCodexcodebuildOSXSwift、ObjectiveC
Android StudioAndroid StudiogradlewOSX、Linux?、Windows?Java、Kotlin
Apache CordovaPhoneGap、Builder 等cordovaOSX、Linux、WindowsNode、JavaScript
XamarinVisual Studiomsbuild 等Windows、OSXC#、F#、VisualBasic
React NativeAtom、Sublime 等react-native、expo 等OSX、Linux、WindowsNode、JavaScript
IonicVisual Studio、Atom 等ionicOSX、Linux、WindowsNode、TypeScript、JavaScript

在編寫本文時(shí)(2018 年底),Swift 4 是用于編寫 XCode iOS 應(yīng)用程序的最新且最常用的語言。對于 Android Studio,Kotlin 語言逐漸超越了 Java 語言。在其余四種工具中,Xamarin 在 C# 和 .net 環(huán)境中獨(dú)立使用,而其他工具更適合混合開發(fā)平臺(tái)。Ionic 是從 Angular 根構(gòu)建的,React Native 是從 React 根構(gòu)建的,而 Apache Cordova 是所有混合內(nèi)容的開源不可知中心。它最接近于可以將任何 Web 內(nèi)容轉(zhuǎn)換為特定應(yīng)用程序的組中的瑞士軍刀。

依賴項(xiàng)簡介

將具有大量依賴項(xiàng)的開源應(yīng)用程序保持穩(wěn)定可能令人望而生畏。對于許多應(yīng)用程序,yarn 已將 npm 替換為最常用的軟件包管理器來對其進(jìn)行處理。二者現(xiàn)在均會(huì)生成包含依賴項(xiàng)的版本號的 .lock 文件。.lock 文件將特定版本的庫與項(xiàng)目關(guān)聯(lián),在一個(gè)或多個(gè)庫合作伙伴可能不再支持一個(gè)或多個(gè)依賴項(xiàng)后,使得項(xiàng)目在未來某個(gè)時(shí)間點(diǎn)能夠重新編譯。

在線示例通常會(huì)混用多種技術(shù),并且很難找到可以精確滿足您需求的現(xiàn)有堆棧。通過 StackShare和其他站點(diǎn),您可以了解其他人員使用的技術(shù)堆棧,比較使用情況,并且尋求與技術(shù)堆棧盡可能接近的組合。每次發(fā)現(xiàn)與您所查找接近的技術(shù)堆棧,就需要檢查庫的日期,并確保使用盡可能最新的版本。這可能要求您編輯已經(jīng)存在但可能過期的堆棧。

開發(fā)者和貢獻(xiàn)者社區(qū)

選擇適當(dāng)?shù)能浖M(jìn)行移動(dòng)應(yīng)用開發(fā)時(shí)要考慮的因素包括開發(fā)者和貢獻(xiàn)者社區(qū)的規(guī)模。技術(shù)能捕獲多少心智?支持的可用性如何,訪問或使用它是否有付費(fèi)? 雖然一項(xiàng)技術(shù)在特定時(shí)刻聲稱得倒大量支持,但其相對于競爭對手的長期表現(xiàn)如何?

5 年前,最重要的框架是 Angular。如今,Angular 已演變?yōu)?Ionic,并且可以包含在 Apache Cordova 包裝的應(yīng)用程序中。對于 Xamarin 提供的所有功能,其核心產(chǎn)品基于Microsoft 語言,這是許多開發(fā)者仍在追隨而同樣數(shù)量的開發(fā)者正竭力避免的語言。React 和 React Native 是當(dāng)今最流行的客戶端框架,但是這是一個(gè)歷史悠久的市場,眾所周知,它經(jīng)常會(huì)發(fā)生變化。

圖 1 來自 ,這是一個(gè)可用于在多條軸線上(多維度)對技術(shù)堆棧進(jìn)行比較的站點(diǎn),捕獲于 2018 年 5 月。您可以使用 來幫助制定哪種移動(dòng)開發(fā)框架適合您的解決方案的決策。

圖 1. 比較技術(shù)堆棧

對比 6 個(gè)技術(shù)棧

點(diǎn)擊查看大圖

最后,Microsoft、Google 和 Apple 每年都會(huì)召開開發(fā)者大會(huì),他們在會(huì)上發(fā)布新產(chǎn)品并演示產(chǎn)品路線圖。2018 年,發(fā)布了適用于移動(dòng)應(yīng)用的 AI、XR 和 IoT 功能。簡而言之,在移動(dòng)開發(fā)中,事物不會(huì)一成不變,因此,請通過在開發(fā)過程中執(zhí)行搜索來始終確保信息為最新狀態(tài)。

結(jié)束語及后續(xù)步驟

本文簡要介紹了用于開發(fā)全棧移動(dòng)應(yīng)用程序的一些最常用的工具(2018 年)。其中只是介紹了一些核心概念、注意事項(xiàng)、依賴項(xiàng)和生態(tài)系統(tǒng),并且將重點(diǎn)內(nèi)容留在后續(xù)文章和教程中進(jìn)行介紹。

以最有成效和完全受支持的方式混合生態(tài)系統(tǒng)和依賴項(xiàng)或工具和技術(shù)是一個(gè)永無止境的過程。目前有效的內(nèi)容在不遠(yuǎn)的將來不一定有效。全棧移動(dòng)開發(fā)者總是能欣然接受各種變化,因?yàn)槲ㄒ挥篮悴蛔兊氖亲兓?/p>

參考資源

本文翻譯自:Getting started with full-stack mobile development(2019-07-02)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多