1. 程式人生 > >NativeScript官方書籍:1.為什麽選擇nativescript

NativeScript官方書籍:1.為什麽選擇nativescript

轉換成 androi 谷歌 ges 將在 模糊 快速創建 可能 class

1.為什麽選擇nativescript

本章介紹

  • 什麽是NativeScript
  • nativescript對於移動開發世界意味著什麽
  • NativeScript工作原理

在早期的移動應用程序(前iPhone)中,在一次編碼多平臺部署方法論上,沒有過多筆墨。開發人員只是想盡快將應用程序發布到到蘋果或谷歌商店裏。如果這意味著他們的應用程序不支持這兩個平臺,也是一個合理的犧牲資源的理由。

及至今日:移動世界在不斷變化,使得跟上最新設備越來越困難。當開發人員創建應用程序時,他們需要接觸到盡可能多的受眾:僅專註一個平臺就不再是一種選擇。應用程序需要支持跨平臺和設備。為了跟上不斷變化的環境,開發人員高度重視任何使他們能夠簡化移動應用程序開發過程的技術。

今天,開發人員在編寫一套代碼面向多個平臺的應用程序方面,可以有多個選擇。NativeScript是其中的一個選擇,但不是唯一的一個。你可能聽說過其他像PhoneGap,Xamarin,React Native。這些框架中的每一個都能支持編寫一次代碼,同時部署到Android和iOS中,但我們不是來討論一個框架相對於另一個框架的優點的。相反,我們希望您學習到如何使用您可能已經擁有的技術棧,編寫專業跨平臺的移動應用程序。如果你是一個初學者,知道用HTML,JavaScript,和CSS構建簡單的web程序,或經驗豐富的專家,你就可以用NativeScript寫一個手機應用程序。

當你讀這本書時,我們會告訴你如何使用nativescript提供的架構化的方案,用單一的代碼庫,編寫跨平臺的應用程序。當你完成後,使用你選擇的技術:HTML, JavaScript和CSS 或者Angular, TypeScript和CSS,你會擁有創建自己的Android和iOS手機應用程序的技術能力。

  註意:如果你不熟悉Angular或TypeScript,也OK。這本書的最後3章致力於教你它們是什麽,以及它們如何被用來創建移動應用程序。

我們已經與nativescript初學者一起工作,許多人想直接跳到應用nativescript加Angular。如果這聽起來和你一樣,那就去做,但是要謹慎行事。如果你不熟悉Angular,同時學習NativeScript和Angular可能感到混淆,因為什麽是NativeScript,什麽是Angular之間的界限有些模糊。因此,我們建議您先了解樸素的(plain-old-vanilla) nativescript。按照我們在本書的前3部分的練習,然後跳到nativescript加Angular。

1.1 Nativescript介紹

Nativescript是一個為iOS和Android構建跨平臺移動應用程序的開源框架,它由Telerik開發和維護。Nativescript在許多方面不同於其他的移動框架,最大的不同是它是一個可以用單一的代碼庫創建原生移動應用程序的跨平臺的框架,此外,Nativescript提供了很多功能,可以很容易上手,並且利用你可能已經有了的技術棧:

  • 利用你現有對HTML,JavaScript,CSS的了解(你不需要知道Objective C、Swift、或java)
  • 你所有的代碼只編寫一次
  • 訪問Android和iOS平臺的原生API
  • 一個幫你創建應用程序架構的固定方式
  • 與Angular原生集成(但不是必須的選擇)

有時學習一種新語言是進入新世界的障礙。當創建nativescript應用程序時,你會利用你現有的創建HTML應用程序的知識,來快速創建一個針對多個平臺(Android和iOS)的應用程序。因為你已經擁有了這些技能,你會發現創建nativescript應用程序可以很快。甚至更好的是,你不必學習Objective C、Swift、或java。

1.1.1 Nativescript應用程序是如何被編寫的

Nativescript應用程序是用JavaScript、XML和CSS組合編寫的,如圖1.1顯示。

技術分享

  圖1.1 JavaScript,CSS和XML的組合創建Nativescript應用程序。

當你寫nativescript應用程序,你的代碼有3個部分:JavaScript,XML和CSS。JavaScript組件運行業務邏輯、訪問數據或控制應用程序的流程。XML部分定義了用戶界面(UI),CSS用於樣式化UI,非常類似於HTML應用程序。

