編寫手機(jī)App,用什么語言?

創(chuàng)新互聯(lián)公司是一家專業(yè)的成都網(wǎng)站建設(shè)公司,我們專注網(wǎng)站建設(shè)、成都做網(wǎng)站、網(wǎng)絡(luò)營銷、企業(yè)網(wǎng)站建設(shè),友情鏈接,廣告投放為企業(yè)客戶提供一站式建站解決方案,能帶給客戶新的互聯(lián)網(wǎng)理念。從網(wǎng)站結(jié)構(gòu)的規(guī)劃UI設(shè)計到用戶體驗提高,創(chuàng)新互聯(lián)力求做到盡善盡美。
從簡單到復(fù)雜,可以分三級:
簡單方案:HTML5
其實就是把網(wǎng)頁封裝成App。編程語言就是網(wǎng)頁三件套:HTML+CSS+Javascript
有多種工具和框架,如Cordova, uni等等。
這種方式實現(xiàn)“App”最容易,且跨平臺,對于iOS和Android做一套就行了。代價是功能弱,性能低,換句話說就是“卡”。
中等方案:原生跨平臺框架
這類方案在iOS和Android之上自行實現(xiàn)一套原生框架。通用的Flutter, ReactNative都是流行的原生跨平臺框架。適用于 游戲 的Cocos2D,Corona SDK也可以算在這一級里。
這類方案實現(xiàn)App難度中等,因為跨平臺,一次開發(fā),iOS和Android都能運行。功能和性能也是中等,比不上原生App,但比HTML5的又好很多。
復(fù)雜方案:原生開發(fā)
直接在iOS和Android上各自開發(fā)一套原生App。
iOS可以使用Objective C或Swift。
Android可以使用Java或Kotlin。
還是來一個圖表吧,雖然簡單,卻很明了:
推薦用Flutter,簡單。
以前自己用android原生寫過7天酒店簽到程序,不過當(dāng)時的安卓還是比較難寫的,不像現(xiàn)在越來越容易上手。
Flutter
Flutter是一個由谷歌開發(fā)的開源移動應(yīng)用軟件開發(fā)工具包,用于為Android、iOS、 Windows、Mac、Linux、Google Fuchsia開發(fā)應(yīng)用。
Flutter應(yīng)用是使用Dart語言編寫的,雖然是新的一種語言,但是難度不算大,上網(wǎng)搜下相關(guān)教程學(xué)習(xí)下,應(yīng)該就能很快上手。
Flutter效果
這里是我上個月仿照教程弄的一個簡單APP,效果圖如下:
點擊"Next"就切換下一張,點擊"Pre"就切換前一張,點擊“Reset”就全部滑落下來。
我女兒最喜歡中間的Reset效果,哈哈。
希望這個答案能幫到你。
現(xiàn)在Flutter正式版已經(jīng)出來了,原生性能,安卓iOS多平臺支持,谷歌大廠背書,大家可以比較放心的學(xué)習(xí)。編程語言用的是Dart,可以看做是加了語法糖版本的Java,學(xué)習(xí)起來也比較容易,如果想做手機(jī)app,可以考慮使用它。
如果只是自己做著玩的話推薦用H5開發(fā),開發(fā)工具HBuilder或者HBuilderX。
先科普下什么是IOS和Android吧。
IOS只是操作系統(tǒng)而已,是蘋果的操作系統(tǒng)。
開發(fā)IOS上運行的APP的話,現(xiàn)在流行的語言是Object-C和Swift。
Android也是操作系統(tǒng),是谷歌基于Linux內(nèi)核開發(fā)出來的手機(jī)操作系統(tǒng)。
開發(fā)Android上運行的APP的話,現(xiàn)在流行的語言我覺得仍然還是JAVA。
如果想要真的做一款A(yù)PP的話,不僅僅會一門語言就夠了,涉及的東西比較多,如下是我給你的學(xué)習(xí)推薦路線。
學(xué)習(xí)路線:
1:先學(xué)習(xí)js,然后學(xué)習(xí)下html 、css。
學(xué)習(xí)這些可以上菜鳥教程或者W3School網(wǎng)站學(xué)習(xí)。
開發(fā)工具使用vscode或者Notepad++都可以的。
2:了解Mui常用組件(官網(wǎng):),
熟悉常用API(官網(wǎng):)。
3:服務(wù)端的開發(fā),要么用java開發(fā),要么用.net webapi開發(fā),推薦理由,java目前是主流,.net webapi簡單容易。
java 開發(fā)工具IntelliJ IDEA,.net 開發(fā)工具 vs。
4:數(shù)據(jù)存儲使用mysql。
補充說明:如果是想做專業(yè)開發(fā)APP的話還是建議用java開發(fā)客戶端,ios APP則用swift開發(fā)。
當(dāng)然現(xiàn)在為了一套代碼多個平臺,使用H5開發(fā)專業(yè)APP的也有。
會了就可以正式擼代碼實現(xiàn)自己簡單的APP了。
回答完畢,謝謝。我是只說代碼的大餅。
那當(dāng)然首選是h5套殼了。關(guān)于語言方面,我建議還是用PHP吧。隨著進(jìn)一步學(xué)習(xí),可以學(xué)習(xí)uinapp一鍵多端。H5、小程序、App、小程序支持多個平臺上架、微信抖音支付寶百度,希望可以幫助你
目前有三種app開發(fā)方式:原生app、混合app、webapp。
原生app:安卓需要java語言,ios需要 objec t-c,wp需要的.net語言。這種app用戶體驗最好,性能也是最好的,開發(fā)成本高,開發(fā)周期長,一款app需要開發(fā)多個語言版本;
混合app:需要h5,javascript,了解每個混合框架,比如appcan、hbulider、phonegap等等,以及封裝的中間件。這種開發(fā)方式的用戶體驗、性能沒有原生的好,但是他的開發(fā)周期短,開發(fā)成本低,對開發(fā)人員技能掌握比較高,開發(fā)一套程序可以兼容到多個設(shè)備上;
webapp:需要h5、javascript語言,不能調(diào)用底層設(shè)備,用戶體驗效果次之,開發(fā)簡單,開發(fā)成本低,開發(fā)周期短,可以兼容多個設(shè)備。
綜上所述三種開發(fā)各有優(yōu)缺點,要根據(jù)具體的項目需求來選擇適合自己的開發(fā)語言和開發(fā)場景。
uniapp了解下,多端應(yīng)用。app的話要考慮安卓和蘋果,但學(xué)了二種學(xué)習(xí)成本比較高。用uniapp就解決了。
現(xiàn)在中小型企業(yè)都在逐漸采用跨平臺開發(fā)的模式 效率高 成本低 作為個人更是開發(fā)不二的選擇 你問的iOS和安卓是原生開發(fā) 需要不同的開發(fā)語言和框架 學(xué)習(xí)成本也很高 既然你說你是小白 如果采用原生開發(fā) 可能得大概花一年半載才能開始上手
采用跨平臺開發(fā) 只需要學(xué)習(xí)一下html css JavaScript 然后選擇跨平臺開發(fā)框架 比如react flutter uniapp 都可以 跨平臺就是指你這一套代碼編寫的app可以到不同平臺運行 比如iOS安卓都OK 但其實很多還可以編譯到各類小程序平臺運行 所以很方便
我這里推薦uniapp 一個基于vue的跨端開發(fā)框架 我自己也用這個開發(fā)了很多項目 確實很快 也提供了原生渲染能力 不做 游戲 等軟件 基本沒啥問題 社區(qū)插件市場也很熱鬧 基本有問題可以很快解決 希望可以幫到你。
按照開發(fā)方式可分為原生開發(fā)、混合開發(fā)、webapp開發(fā),不同的開發(fā)方式學(xué)習(xí)的編程語言不一樣,下面我們來一個一個分析一下:
一、原生開發(fā)
原生開發(fā)的編程語言主要為針對IOS運行環(huán)境的為編程語言為Swift或Object c,安卓環(huán)境為Java或Kotlin,WP環(huán)境為NET。原生開發(fā)的運行效率最高,用戶體驗最好,但是需要學(xué)習(xí)不同平臺的編程語言,學(xué)習(xí)門檻較高。
二、混合開發(fā)(偽原生開發(fā))
混合開發(fā)技術(shù)主要采用一套特別的渲染引擎來渲染UI界面和交互,按照渲染引擎可分為html與dart,其編程語言主要是Javascript或Typescript、Dart。
目前基于html渲染的開發(fā)框架有react native、weex、uniapp,基于dart的開發(fā)框架只有flutter。
混合開發(fā)由于調(diào)用了原生的控件來渲染UI,所以加載和體驗與原生差不多,學(xué)習(xí)成本比較低,只要會js,選擇一個框架開發(fā)就行了,或者學(xué)習(xí)dart語言,進(jìn)行flutter開發(fā)。
三、webapp開發(fā)
webapp開發(fā)主要利用原生環(huán)境中的瀏覽器控件來裝載服務(wù)器上的html頁面,實際這個app就是一個自定義的瀏覽器app,所以只要會html,就會開發(fā)webapp,由于app內(nèi)部加載的是遠(yuǎn)程的網(wǎng)頁,所以加載速度和體驗最差。
以上是我個人的總結(jié),有不對的歡迎指出,謝謝。
本人用c#,除了單片機(jī)用c,cad CATIA,多媒體主要Adobe,它干完所有,不需要性能的視圖混合dom代碼。
在Flutter中,我們可以使用Image控件來顯示圖片,一般來講我們的圖片資源都來源于網(wǎng)絡(luò)或者本地圖片。
Flutter中的Image也是類似。
我們先來看看Image的構(gòu)造方法
下面我們來看看其常用的屬性
可以看到,其常用屬性跟前端中的css很像。
下面我們來簡單用一用Image控件
首先是必填參數(shù)image,它接收一個ImageProvider類型的值。ImageProvider是一個抽象類,他下面有下圖這些實現(xiàn)類,由下面這些實現(xiàn)類可以看出,image是可以從資源,內(nèi)存,網(wǎng)絡(luò),和文件中獲取圖片。
我們先來試試加載網(wǎng)絡(luò)圖片
首先看看NetworkImage構(gòu)造方法,很簡單,傳個url就可以了
如下:
嗯,就是這么簡單。其他3種情況使用也是類似的,自行看源碼即可。
實際上,F(xiàn)lutter給我們提供了擴(kuò)展方法,使用起來更加簡單,通常我們直接使用提供的擴(kuò)展方法即可
如下
可以看到,他們的構(gòu)造方法基本類似。
所以我們也可以這樣寫,跟上面的效果是一致的。
大致分為一下幾步
1.創(chuàng)建一個文件夾,用于存放圖片,如圖,我創(chuàng)建了一個imgs的文件夾,放了一張圖片
2.在pubspec.yaml中聲明資源,注意聲明的時候路徑和前面的-是有間隔的,不然的話會報#/properties/flutter/properties/assets: type: wanted [array] got -imgs/code.png
類似的錯誤,聲明完成后點擊右上方的packages get
或
下面我們再來看看其他屬性。
width,height
寬高沒什么好說的,就是設(shè)置寬度和高度
配合color使用,用于設(shè)置顏色的混合模式。BlendMode是一個枚舉,他有很多值
詳細(xì)解析還是看官方文檔吧,值太多了,我們隨便用用
用于設(shè)置圖片的填充方式,當(dāng)圖片本身小于設(shè)置的寬高或者比父控件的寬高小時,我們可以設(shè)置該屬性控制圖片的顯示。
其值的類型是BoxFit。是個枚舉
具體含義還是直接看文檔即可
設(shè)置圖片的對齊方式,接收一個Alignment類型的值,值如下,很好理解
為了方便看效果我們在外邊套了個Container,簡單的把它理解為一個容器布局就可以了,類似于html中的div或android中的Layout,我們給Container設(shè)置了寬高和背景顏色。
bottomLeft效果如下,其他的自行嘗試
相對于Image,ICON可以像web一樣使用字體圖標(biāo),并且可以使用矢量圖,無需擔(dān)心失真的問題,并且體積相對較小。
我們先來看看其構(gòu)造方法
很簡單,我們直接來用一用
默認(rèn)情況下,pubspec.yaml中uses-material-design的值為true.我們默認(rèn)就可以使用Material Design字體圖標(biāo)
對于每一個開發(fā)者而言,開發(fā)工具就相當(dāng)于他們的武器,選擇一個合適的工具能夠幫助我們在工作時事半功倍,在互聯(lián)網(wǎng)逐漸發(fā)展成熟的今天,越來越多的開發(fā)工具供我們選擇,但其中總有一些更好用的,如何選擇成為了一大難題。
從而頒布了2021年StackShare第八屆頂級工具獎,快來看看有沒有你青睞的開發(fā)工具吧。
年度最佳新興工具
1.FastAPI
FastAPI 是一個使用 Python3.6+ 構(gòu)建 Web API 的高性能框架。根據(jù)框架創(chuàng)建者的說法,F(xiàn)astAPI 性能與 NodeJS 或 Golang 相當(dāng)。
2.GitHub Copilot
作為一款 AI 結(jié)對編程工具,Copilot 的主要定位是提供類似 IntelliSense/IntelliCode 的代碼補全與建議功能,但在實際表現(xiàn)上有望超越同樣由微軟合作伙伴 OpenAI 開發(fā)的 Codex AI 系統(tǒng)。
3.FiglamFigma
Figma 是一個 基于瀏覽器 的協(xié)作式 UI 設(shè)計工具,從推出至今越來越受到 UI 設(shè)計師的青睞,也有很多的設(shè)計團(tuán)隊投入了Figma 的懷抱,
4.Logtail
Logtail是日志服務(wù)提供的日志采集Agent,用于采集阿里云ECS、自建IDC、其他云廠商等服務(wù)器上的日志。本文介紹Logtail的功能、優(yōu)勢、使用限制及配置流程等信息。
5.Coder
開發(fā)人員工作區(qū)平臺·
6.Charts.csscss
Charts.css 是用于數(shù)據(jù)可視化的開源 CSS 框架,幫助用戶理解數(shù)據(jù),幫助開發(fā)人員使用簡單的 CSS 類將數(shù)據(jù)轉(zhuǎn)換為漂亮的圖表。·
7.Counter
簡單并且免費的網(wǎng)絡(luò)分析·
8.React Query
React Query是一個庫,可為任何類型的異步數(shù)據(jù)提供ReactJS狀態(tài)管理功能。根據(jù)他們的官方文件,·
9.vscode.dev
將VS Code引入瀏覽器,構(gòu)建一個可以在瀏覽器中完全無服務(wù)器運行的開發(fā)工具。
10.BookStack
BookStack 是一個開源的、基于 Laravel + Vue.js 構(gòu)建的知識管理和服務(wù)平臺。具有簡單但功能強大的所見即所得編輯器,允許團(tuán)隊輕松創(chuàng)建詳細(xì)且有用的文檔。·
11.ThunderClient
Thunder Client 為我們提供了一款輕量級、易用、整潔、簡單的 Rest API 客戶端擴(kuò)展。·我們可以利用 Thunder Client 在編輯器內(nèi)快速測試代碼庫的 API 端點,從而最大限度地減少頁面的切換。它可以替代 Postman,作為常用的無腳本測試工具。
12.Quod AI
Quod AI Code Search是一個由人工智能驅(qū)動的Chrome擴(kuò)展,可以自動從Git存儲庫或Jira問題中搜索代碼。
它使用問題的標(biāo)題和描述,并自動在你的Git存儲庫中找到匹配的內(nèi)容。
13.Dendron
Dendron 是典型的開源社區(qū)編程思維的解決方案,雖然初看起來有一點學(xué)習(xí)曲線,但從根本上是給了使用者最大的自由發(fā)揮空間,同時又提供了最強大和最徹底的工具生態(tài)支持。·
14.Notion API
把概念和你每天使用的工具聯(lián)系起來·
15.Github1s
只需1秒,就可以用VS Code方式來看GitHub代碼。·
16.Ocean
容器的無服務(wù)器基礎(chǔ)架構(gòu)引擎·
17.Magic
快速構(gòu)建應(yīng)用程序,可定制,無密碼登錄
·
18.Jina
更簡單的一種在云上構(gòu)建神經(jīng)搜索的方法,
19.Focalboard
一款開源、本地存儲、免費的類 Notion 應(yīng)用Focalboard 的自我定位是“Trello、Notion 和 Asana 的開源、自托管替代品”。·
20.zx
更好地編寫腳本的工具(By Google)
21.OpenSearh
OpenSearch是阿里云開放搜索簡稱,為解決用戶結(jié)構(gòu)化數(shù)據(jù)搜索需求的托管服務(wù),支持?jǐn)?shù)據(jù)結(jié)構(gòu)、搜索排序、數(shù)據(jù)處理自由定制。·
22.Querybook
一個可以發(fā)現(xiàn)、創(chuàng)建和共享數(shù)據(jù)分析、查詢以及表的大數(shù)據(jù)IDE(通過Pinterest),
23.MangoDB
MongoDB是一款為web應(yīng)用程序和互聯(lián)網(wǎng)基礎(chǔ)設(shè)施設(shè)計的數(shù)據(jù)庫管理系統(tǒng)。MongoDB就是數(shù)據(jù)庫,是NoSQL類型的數(shù)據(jù)庫
24.TooIJet
Retool的開源替代品·
25.Kitemaker
Kitemaker是為團(tuán)隊而非經(jīng)理創(chuàng)建的超快速問題跟蹤器。為遠(yuǎn)程團(tuán)隊創(chuàng)建的Jira的快速替代方案·
26.Appflowy
Appflowy 是一款使用 Flutter 和 Rust 構(gòu)建的開源筆記軟件,它支持Windows、macOS和Linux,可以免費下載使用
27.Kubegres
Kubegres 是一個 Kubernetes Operator,用來部署并維護(hù) PostgreSql 集群,提供開箱即用的數(shù)據(jù)復(fù)制和故障轉(zhuǎn)移功能,簡化 PostgreSql 集群生命周期管理,降低數(shù)據(jù)復(fù)制的復(fù)雜性
28.Lightning Web Components
Lightning Web Components,業(yè)內(nèi)簡稱LWC,是Salesforce于Spring 19發(fā)布的一款新型Lightning Component,快速的企業(yè)級Web組件基礎(chǔ)
29.Judo
用無代碼構(gòu)建原生應(yīng)用體驗
30.Apache APISIX
Apache APISIX Apache APISIX是一個動態(tài)、實時、高性能的API網(wǎng)關(guān)。提供了豐富的流量管理功能,如負(fù)載均衡、動態(tài)上游、canary釋放、斷路、認(rèn)證、可觀察性等。
31.Control
提供免費的加速、自動化安全性以及SOC2合規(guī)
32.Remix
專注于Web技術(shù)和現(xiàn)代 用戶體驗的框架
33.NocoDB
免費并且開源的Airtable替代方案
34.JetBrainsQodana
評估你擁有的、合同或購買的代碼的完整性
35.TabnineAI
只能代碼編寫
36.Coolify
一個開源的,自適應(yīng)的Heroku和Netlify的替代品
37.Penpot
開源設(shè)計和原型平臺
38.Portman
Postman介紹:postman是一個開源的接口測試工具,無論是做單個接口的測試還是整套測試腳本的撥測都非常方便。
39.Devops Stack
持續(xù)部署Kubernetes環(huán)境
40.Slidev
面向開發(fā)人員的演示幻燈片
41.ReScript
ReScript 是一門針對 JavaScript 程序員的新語言,特別是對 TypeScript 和 Flow 的類型安全感興趣的程序員。ReScript 的語法和 JavaScript 非常相似
42.Fig
自定完成終端
43.FlutterFlow
Flutterflow 是一個在線低碼平臺,使人們在視覺上以人們在視覺上構(gòu)建本機(jī)移動應(yīng)用程序。
44.Porter
運行在你自己的云中的Heroku
45.SigmaOS
在 SigmaOS 中,你會看到完全不同的瀏覽器布局,它更像是一個工作臺
46.VictoeiaMetrics DB
快速、低成本的監(jiān)控解決方案和時間序列數(shù)據(jù)庫
47.CloudflarePages
JAMstack平臺為前端開發(fā)者提供協(xié)作和部署網(wǎng)站的平臺
48. Devbook
面向開發(fā)者的搜索引擎
49.Front Matter
直接在VS Code中管理靜態(tài)站點
50.Supacase UI
用于企業(yè)儀表的React組件庫
以上可以說是集結(jié)了開發(fā)行業(yè)中的所有“神器”,不僅能助力程序員高效工作,也是今后走向開發(fā)崗位小伙伴們的加薪工具。小伙伴可以從中挑選適合自己的工具~
不久前,谷歌正式推出 Jetpack Compose 1.0 版本。近日,JetBrains 在此基礎(chǔ)上發(fā)布了 Compose Multiplatform Alpha 版本,旨在將 Compose 擴(kuò)展到桌面和 Web 端。
Compose Multiplatform 由 Compose for Desktop 和 Compose for Web 組成,通過 Kotlin Multiplatform 支持許多不同的平臺。其中,Compose Desktop 采用 Google 的 Skia 圖形庫,來實現(xiàn)在 Windows、macOS 和 Linux 上的 UI 繪制,借此在所有支持的操作系統(tǒng)中提供統(tǒng)一的體驗,類似于 Flutter 的做法。
根據(jù) Kotlin 團(tuán)隊的說法,相比起 Electron 框架,Compose Multiplatform 在內(nèi)存消耗、安裝大小和 UI 渲染性能等方面將有更明顯的優(yōu)勢。隨著 Alpha 版本的發(fā)布,Compose Multiplatform 還收獲了新的 Android Studio 插件,包括對在 IDE 中顯示組件預(yù)覽的支持以及許多附加功能。
我們希望通過本文幫助大家進(jìn)一步了解 Compose 的跨平臺能力,以及 JetBrains 將 Compose 從 Android 擴(kuò)展到這些其他平臺背后的主要驅(qū)動力是什么。
基于 Jetpack Compose 1.0
由谷歌打造的 Jetpack Compose 是一款用于在 Android 應(yīng)用程序之內(nèi)構(gòu)建用戶界面的官方框架,上周剛剛發(fā)布 1.0 版本。與此同時,Android Studio 代號“極狐”的首個穩(wěn)定版 2020.3.1 也正式亮相。
盡管才剛迎來 1.0,但谷歌表示“目前 Play Store 中已經(jīng)有超過 2000 款應(yīng)用程序在使用 Compose——更重要的是,就連 Play Store 這款應(yīng)用本身也在使用 Compose。”谷歌方面還表示,“我們一直在與一些頂級應(yīng)用的開發(fā)人員進(jìn)行合作,他們的反饋和支持幫助我們使 1.0 版本更加強大。”
Jetpack Compose for Android 迎來 1.0 版本
Compose 基于 Kotlin 開發(fā),而 Kotlin 與 Android Studio(即官方指定的 Android IDE)均來自開發(fā)工具廠商 JetBrains。雖然 Jetpack Compose 專為 Android 打造(與谷歌的 Flutter 框架不同), 但 JetBrains 公司堅信 Compose 完全能夠獲得跨平臺能力 。
Compose for Desktop: 這只是開始
Compose Multiplatform 可以說是該框架面向 MacOS、Linux、Windows 以及 Web 開設(shè)的一個端口,目前剛剛發(fā)布 1.0 Alpha 版本。雖然尚處于早期開發(fā)階段,但 JetBrains 表示,其已經(jīng)“為開發(fā)人員帶來能夠基本安全使用的穩(wěn)定 API”。
TheRegister 就此事詢問了 JetBrains 公司 Compose 項目負(fù)責(zé)人 Nikolay Igotti,希望了解為什么該公司在擁有了已經(jīng)廣泛應(yīng)用于 IntelliJ IDEA IDE 及多種豐富變體的桌面應(yīng)用程序跨平臺 Java 框架之外,還要費力開發(fā) Compose for Desktop。Igotti 的回答是,“舊有 Java 框架基本上就是修改版的 Swing。Swing 屬于默認(rèn) JDK UI 框架,Swing 和 AWT(Abstract Windows Toolkit,抽象窗口工具包)。Compose 則完全是另一碼事,當(dāng)然我們也在設(shè)計中考慮到了互操作性需求……Swing 這套框架太陳舊了,最早出現(xiàn)在上世紀(jì)九十年代末。多年來人們對于 UI 的設(shè)計思路已經(jīng)天翻地覆,Swing 顯然滿足不了要求了。”
JetBrains IDE 中的 Compose for Desktop 項目
Compose 與 Swing 有一個比較大的共同點:與其他使用本機(jī)控件的跨平臺框架,比如例如 Java 的 SWT(Standard Widget Toolkit)以及微軟的 Xamarin 有所不同,它們選擇自主繪制控件。Compose 使用的 Skia 開源圖形庫,也在谷歌 Chrome、Flutter 及其他眾多框架當(dāng)中得到廣泛應(yīng)用。那這是否意味著 Compose 應(yīng)用程序?qū)]有自己的原生外觀?對此,Igotti 的回應(yīng)是,“這取決于開發(fā)人員的選擇,取決于他們?nèi)绾螢閼?yīng)用程序設(shè)置主題。在這方面,Compose 的情況與 Flutter 等其他框架沒什么區(qū)別。”
那 Compose for Desktop 應(yīng)用程序是否依賴于 JVM(Java Virtual Machine)運行?Igotti 表示,“我們也知道,JVM 應(yīng)用程序的發(fā)布情況可能比較棘手。因此我們提供自己的 Gradle 插件,其使用 jpackage 與 Jlink 以 JVM 應(yīng)用程序為基礎(chǔ)制作原生應(yīng)用程序。Mac 的.dmg、Windows 的 MSI、Linux 的 deb 包等均可實現(xiàn),大家用不著擔(dān)心 JVM。”
也就是說,開發(fā)成果將會是一款被精心包裹起來的 JVM 應(yīng)用程序。JetBrains 還有一款用于解決這個問題的 Kotlin/Native 編譯器,“預(yù)計將在未來發(fā)布,或者專門用于桌面開發(fā)。”
對應(yīng)用程序的另一種思考方式
那 Web 應(yīng)用程序方面呢?Igotti 回應(yīng)稱,“我們使用 Kotlin/JS 編譯器。”Compose 的 Web 版本不如桌面版先進(jìn),說明文檔中也警告稱“API 尚未最終確定,預(yù)計會發(fā)生重大變化。”此外,雖然 Web 版本確實使用 Compose 模型,但 API 卻完全不同,而且會使用 HTML 與 CSS。所以,Web 版與 Compose for Desktop 之間能夠共享的代碼應(yīng)該比較少。
據(jù) Igotti 介紹,“Compose 代表著一種不同的應(yīng)用程序思考方式。狀態(tài)即 UI 的真實來源,而 UI 本身是無狀態(tài)的,其表達(dá)永遠(yuǎn)由狀態(tài)計算得出。在這方面,Compose for Web 采用一組相同的原語,完全相同的狀態(tài)管理思路。但是對于具體的小部件集合與排列方式,Web 版與桌面版之間確實無法互通。”
說到這里,為什么要把 Compose for Android 擴(kuò)展到多種其他平臺之上?“Compose 的目標(biāo)受眾主要分為三類。首先是使用 Kotlin 與 Compose 的 Android 開發(fā)人員,他們希望把自己的開發(fā)成果交付至其他平臺;其二是純 Kotlin 開發(fā)人員,他們希望以‘一次編寫、隨處運行’的方式開發(fā)新的應(yīng)用程序;第三則是那些不太熟悉 Kotlin 或者 Compose,但又希望開發(fā)出精美 UI 的用戶,我們希望能為他們提供實現(xiàn)目標(biāo)的工具。”
Igotti 并沒有給出具體的發(fā)布日期,但表示自己希望 Beta 版能在今年秋天發(fā)布,“我們也希望能在今年之內(nèi)推出 1.0 版本。”項目本身是完全開源的,“二十一世紀(jì)了,框架在大多數(shù)人們心目中就不應(yīng)該收費。我們只是想開發(fā)一款長期缺失的軟件”,補足 JetBrains 當(dāng)前商業(yè)模式中的工具鏈。
那么,JetBrains 會在自己的其他工具中使用 Compose 嗎?事實上,他們的 JetBrains Toolbox(用于管理已安裝的 IDE)已經(jīng)在使用 Compose,但 Igotti 表示短時間內(nèi) Compose 還無法取代 IntelliJ IDEA 等現(xiàn)有框架。“編輯器是其中最復(fù)雜也最重要的組件,經(jīng)歷了 20 年的發(fā)展演進(jìn),我們幾乎不可能在中途進(jìn)行重寫了。無論是 JetBrains 還是我個人,都不打算強迫每個人都轉(zhuǎn)而使用 Compose。我們的目標(biāo)是為原有框架選項滿足不了的用戶提供新的解決方案。”
寫在最后
那么,為什么除了 Flutter 之外,我們還需要另一個跨平臺框架?雖然谷歌的 Flutter 最開始主要面向移動設(shè)備,但現(xiàn)在也開始向桌面及 iOS 進(jìn)軍,甚至比 Compose 還搶先了一步。不過,根據(jù) StackOverflow 的最新調(diào)查, Flutter 使用的語言為 Dart;盡管 Dart 語言的人氣正在增長(正是受到 Flutter 的推動),但仍然無法與 Kotlin 相提并論。
Compose 代表著一種獨特的 UI 構(gòu)建方法,也許最期待 Compose 跨平臺功能的受眾,正是那些曾在 Android 上使用過它、又特別喜歡這種 UI 構(gòu)建體驗的開發(fā)者。
想要進(jìn)一步了解 Compose,國內(nèi) Android 開發(fā)者可訪問以下鏈接查看中文手冊:
延伸閱讀:
分享名稱:關(guān)于cssflutter的信息
URL網(wǎng)址:http://chinadenli.net/article34/dsggcpe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司、定制開發(fā)、網(wǎng)站制作、App設(shè)計、網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)