小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

全棧移動(dòng)開(kāi)發(fā)入門(mén)

 看見(jiàn)就非常 2020-05-25

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

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

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

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

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

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

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

這包括:

  • 設(shè)備界面外觀

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

IDE、CLI 和包裝器

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

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

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

核心軟件IDECLI操作系統(tǒng)語(yǔ)言
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

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

依賴(lài)項(xiàng)簡(jiǎn)介

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

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

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

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

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

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

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

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

點(diǎn)擊查看大圖

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

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

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

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

參考資源

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

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多