Nativescript的應用程序結構和代碼類似於HTML應用程序,但僅止於此。Nativescript在跨平臺的移動應用程序的世界是獨特的,因為它允許你寫你的UI(XML)代碼一次。在運行時,UI代碼在應用程序中呈現原生UI元素。例如,在iOS UI元素呈現為iOS原生按鈕、下拉菜單、列表等。同樣地,Android UI元素呈現為原生Android組件。

圖2.1顯示的是渲染一個原生iOS按鈕,用nativescript編寫。

技術分享

  圖1.2用nativescript編寫的iOS應用程序的原生按鈕。

你會註意到,它看起來就像是一個iOS按鈕。這是因為它就一個IOS按鈕。所有的nativescript UI元素都原生的iOS和AndroidUI元素。

在其他跨平臺框架中,您可能需要花時間為特定平臺編寫特定的視圖層代碼。但是,只寫你的UI層代碼一次並且並把它渲染為原生的UI組件的能力,是把nativescript和其他框架區分開來的一個重要特點。

Nativescript的另一個獨特的特點是,你可以訪問原生API。

  註意:前面提到的幾個框架也允許您訪問本機API。但是,正如你將在本書學習到的,nativescript運行和訪問原生Android和iOSAPI的機制是非常不同的。即使你用Javascript寫nativescript 代碼,你也可以訪問每一個你的應用程序運行設備上的Native API函數,特性,和硬件。

1.2這本書你會學到什麽

此時,你開始意識到用那些技術來寫nativescript應用程序(HTML,JavaScript,CSS)。不是很多,對吧?如果你已經具備了這些技能,你可能想知道為什麽你應該繼續閱讀。在這本書中,我們將教你如何利用這些技能,並應用它們來創建專業化的移動應用程序。
我們指的是專業化是什麽意思?專業化對不同的人意味著不同的東西。你可能認為準時上班是很專業的,而你的朋友可能認為專業化意味著穿西裝參加面試。

  註意:對我們來說,專業化意味著為應用程序創建一個單一的、可維護的代碼庫,以便隨著時間的推移它能夠繼續成長。

創建一個專業的應用程序,也意味著利用nativescript的特性,讓你的應用程序看起來和用起來都像是在它運行平臺上的原生應用程序。

當你學習創造專業的應用程序時,你會發現nativescript應用程序是如何構建的,以及如何訪問原生硬件組件,如相機、GPS和位置服務。

但是,在我們直接跳到代碼部分之前,我們看一下nativescript的透視圖是很重要的,這讓你了解它是如何工作的。

1.3對移動開發nativescript意味著什麽

回想起15年(如果可以),當你隨身攜帶一個Windows 6手機或淘到了三星最新的Blackjack技術分享

:這是在Android和iOS之前的。那時只有較少的平臺和設備。今天,每月都有新設備問世。由於這種增長速度和多樣性,開發社區已經開始尋找更有效的方法來編寫針對所有平臺的移動應用程序。

1.3.1 移動應用程序的不同類型

移動應用程序分為四大類:原生的、混合的、交叉編譯的和即時編譯的(JIT)(表1.1)。

技術分享

  表1.1不同的移動應用程序類型及其流行框架

  定義(JIT)即時編譯應用程序是在運行時編譯的應用程序,而不是在應用程序執行之前編譯的應用程序。例如,在即時應用程序中,您的源代碼直到最後一分鐘,或在執行每個語句之前,都沒有編譯成本地機器代碼。

不包括原生應用程序,表1.1中的其他三種應用程序的目標是相同的:編寫應用程序代碼一次,並將其部署到多個平臺(這是人們在跨平臺時說的意思)。
盡管上面列出的跨平臺框架取得了類似的結果,但它們以多種方式實現了這一目標。圖1.3顯示了不同類型的移動應用程序之間的差異以及它們在設備上運行的方式。

技術分享

  圖1.3不同類型的移動應用程序如何在設備上運行 在圖1.3中,您可以看到每種類型的移動應用程序如何使用不同的機制在移動設備上運行。混合移動應用程序本質上是在Web瀏覽器中運行的網頁。交叉編譯的應用程序被編譯後,將它們轉換成本地應用程序。最後,JIT編譯的應用程序(如nativescript),在虛擬機內部運行。對於nativescript應用程序,你的代碼在一個JavaScript虛擬機內部運行。   定義: JavaScript虛擬機是一個運行JavaScript代碼的軟件。 如果你是一個.NET或java開發人員,你已經熟悉了代碼運行在虛擬機中, 因為.net和java都用虛擬化的方式運行代碼。NativeScript的工作方式類似。

