對(duì)于每一個(gè)開(kāi)發(fā)者而言,開(kāi)發(fā)工具就相當(dāng)于他們的武器,選擇一個(gè)合適的工具能夠幫助我們?cè)诠ぷ鲿r(shí)事半功倍,在互聯(lián)網(wǎng)逐漸發(fā)展成熟的今天,越來(lái)越多的開(kāi)發(fā)工具供我們選擇,但其中總有一些更好用的,如何選擇成為了一大難題。
我們擁有十余年網(wǎng)頁(yè)設(shè)計(jì)和網(wǎng)站建設(shè)經(jīng)驗(yàn),從網(wǎng)站策劃到網(wǎng)站制作,我們的網(wǎng)頁(yè)設(shè)計(jì)師為您提供的解決方案。為企業(yè)提供網(wǎng)站建設(shè)、成都做網(wǎng)站、微信開(kāi)發(fā)、小程序制作、手機(jī)網(wǎng)站開(kāi)發(fā)、H5網(wǎng)站設(shè)計(jì)、等業(yè)務(wù)。無(wú)論您有什么樣的網(wǎng)站設(shè)計(jì)或者設(shè)計(jì)方案要求,我們都將富于創(chuàng)造性的提供專業(yè)設(shè)計(jì)服務(wù)并滿足您的需求。
從而頒布了2021年StackShare第八屆頂級(jí)工具獎(jiǎng),快來(lái)看看有沒(méi)有你青睞的開(kāi)發(fā)工具吧。
年度最佳新興工具
1.FastAPI
FastAPI 是一個(gè)使用 Python3.6+ 構(gòu)建 Web API 的高性能框架。根據(jù)框架創(chuàng)建者的說(shuō)法,F(xiàn)astAPI 性能與 NodeJS 或 Golang 相當(dāng)。
2.GitHub Copilot
作為一款 AI 結(jié)對(duì)編程工具,Copilot 的主要定位是提供類似 IntelliSense/IntelliCode 的代碼補(bǔ)全與建議功能,但在實(shí)際表現(xiàn)上有望超越同樣由微軟合作伙伴 OpenAI 開(kāi)發(fā)的 Codex AI 系統(tǒng)。
3.FiglamFigma
Figma 是一個(gè) 基于瀏覽器 的協(xié)作式 UI 設(shè)計(jì)工具,從推出至今越來(lái)越受到 UI 設(shè)計(jì)師的青睞,也有很多的設(shè)計(jì)團(tuán)隊(duì)投入了Figma 的懷抱,
4.Logtail
Logtail是日志服務(wù)提供的日志采集Agent,用于采集阿里云ECS、自建IDC、其他云廠商等服務(wù)器上的日志。本文介紹Logtail的功能、優(yōu)勢(shì)、使用限制及配置流程等信息。
5.Coder
開(kāi)發(fā)人員工作區(qū)平臺(tái)·
6.Charts.csscss
Charts.css 是用于數(shù)據(jù)可視化的開(kāi)源 CSS 框架,幫助用戶理解數(shù)據(jù),幫助開(kāi)發(fā)人員使用簡(jiǎn)單的 CSS 類將數(shù)據(jù)轉(zhuǎn)換為漂亮的圖表?!?/p>
7.Counter
簡(jiǎn)單并且免費(fèi)的網(wǎng)絡(luò)分析·
8.React Query
React Query是一個(gè)庫(kù),可為任何類型的異步數(shù)據(jù)提供ReactJS狀態(tài)管理功能。根據(jù)他們的官方文件,·
9.vscode.dev
將VS Code引入瀏覽器,構(gòu)建一個(gè)可以在瀏覽器中完全無(wú)服務(wù)器運(yùn)行的開(kāi)發(fā)工具。
10.BookStack
BookStack 是一個(gè)開(kāi)源的、基于 Laravel + Vue.js 構(gòu)建的知識(shí)管理和服務(wù)平臺(tái)。具有簡(jiǎn)單但功能強(qiáng)大的所見(jiàn)即所得編輯器,允許團(tuán)隊(duì)輕松創(chuàng)建詳細(xì)且有用的文檔?!?/p>
11.ThunderClient
Thunder Client 為我們提供了一款輕量級(jí)、易用、整潔、簡(jiǎn)單的 Rest API 客戶端擴(kuò)展?!の覀兛梢岳?Thunder Client 在編輯器內(nèi)快速測(cè)試代碼庫(kù)的 API 端點(diǎn),從而最大限度地減少頁(yè)面的切換。它可以替代 Postman,作為常用的無(wú)腳本測(cè)試工具。
12.Quod AI
Quod AI Code Search是一個(gè)由人工智能驅(qū)動(dòng)的Chrome擴(kuò)展,可以自動(dòng)從Git存儲(chǔ)庫(kù)或Jira問(wèn)題中搜索代碼。
它使用問(wèn)題的標(biāo)題和描述,并自動(dòng)在你的Git存儲(chǔ)庫(kù)中找到匹配的內(nèi)容。
13.Dendron
Dendron 是典型的開(kāi)源社區(qū)編程思維的解決方案,雖然初看起來(lái)有一點(diǎn)學(xué)習(xí)曲線,但從根本上是給了使用者最大的自由發(fā)揮空間,同時(shí)又提供了最強(qiáng)大和最徹底的工具生態(tài)支持?!?/p>
14.Notion API
把概念和你每天使用的工具聯(lián)系起來(lái)·
15.Github1s
只需1秒,就可以用VS Code方式來(lái)看GitHub代碼。·
16.Ocean
容器的無(wú)服務(wù)器基礎(chǔ)架構(gòu)引擎·
17.Magic
快速構(gòu)建應(yīng)用程序,可定制,無(wú)密碼登錄
·
18.Jina
更簡(jiǎn)單的一種在云上構(gòu)建神經(jīng)搜索的方法,
19.Focalboard
一款開(kāi)源、本地存儲(chǔ)、免費(fèi)的類 Notion 應(yīng)用Focalboard 的自我定位是“Trello、Notion 和 Asana 的開(kāi)源、自托管替代品”?!?/p>
20.zx
更好地編寫腳本的工具(By Google)
21.OpenSearh
OpenSearch是阿里云開(kāi)放搜索簡(jiǎn)稱,為解決用戶結(jié)構(gòu)化數(shù)據(jù)搜索需求的托管服務(wù),支持?jǐn)?shù)據(jù)結(jié)構(gòu)、搜索排序、數(shù)據(jù)處理自由定制?!?/p>
22.Querybook
一個(gè)可以發(fā)現(xiàn)、創(chuàng)建和共享數(shù)據(jù)分析、查詢以及表的大數(shù)據(jù)IDE(通過(guò)Pinterest),
23.MangoDB
MongoDB是一款為web應(yīng)用程序和互聯(lián)網(wǎng)基礎(chǔ)設(shè)施設(shè)計(jì)的數(shù)據(jù)庫(kù)管理系統(tǒng)。MongoDB就是數(shù)據(jù)庫(kù),是NoSQL類型的數(shù)據(jù)庫(kù)
24.TooIJet
Retool的開(kāi)源替代品·
25.Kitemaker
Kitemaker是為團(tuán)隊(duì)而非經(jīng)理創(chuàng)建的超快速問(wèn)題跟蹤器。為遠(yuǎn)程團(tuán)隊(duì)創(chuàng)建的Jira的快速替代方案·
26.Appflowy
Appflowy 是一款使用 Flutter 和 Rust 構(gòu)建的開(kāi)源筆記軟件,它支持Windows、macOS和Linux,可以免費(fèi)下載使用
27.Kubegres
Kubegres 是一個(gè) Kubernetes Operator,用來(lái)部署并維護(hù) PostgreSql 集群,提供開(kāi)箱即用的數(shù)據(jù)復(fù)制和故障轉(zhuǎn)移功能,簡(jiǎn)化 PostgreSql 集群生命周期管理,降低數(shù)據(jù)復(fù)制的復(fù)雜性
28.Lightning Web Components
Lightning Web Components,業(yè)內(nèi)簡(jiǎn)稱LWC,是Salesforce于Spring 19發(fā)布的一款新型Lightning Component,快速的企業(yè)級(jí)Web組件基礎(chǔ)
29.Judo
用無(wú)代碼構(gòu)建原生應(yīng)用體驗(yàn)
30.Apache APISIX
Apache APISIX Apache APISIX是一個(gè)動(dòng)態(tài)、實(shí)時(shí)、高性能的API網(wǎng)關(guān)。提供了豐富的流量管理功能,如負(fù)載均衡、動(dòng)態(tài)上游、canary釋放、斷路、認(rèn)證、可觀察性等。
31.Control
提供免費(fèi)的加速、自動(dòng)化安全性以及SOC2合規(guī)
32.Remix
專注于Web技術(shù)和現(xiàn)代 用戶體驗(yàn)的框架
33.NocoDB
免費(fèi)并且開(kāi)源的Airtable替代方案
34.JetBrainsQodana
評(píng)估你擁有的、合同或購(gòu)買的代碼的完整性
35.TabnineAI
只能代碼編寫
36.Coolify
一個(gè)開(kāi)源的,自適應(yīng)的Heroku和Netlify的替代品
37.Penpot
開(kāi)源設(shè)計(jì)和原型平臺(tái)
38.Portman
Postman介紹:postman是一個(gè)開(kāi)源的接口測(cè)試工具,無(wú)論是做單個(gè)接口的測(cè)試還是整套測(cè)試腳本的撥測(cè)都非常方便。
39.Devops Stack
持續(xù)部署Kubernetes環(huán)境
40.Slidev
面向開(kāi)發(fā)人員的演示幻燈片
41.ReScript
ReScript 是一門針對(duì) JavaScript 程序員的新語(yǔ)言,特別是對(duì) TypeScript 和 Flow 的類型安全感興趣的程序員。ReScript 的語(yǔ)法和 JavaScript 非常相似
42.Fig
自定完成終端
43.FlutterFlow
Flutterflow 是一個(gè)在線低碼平臺(tái),使人們?cè)谝曈X(jué)上以人們?cè)谝曈X(jué)上構(gòu)建本機(jī)移動(dòng)應(yīng)用程序。
44.Porter
運(yùn)行在你自己的云中的Heroku
45.SigmaOS
在 SigmaOS 中,你會(huì)看到完全不同的瀏覽器布局,它更像是一個(gè)工作臺(tái)
46.VictoeiaMetrics DB
快速、低成本的監(jiān)控解決方案和時(shí)間序列數(shù)據(jù)庫(kù)
47.CloudflarePages
JAMstack平臺(tái)為前端開(kāi)發(fā)者提供協(xié)作和部署網(wǎng)站的平臺(tái)
48. Devbook
面向開(kāi)發(fā)者的搜索引擎
49.Front Matter
直接在VS Code中管理靜態(tài)站點(diǎn)
50.Supacase UI
用于企業(yè)儀表的React組件庫(kù)
以上可以說(shuō)是集結(jié)了開(kāi)發(fā)行業(yè)中的所有“神器”,不僅能助力程序員高效工作,也是今后走向開(kāi)發(fā)崗位小伙伴們的加薪工具。小伙伴可以從中挑選適合自己的工具~
前端前景是很不錯(cuò)的,像前端這樣的專業(yè)還是一線城市比較好,師資力量跟得上、就業(yè)的薪資也是可觀的,學(xué)習(xí)前端可以按照路線圖的順序,
0基礎(chǔ)學(xué)習(xí)前端是沒(méi)有問(wèn)題的,關(guān)鍵是找到靠譜的前端培訓(xùn)機(jī)構(gòu),你可以深度了解機(jī)構(gòu)的口碑情況,問(wèn)問(wèn)周圍知道這家機(jī)構(gòu)的人,除了口碑再了解機(jī)構(gòu)的以下幾方面:
1. 師資力量雄厚
要想有1+12的實(shí)際效果,很關(guān)鍵的一點(diǎn)是師資隊(duì)伍,你接下來(lái)無(wú)論是找個(gè)工作還是工作中出任哪些的人物角色,都越來(lái)越愛(ài)你本身的技術(shù)專業(yè)前端技術(shù)性,也許的技術(shù)專業(yè)前端技術(shù)性則絕大多數(shù)來(lái)自你的技術(shù)專業(yè)前端教師,一個(gè)好的前端培訓(xùn)機(jī)構(gòu)必須具備雄厚的師資力量。
2. 就業(yè)保障完善
實(shí)現(xiàn)1+12效果的關(guān)鍵在于能夠?yàn)槟闾峁┝己玫陌l(fā)展平臺(tái),即能夠?yàn)槟闾峁┝己玫木蜆I(yè)保障,讓學(xué)員能夠?qū)W到實(shí)在實(shí)在的知識(shí),并向前端學(xué)員提供一對(duì)一的就業(yè)指導(dǎo),確保學(xué)員找到自己的心理工作。
3. 學(xué)費(fèi)性價(jià)比高
一個(gè)好的前端培訓(xùn)機(jī)構(gòu)肯定能給你帶來(lái)1+12的效果,如果你在一個(gè)由專業(yè)的前端教師領(lǐng)導(dǎo)并由前端培訓(xùn)機(jī)構(gòu)自己提供的平臺(tái)上工作,你將獲得比以往更多的投資。
希望你早日學(xué)有所成。
如果是目前的移動(dòng)端開(kāi)發(fā)趨勢(shì),跨平臺(tái)移動(dòng)應(yīng)用開(kāi)發(fā),也就是目前比較火的flutter、react-native等等解決方案,需要有web基礎(chǔ),也就是Es6、HTML、CSS等等,需要了解前端工程化,如webpack、gulp等解決方案,慢慢深入就知道了,這塊要學(xué)的還是挺多的
傳統(tǒng)的安卓或者是ios工程師可以自己買書學(xué),先學(xué)學(xué)Java、C#基礎(chǔ),其實(shí)傳統(tǒng)app開(kāi)發(fā)門檻還是比較高的,目前也不算是主流趨勢(shì),建議學(xué)習(xí)跨平臺(tái)移動(dòng)應(yīng)用開(kāi)發(fā),也就是一次開(kāi)發(fā),可打包成apk、ios應(yīng)用、小程序等等,多端運(yùn)行。
像美團(tuán)外賣這樣的APP用一種開(kāi)發(fā)語(yǔ)言,能開(kāi)發(fā)得出來(lái)嗎?答案是不能。
美團(tuán)發(fā)展到現(xiàn)在可以說(shuō)已經(jīng)是一個(gè)【巨無(wú)霸】了,里面集成了很多很多功能,除了核心的外賣,還有 旅游 、 娛樂(lè) 、購(gòu)物、出行,金融等等業(yè)務(wù)線,那么這么多復(fù)雜的業(yè)務(wù)根本不可能用同一種開(kāi)發(fā)語(yǔ)言實(shí)現(xiàn)。
那么美團(tuán)都用到哪些開(kāi)發(fā)語(yǔ)言和技術(shù)了呢?下面就根據(jù)我的理解詳細(xì)說(shuō)一下。
前端是把產(chǎn)品的核心服務(wù)交給用戶的呈現(xiàn)者,它的表述方式、展示形式以及交互邏輯都跟用戶息息相關(guān),都影響著用戶使用產(chǎn)品的體驗(yàn),也就是說(shuō)直接影響產(chǎn)品的用戶留存。
前端開(kāi)發(fā)主要分為三大類型:Andriod、IOS和PC(H5) ,Android開(kāi)發(fā)語(yǔ)言是Kotlin和Java,IOS開(kāi)發(fā)語(yǔ)言是Object-c和Swift,PC(H5)開(kāi)發(fā)語(yǔ)言就比較雜了,有JS、CSS、HTML,還有很多第三方的前端框架,比如Angular.js、vue.js、Bootstrap、JQuery等等。
關(guān)于后端的功能,這一點(diǎn)可以說(shuō)是眾說(shuō)紛紜,主要需要考慮的是如何實(shí)現(xiàn)功能、數(shù)據(jù)的交互流程和存取、平臺(tái)的穩(wěn)定性與性能等。
那么后端都用到哪些開(kāi)發(fā)語(yǔ)言和技術(shù)呢?
根據(jù)后端技術(shù)選型的標(biāo)準(zhǔn),后端可選的開(kāi)發(fā)語(yǔ)言和技術(shù)是非常多的。
比如Java體系的話,可以選用SpringMVC、Spring cloud、Hibernate,Mybatis、Mysql、Redis、Memcache、zookeeper、Kafka......;
比如Python體系的話,可以選用Django、Flask、Tarnado、Web2py等,中間件都是通用的,Redis,MQ、MySQL、Kafka等都可以用在python體系中;
當(dāng)然還有PHP、C、Perl等開(kāi)發(fā)語(yǔ)言。
綜上所述,美團(tuán)這個(gè)巨無(wú)霸公司,隨著業(yè)務(wù)線的擴(kuò)展用到的技術(shù)肯定會(huì)越來(lái)越多,而且越來(lái)越復(fù)雜,技術(shù)快速變革的時(shí)代,適者生存的競(jìng)爭(zhēng)性也會(huì)越來(lái)越激烈。
俗話說(shuō):羅馬不是一日建成的,任何事都不可能一蹴而就,包含技術(shù)。在以后的發(fā)展中美團(tuán)也會(huì)逐步更新自己的技術(shù)和開(kāi)發(fā)語(yǔ)言的。
至少三種語(yǔ)言。后端一種語(yǔ)言(比如Java丶Go丶Python丶PHP等),后端語(yǔ)言及生態(tài)比較成熟。下面重點(diǎn)聊前端App開(kāi)發(fā)。
前臺(tái)兩種語(yǔ)言(Android和iOS是不同的開(kāi)發(fā)環(huán)境。比如Android用Java或者Kotlin,iOS采用Object C++或Swift),稱之為Native開(kāi)發(fā)。
當(dāng)然創(chuàng)業(yè)公司可以用一種前端語(yǔ)言寫App前端,這樣就不需要Android和蘋果分兩種語(yǔ)言寫,寫一次代碼可以編譯成Android和iOS的App,現(xiàn)在通行的方案有Vue之類的DOM渲染模式,以及ReactNative方案(RN)。性能上RN優(yōu)于DOM渲染但低于用Native開(kāi)發(fā)的App。所以美團(tuán)這種公司,一定是Native方式寫App,但RN是初創(chuàng)項(xiàng)目不錯(cuò)的選擇。
與RN競(jìng)爭(zhēng)的還有一種新貴flutter,是google推出來(lái)的,但設(shè)計(jì)原理與RN不同,性能方面優(yōu)于RN,只是目前生態(tài)不夠健全,國(guó)內(nèi)有閑魚(yú)app是采用此技術(shù)。未來(lái)可能會(huì)占一席之地。
最后,其實(shí)App開(kāi)發(fā)已經(jīng)是強(qiáng)努之末,我覺(jué)得主流應(yīng)該是朝PWA和小程序方向發(fā)展。
你好,開(kāi)發(fā)譬如美團(tuán)這種APP,用一種語(yǔ)言是實(shí)現(xiàn)不了的,一個(gè)APP有安卓和蘋果兩個(gè)操作系統(tǒng),開(kāi)發(fā)能在安卓iOS端應(yīng)用的APP主流的開(kāi)發(fā)語(yǔ)言和技術(shù)是很多的,如后臺(tái)有JAVA、C++、PHP、Python等多種開(kāi)發(fā)語(yǔ)言,前端有kotlin、HTML、css、jquery、ajax、bootstrap、angular.js、react、vue.js、node.js、swift、object-c等多種語(yǔ)言和框架。
一個(gè)APP的開(kāi)發(fā)是需要前端技術(shù)和后臺(tái)技術(shù)共同配合完成,這樣的APP不論是功能還是性能都給用戶很好的體驗(yàn),單一開(kāi)發(fā)語(yǔ)言畢竟技術(shù)支持有限,所以即使能開(kāi)發(fā)出來(lái),APP的用戶體驗(yàn)也是不理想的。
一般APP有這幾種開(kāi)發(fā)組合模式:1、原生安卓iOS開(kāi)發(fā),前端:JAVA、kotlin、swift、object-c后臺(tái):JAVA、PHP、C++等后臺(tái)技術(shù),這種模式開(kāi)發(fā)周期長(zhǎng),成本高,性能好;2、混合APP開(kāi)發(fā)即hybrid app,前端以網(wǎng)頁(yè)技術(shù)為主,穿插原生開(kāi)發(fā)功能,兼具原生APP和web app的優(yōu)點(diǎn),如淘寶、微信等應(yīng)用都是走的這個(gè)技術(shù);3、web app,前端純網(wǎng)頁(yè)技術(shù),后臺(tái)為主流開(kāi)發(fā)語(yǔ)言,這種模式開(kāi)發(fā)速度快,成本低,界面體驗(yàn)可能弱一些。
可見(jiàn)開(kāi)發(fā)一款A(yù)PP大多數(shù)都是多種語(yǔ)言配合完成,謝謝閱讀。
看完之前的評(píng)論,依然好奇為什么一個(gè)語(yǔ)言不能完全勝任。
前端跨平臺(tái)的方案有react native,cordova,flutter等,如果需要兼容開(kāi)發(fā)小程序,h5頁(yè)面,可以采用taro來(lái)開(kāi)發(fā),一套代碼,所有平臺(tái)通吃。
后端的方案有服務(wù)端運(yùn)行時(shí)nodejs,大數(shù)據(jù)背景下運(yùn)用而生的數(shù)據(jù)庫(kù)mobgodb,緩存解決方案redis,搜索工具elasticsearch,負(fù)載均衡ngix,基本上是需要什么就有什么
所以總結(jié)下來(lái),一句話,一種語(yǔ)言可以實(shí)現(xiàn)類似美團(tuán)這樣的app和小程序。為什么美團(tuán)使用的語(yǔ)言那么多,一大原因估計(jì)是美團(tuán)app開(kāi)發(fā)的早,當(dāng)時(shí)前端技術(shù)不成熟,工具沒(méi)現(xiàn)在這么多。
使用混合開(kāi)發(fā)與C++ 進(jìn)行跨平臺(tái)開(kāi)發(fā),有好有壞。
C++ 進(jìn)行跨平臺(tái)開(kāi)發(fā)
編寫一次,隨處運(yùn)行。早在 2013 年,Dropbox 就采用上述策略進(jìn)行移動(dòng)開(kāi)發(fā),這背后的想法很簡(jiǎn)單:用 C++ 編寫一次代碼,而不是用 Java 和 Objective-C 編寫兩次。那時(shí),整個(gè)移動(dòng)工程團(tuán)隊(duì)相對(duì)還比較小,但需要支持快速增長(zhǎng)的移動(dòng)路線圖。因此,公司希望找到一種方法,使這個(gè)小團(tuán)隊(duì)可以快速交付大量 Android 和 iOS 代碼。
如今,Dropbox 完全放棄了這個(gè)策略,轉(zhuǎn)而使用各個(gè)平臺(tái)的原生語(yǔ)言(主要是 Swift 和 Kotlin ,這兩種語(yǔ)言在剛開(kāi)始制定移動(dòng)策略時(shí)還不存在)。
Hybrid App混合開(kāi)發(fā)
Hybrid App主要以JS+Native兩者相互調(diào)用為主,從開(kāi)發(fā)層面實(shí)現(xiàn)“一次開(kāi)發(fā),多處運(yùn)行”的機(jī)制,成為真正適合跨平臺(tái)的開(kāi)發(fā)。Hybrid App兼具了Native App良好用戶體驗(yàn)的優(yōu)勢(shì),也兼具了Web App使用HTML5跨平臺(tái)開(kāi)發(fā)低成本的優(yōu)勢(shì)。
目前已經(jīng)有眾多Hybrid App開(kāi)發(fā)成功應(yīng)用,比如美團(tuán)、愛(ài)奇藝、支付寶等知名移動(dòng)應(yīng)用,都是采用Hybrid App開(kāi)發(fā)模式。
移動(dòng)應(yīng)用開(kāi)發(fā)的方式,目前主要有三種:
幾種模似都可以開(kāi)發(fā)出應(yīng)用,小應(yīng)用無(wú)所謂,但是大流量應(yīng)用,對(duì)圖形要求高的如 游戲 等原生開(kāi)發(fā)的效果還是最好
支付寶打開(kāi)很慢,就是因?yàn)椴捎没旌祥_(kāi)發(fā),使用人多了不如原生開(kāi)發(fā)
不行的哦。任何你看到的應(yīng)用和網(wǎng)頁(yè),都需要多個(gè)語(yǔ)言開(kāi)發(fā)的,大的分比如前端和后端,用的語(yǔ)言都是不一樣的
Flutter和前端一樣,采用盒模型。
前端中有用CSS,只用邊框?qū)崿F(xiàn)三角形的案例,這個(gè)可以借鑒過(guò)來(lái)
2018-04-14 借助邊框特性實(shí)現(xiàn)邊框三角形
flutter 中用邊框?qū)崿F(xiàn)三角形
web前端入門到實(shí)戰(zhàn):通過(guò)CSS邊框?qū)崿F(xiàn)三角形和箭頭
不久前,谷歌正式推出 Jetpack Compose 1.0 版本。近日,JetBrains 在此基礎(chǔ)上發(fā)布了 Compose Multiplatform Alpha 版本,旨在將 Compose 擴(kuò)展到桌面和 Web 端。
Compose Multiplatform 由 Compose for Desktop 和 Compose for Web 組成,通過(guò) Kotlin Multiplatform 支持許多不同的平臺(tái)。其中,Compose Desktop 采用 Google 的 Skia 圖形庫(kù),來(lái)實(shí)現(xiàn)在 Windows、macOS 和 Linux 上的 UI 繪制,借此在所有支持的操作系統(tǒng)中提供統(tǒng)一的體驗(yàn),類似于 Flutter 的做法。
根據(jù) Kotlin 團(tuán)隊(duì)的說(shuō)法,相比起 Electron 框架,Compose Multiplatform 在內(nèi)存消耗、安裝大小和 UI 渲染性能等方面將有更明顯的優(yōu)勢(shì)。隨著 Alpha 版本的發(fā)布,Compose Multiplatform 還收獲了新的 Android Studio 插件,包括對(duì)在 IDE 中顯示組件預(yù)覽的支持以及許多附加功能。
我們希望通過(guò)本文幫助大家進(jìn)一步了解 Compose 的跨平臺(tái)能力,以及 JetBrains 將 Compose 從 Android 擴(kuò)展到這些其他平臺(tái)背后的主要驅(qū)動(dòng)力是什么。
基于 Jetpack Compose 1.0
由谷歌打造的 Jetpack Compose 是一款用于在 Android 應(yīng)用程序之內(nèi)構(gòu)建用戶界面的官方框架,上周剛剛發(fā)布 1.0 版本。與此同時(shí),Android Studio 代號(hào)“極狐”的首個(gè)穩(wěn)定版 2020.3.1 也正式亮相。
盡管才剛迎來(lái) 1.0,但谷歌表示“目前 Play Store 中已經(jīng)有超過(guò) 2000 款應(yīng)用程序在使用 Compose——更重要的是,就連 Play Store 這款應(yīng)用本身也在使用 Compose?!惫雀璺矫孢€表示,“我們一直在與一些頂級(jí)應(yīng)用的開(kāi)發(fā)人員進(jìn)行合作,他們的反饋和支持幫助我們使 1.0 版本更加強(qiáng)大?!?/p>
Jetpack Compose for Android 迎來(lái) 1.0 版本
Compose 基于 Kotlin 開(kāi)發(fā),而 Kotlin 與 Android Studio(即官方指定的 Android IDE)均來(lái)自開(kāi)發(fā)工具廠商 JetBrains。雖然 Jetpack Compose 專為 Android 打造(與谷歌的 Flutter 框架不同), 但 JetBrains 公司堅(jiān)信 Compose 完全能夠獲得跨平臺(tái)能力 。
Compose for Desktop: 這只是開(kāi)始
Compose Multiplatform 可以說(shuō)是該框架面向 MacOS、Linux、Windows 以及 Web 開(kāi)設(shè)的一個(gè)端口,目前剛剛發(fā)布 1.0 Alpha 版本。雖然尚處于早期開(kāi)發(fā)階段,但 JetBrains 表示,其已經(jīng)“為開(kāi)發(fā)人員帶來(lái)能夠基本安全使用的穩(wěn)定 API”。
TheRegister 就此事詢問(wèn)了 JetBrains 公司 Compose 項(xiàng)目負(fù)責(zé)人 Nikolay Igotti,希望了解為什么該公司在擁有了已經(jīng)廣泛應(yīng)用于 IntelliJ IDEA IDE 及多種豐富變體的桌面應(yīng)用程序跨平臺(tái) Java 框架之外,還要費(fèi)力開(kāi)發(fā) Compose for Desktop。Igotti 的回答是,“舊有 Java 框架基本上就是修改版的 Swing。Swing 屬于默認(rèn) JDK UI 框架,Swing 和 AWT(Abstract Windows Toolkit,抽象窗口工具包)。Compose 則完全是另一碼事,當(dāng)然我們也在設(shè)計(jì)中考慮到了互操作性需求……Swing 這套框架太陳舊了,最早出現(xiàn)在上世紀(jì)九十年代末。多年來(lái)人們對(duì)于 UI 的設(shè)計(jì)思路已經(jīng)天翻地覆,Swing 顯然滿足不了要求了?!?/p>
JetBrains IDE 中的 Compose for Desktop 項(xiàng)目
Compose 與 Swing 有一個(gè)比較大的共同點(diǎn):與其他使用本機(jī)控件的跨平臺(tái)框架,比如例如 Java 的 SWT(Standard Widget Toolkit)以及微軟的 Xamarin 有所不同,它們選擇自主繪制控件。Compose 使用的 Skia 開(kāi)源圖形庫(kù),也在谷歌 Chrome、Flutter 及其他眾多框架當(dāng)中得到廣泛應(yīng)用。那這是否意味著 Compose 應(yīng)用程序?qū)](méi)有自己的原生外觀?對(duì)此,Igotti 的回應(yīng)是,“這取決于開(kāi)發(fā)人員的選擇,取決于他們?nèi)绾螢閼?yīng)用程序設(shè)置主題。在這方面,Compose 的情況與 Flutter 等其他框架沒(méi)什么區(qū)別。”
那 Compose for Desktop 應(yīng)用程序是否依賴于 JVM(Java Virtual Machine)運(yùn)行?Igotti 表示,“我們也知道,JVM 應(yīng)用程序的發(fā)布情況可能比較棘手。因此我們提供自己的 Gradle 插件,其使用 jpackage 與 Jlink 以 JVM 應(yīng)用程序?yàn)榛A(chǔ)制作原生應(yīng)用程序。Mac 的.dmg、Windows 的 MSI、Linux 的 deb 包等均可實(shí)現(xiàn),大家用不著擔(dān)心 JVM?!?/p>
也就是說(shuō),開(kāi)發(fā)成果將會(huì)是一款被精心包裹起來(lái)的 JVM 應(yīng)用程序。JetBrains 還有一款用于解決這個(gè)問(wèn)題的 Kotlin/Native 編譯器,“預(yù)計(jì)將在未來(lái)發(fā)布,或者專門用于桌面開(kāi)發(fā)?!?/p>
對(duì)應(yīng)用程序的另一種思考方式
那 Web 應(yīng)用程序方面呢?Igotti 回應(yīng)稱,“我們使用 Kotlin/JS 編譯器?!盋ompose 的 Web 版本不如桌面版先進(jìn),說(shuō)明文檔中也警告稱“API 尚未最終確定,預(yù)計(jì)會(huì)發(fā)生重大變化?!贝送?,雖然 Web 版本確實(shí)使用 Compose 模型,但 API 卻完全不同,而且會(huì)使用 HTML 與 CSS。所以,Web 版與 Compose for Desktop 之間能夠共享的代碼應(yīng)該比較少。
據(jù) Igotti 介紹,“Compose 代表著一種不同的應(yīng)用程序思考方式。狀態(tài)即 UI 的真實(shí)來(lái)源,而 UI 本身是無(wú)狀態(tài)的,其表達(dá)永遠(yuǎn)由狀態(tài)計(jì)算得出。在這方面,Compose for Web 采用一組相同的原語(yǔ),完全相同的狀態(tài)管理思路。但是對(duì)于具體的小部件集合與排列方式,Web 版與桌面版之間確實(shí)無(wú)法互通?!?/p>
說(shuō)到這里,為什么要把 Compose for Android 擴(kuò)展到多種其他平臺(tái)之上?“Compose 的目標(biāo)受眾主要分為三類。首先是使用 Kotlin 與 Compose 的 Android 開(kāi)發(fā)人員,他們希望把自己的開(kāi)發(fā)成果交付至其他平臺(tái);其二是純 Kotlin 開(kāi)發(fā)人員,他們希望以‘一次編寫、隨處運(yùn)行’的方式開(kāi)發(fā)新的應(yīng)用程序;第三則是那些不太熟悉 Kotlin 或者 Compose,但又希望開(kāi)發(fā)出精美 UI 的用戶,我們希望能為他們提供實(shí)現(xiàn)目標(biāo)的工具。”
Igotti 并沒(méi)有給出具體的發(fā)布日期,但表示自己希望 Beta 版能在今年秋天發(fā)布,“我們也希望能在今年之內(nèi)推出 1.0 版本。”項(xiàng)目本身是完全開(kāi)源的,“二十一世紀(jì)了,框架在大多數(shù)人們心目中就不應(yīng)該收費(fèi)。我們只是想開(kāi)發(fā)一款長(zhǎng)期缺失的軟件”,補(bǔ)足 JetBrains 當(dāng)前商業(yè)模式中的工具鏈。
那么,JetBrains 會(huì)在自己的其他工具中使用 Compose 嗎?事實(shí)上,他們的 JetBrains Toolbox(用于管理已安裝的 IDE)已經(jīng)在使用 Compose,但 Igotti 表示短時(shí)間內(nèi) Compose 還無(wú)法取代 IntelliJ IDEA 等現(xiàn)有框架。“編輯器是其中最復(fù)雜也最重要的組件,經(jīng)歷了 20 年的發(fā)展演進(jìn),我們幾乎不可能在中途進(jìn)行重寫了。無(wú)論是 JetBrains 還是我個(gè)人,都不打算強(qiáng)迫每個(gè)人都轉(zhuǎn)而使用 Compose。我們的目標(biāo)是為原有框架選項(xiàng)滿足不了的用戶提供新的解決方案?!?/p>
寫在最后
那么,為什么除了 Flutter 之外,我們還需要另一個(gè)跨平臺(tái)框架?雖然谷歌的 Flutter 最開(kāi)始主要面向移動(dòng)設(shè)備,但現(xiàn)在也開(kāi)始向桌面及 iOS 進(jìn)軍,甚至比 Compose 還搶先了一步。不過(guò),根據(jù) StackOverflow 的最新調(diào)查, Flutter 使用的語(yǔ)言為 Dart;盡管 Dart 語(yǔ)言的人氣正在增長(zhǎng)(正是受到 Flutter 的推動(dòng)),但仍然無(wú)法與 Kotlin 相提并論。
Compose 代表著一種獨(dú)特的 UI 構(gòu)建方法,也許最期待 Compose 跨平臺(tái)功能的受眾,正是那些曾在 Android 上使用過(guò)它、又特別喜歡這種 UI 構(gòu)建體驗(yàn)的開(kāi)發(fā)者。
想要進(jìn)一步了解 Compose,國(guó)內(nèi) Android 開(kāi)發(fā)者可訪問(wèn)以下鏈接查看中文手冊(cè):
延伸閱讀:
分享名稱:fluttercss的簡(jiǎn)單介紹
文章起源:http://jinyejixie.com/article32/dsedjpc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、服務(wù)器托管、外貿(mào)建站、靜態(tài)網(wǎng)站、定制開(kāi)發(fā)、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)