1.3.2 Nativescript為什麽重要

在JIT編譯之外,nativescript與其他移動應用程序框架相比,還有其它的多種差異。我們認為最顯著的區別是,您能夠用一個代碼庫編寫真正的原生應用程序,並將其部署到Android和iOS中,而無需更改代碼。

在過去,我們已經其他的移動應用程序框架打過交道,在我們看來,NativeScript是獨特的。在其他的框架中,我們不得不寫了很多墊片(shim)代碼。這個墊片(shim)代碼就像一塊木頭,用來在廚房裏墊高爐子或固定門框。以此類推,假設你正在安裝一個新的門和門框。大多數門都是按標準寬度、高度和深度建造的,而且幾乎正確。但在所有情況下,你不得不在這裏加一個小墊片和在那加一個小墊片,以使它正好合適。這就是你在其他框架中編寫代碼的樣子:在Android版本的應用程序中添加一點UI代碼,使其在Android版本中顯示正確;並再增加一些UI代碼,使其在iOS上看起來更合適。

  註意: 等一下,我們不想粉飾NativeScript是完美的,因為沒有什麽是完美的。但是,NativeScript是引人註目的,而在我們看來,要求墊片(shim)數量最少。事實上,這些墊片(shim)是如此有限,在寫一個行業應用程序時,你可能永遠不會遇到這種需求。當你遇到了,還有大量的nativescript專家在https://nativescript.org準備好了並且願意幫你.

快速發布到市場上

那麽,這都意味著:減少墊片(shim)代碼,編寫一次,到處部署,等等。無論你是一個企業,一個獨立的開發人員,還是一個休閑愛好者,你都不想浪費你的時間。而且,這些東西(更少的墊片(shim)代碼,編寫一次,到處部署)意味著你會花更少的時間來開發你的應用程序,讓你有更多的時間來創新,和在更短的時間內發布更多的功能。

1.3.3 什麽類型的應用程序可以用NativeScript創建

現在關於NativeScript的工作原理,你知道的多一點了,我們認為您知道可以用它來寫哪些移動應用程序的類型,也是很重要的。你還記得,nativescript應用程序直接運行在設備上,並且被應用程序內運行的JavaScript虛擬機解釋(interpreted)。這意味著nativescript程序不被限制訪問本地設備或硬件API,因此任何應用程序都可以寫成一個nativescript 應用程序。

  警告: 你能做到並不意味著你應該這樣做。

讓我們開始看看,哪些類型的程序,你不應該用NativeScript編寫。

圖形密集型遊戲(graphic-intensive)

讓我們開始澄清:不要用NativeScript寫圖形密集型遊戲。
想象一下,你正在開發下一個大型手機遊戲:Floppy Bunny技術分享,並且Floppy Bunny需要大量的圖形和計算能力來渲染其強烈的3D圖形。這時候NativeScript就表現不佳了,為創建高性能的3D遊戲,可能有更好的平臺。

畢竟,NativeScript應用程序運行在一個JavaScript虛擬機內,所以有一個額外的,盡管很小,你的應用程序和裸露的金屬(the bare metal)之間的抽象層。為了從設備中榨出每一點性能,使Floppy Bunny獲得巨大成功,您應該考慮編寫原生Android或iOS應用程序。

line-of-business和消費者應用

如果你因為我們破壞了你寫Floppy Bunny的希望而情緒低落,別擔心。還有其他類型的,NativeScript非常適合的應用程序!
不像我們的遊戲的例子,如果你正在開發一個專業應用程序如新聞種子(news feed),一個網站的配套應用程序,社交媒體應用程序,甚至是一個用來控制家中所有的智能設備應用程序,nativescript是一個完美的選擇!事實上,有各種各樣的已經橫跨幾十個行業的用nativescript寫的應用程序。看看這些應用程序的展示:https://www.nativescript.org/showcases.

1.4 NativeScript工作原理

1.5 總結

NativeScript官方書籍:1.為什麽選擇nativescript