當(dāng)下,構(gòu)建交互式應(yīng)用程序的主流技術(shù)是 Web 技術(shù),其中包括 HTML、CSS 與 JavaScript。
在過(guò)去的 10 年,Web 技術(shù)生態(tài)發(fā)生了翻天覆地的變化,包括層出不窮的開(kāi)發(fā)框架,諸如 React、Vue、Svelte,也包括日新月異的前端工程化工具,比如 Webpack、esbuild、Vite 等等。
但歸根結(jié)底,他們都逃不開(kāi) HTML、CSS、JavaScript 三劍客的范疇。
Web 技術(shù)生態(tài)成熟、穩(wěn)定,然而卻存在一個(gè)致命的問(wèn)題:使用 Web 技術(shù)去構(gòu)建跨平臺(tái)應(yīng)用程序并不是一件簡(jiǎn)單的事情。
這也是為什么許多平臺(tái)特定的框架(platform-specific frameworks)與跨平臺(tái)框架(cross-platform frameworks)依然受到歡迎的原因。
比如其中最著名的跨平臺(tái)框架 Flutter,它部分基于瀏覽器引擎的技術(shù),實(shí)現(xiàn)了「編寫(xiě)一次,全平臺(tái)運(yùn)行」的目標(biāo)。而且這些框架,也基本不使用 HTML、CSS 這些 Web 技術(shù)。這是為什么呢?
因?yàn)?HTML 誕生的目的問(wèn)題,以及 HTML 與 CSS 的開(kāi)發(fā)體驗(yàn)問(wèn)題。
HTML 即超文本標(biāo)記語(yǔ)言,最初是三十年前為了制作可鏈接的文檔而發(fā)明的,而不是為了做應(yīng)用程序。它更多是一種標(biāo)記而不是一種語(yǔ)言。大多數(shù)人甚至都不將編寫(xiě) HTML 視為編程,因?yàn)樗静皇且环N編程語(yǔ)言。
直到出現(xiàn) HTML5 (通常被稱為 H5)、CSS3 和 ES5 版本之后的 JavaScript,人們才逐漸開(kāi)始用這些技術(shù)制作 Web 應(yīng)用程序。在那之前,HTML 只是用于完成他最開(kāi)始的目的。
但做成 Web 應(yīng)用的可行性,最大還是來(lái)自于 JavaScript 性能的提升。
上面是 Lin Clark 介紹 JavaScript 性能歷史的一張圖。從2008年開(kāi)始,JavaScript 性能就開(kāi)始飛速提升。這對(duì)于應(yīng)用程序的最終用戶來(lái)說(shuō)有巨大的好處,因?yàn)樽龀鰜?lái)的應(yīng)用程序終于不卡了,甚至可以對(duì)性能有所期待了。
但是,對(duì)于開(kāi)發(fā)者來(lái)說(shuō),仍然逃不開(kāi)編寫(xiě) HTML+CSS。
就算使用一些前沿的前端框架,如 React、Vue、Angular 等,我們?nèi)匀恍枰帉?xiě)類似 HTML 的代碼,并仔細(xì)調(diào)整 CSS 或者 CSS 預(yù)處理器(如 SCSS、Saas)的樣式表。
這緩慢、枯燥、而且乏味。
太多的人力、時(shí)間被浪費(fèi)在實(shí)現(xiàn)圖形用戶界面的細(xì)節(jié)上,使用一些并不是一開(kāi)始就為了 UI 而設(shè)計(jì)的技術(shù)。這導(dǎo)致開(kāi)發(fā)者經(jīng)常要來(lái)回調(diào)整樣式、處理瀏覽器兼容性問(wèn)題、應(yīng)用奇怪的 CSS 技巧、避開(kāi)性能陷阱等等。
另外,還需要在過(guò)度發(fā)展的 NPM 生態(tài)系統(tǒng)中,使用那些復(fù)雜的前端工程工具來(lái)進(jìn)行應(yīng)用程序的構(gòu)建。這個(gè)過(guò)程效率也非常低下,開(kāi)發(fā)體驗(yàn)非常痛苦。更不要說(shuō) Web 應(yīng)用在跨平臺(tái)需求中會(huì)遇到更多的陷阱,比如平臺(tái)兼容性、體積大小、性能問(wèn)題,等等。
此刻,我們質(zhì)疑,堅(jiān)持使用 HTML 和 CSS 的理由到底是什么?
然后我們?cè)倩剡^(guò)頭來(lái)看看其他的非 Web 框架。
Electron 首先被我們排除。雖然微軟用它做出了 VSCode 這樣成熟的跨平臺(tái)應(yīng)用程序,但也投入了巨大的成本,并且一般開(kāi)發(fā)者可沒(méi)有這么雄厚的財(cái)力。
但最關(guān)鍵的是,VSCode 其實(shí)是用 Web 技術(shù)做出來(lái)的,Electron 只是幫助它做成了跨平臺(tái)應(yīng)用而已。
看看我們還有什么其他選擇:
隨著近年來(lái) Web 應(yīng)用的比例不斷增加,桌面端應(yīng)用逐漸式微。但正是因?yàn)?Web 應(yīng)用在跨端上的致命問(wèn)題,這些非 Web 框架仍有一席之地,并且看上去也具有不可替代性。
當(dāng)然,其中的某些年代過(guò)于久遠(yuǎn)的開(kāi)發(fā)框架,開(kāi)發(fā)人員的體驗(yàn)甚至比編寫(xiě) HTML 更糟糕,因?yàn)樗麄兛赡鼙黄染帉?xiě)類似于這樣的命令式和面向?qū)ο?/span>的代碼。
var count = 0
let stack = new VStack
let text = new Text("Count: \(count)")
stack.add_child(text)
let button = new Button("Increment")
button.set_onclick(||
count += 1
text.set_text("Count: \(count)")
)
stack.add_child(button)
不是編寫(xiě)聲明式且響應(yīng)式的代碼,就像程序員一直夢(mèng)寐以求的這樣:
struct AppState {
count: i32
}
VStack {
Text("count: \(state.count)")
Button("Increment") {
state.count += 1
}
}
這就是為什么 Flutter 看起來(lái)像是開(kāi)發(fā)應(yīng)用程序的靈丹妙藥:
不過(guò)也還是有開(kāi)發(fā)者不喜歡 Flutter,因?yàn)樗肓肆硪环N新的、陌生的語(yǔ)言 Dart,以及額外的虛擬機(jī)負(fù)擔(dān)。
Flutter 真正的問(wèn)題在于與現(xiàn)有生態(tài)系統(tǒng)的兼容性,因?yàn)槿藗儍A向于更喜歡重用已建立的資源和維護(hù)成熟的應(yīng)用程序。編程語(yǔ)言也是出于同樣的原因。
為了解決 Flutter 的一些問(wèn)題,有些優(yōu)秀開(kāi)發(fā)者們嘗試開(kāi)發(fā)了 Flutter 的 JavaScript 版本,雖然后來(lái)失敗了。因?yàn)?Flutter 本身正在迅速迭代,以至于兩者無(wú)法融洽。不過(guò)這部分的工作導(dǎo)致誕生了 Kraken 框架,它允許編碼人員編寫(xiě) HTML,并使用 Flutter 引擎進(jìn)行跨平臺(tái)渲染。
等等...發(fā)生了什么?在非 Web 框架中再次編寫(xiě) HTML?
不!再也不想寫(xiě) HTML 了!
盡管如此,我們不得不承認(rèn),HTML+CSS 是表示 UI 的一個(gè)很好的組合,因?yàn)椋?/span>
但是在實(shí)踐中,UI 的工程有時(shí)是沒(méi)有意義且不必要的。假設(shè)我們已經(jīng)有了設(shè)計(jì)師提供的高保真設(shè)計(jì)原型,編碼人員需要做的是:
第一部分總是讓人頭疼的源頭:涉及大量的細(xì)節(jié)、耗時(shí)、需要與設(shè)計(jì)師進(jìn)行討論反復(fù)溝通,溝通成本很高,如果設(shè)計(jì)更新,代碼也需要更新,也許還需要另一場(chǎng)“昂貴”的討論。
更不用說(shuō),這種工作通常被視為費(fèi)時(shí)費(fèi)力沒(méi)技術(shù)含量工作,也因此就有了大家聽(tīng)到的前端程序員通常被其他非前端程序員所鄙視。
一些聰明的開(kāi)發(fā)者想出了使用編譯器技術(shù)或更具體地說(shuō)是轉(zhuǎn)換器技術(shù)來(lái)實(shí)現(xiàn)設(shè)計(jì)到代碼的解決方案,將整個(gè)高保真設(shè)計(jì)轉(zhuǎn)換為機(jī)器生成的 HTML+CSS 代碼。這個(gè)就是所謂的 Design to Code。
但它是為產(chǎn)品經(jīng)理和設(shè)計(jì)師量身定制的,而不是為開(kāi)發(fā)人員。這種內(nèi)在問(wèn)題包括但不限于:
總之,從開(kāi)發(fā)者的角度來(lái)看,Design to Code 不是一個(gè)好的技術(shù)解決方案。
現(xiàn)在讓我們看看什么是 Design as Code。
在 VGG 所倡導(dǎo)的 Design as Code 開(kāi)發(fā)流程中,用戶可以在某種程度上拋棄 HTML+CSS。
因?yàn)樵O(shè)計(jì)稿完全替代了 HTML+CSS 的角色,設(shè)計(jì)就是代碼。請(qǐng)記住 VGG 的第一性原則:通過(guò)消除冗余的開(kāi)發(fā)工作來(lái)彌合設(shè)計(jì)與開(kāi)發(fā)兩方之間的巨大鴻溝。
很明顯的優(yōu)勢(shì):圖形用戶界面的設(shè)計(jì)和開(kāi)發(fā)只需要進(jìn)行一次,因?yàn)閮烧邔?shí)際上是一體的。因此兩者的摩擦、討論會(huì)減少,這讓雙方都更高效。
對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),他們能夠直接在設(shè)計(jì)文件上編寫(xiě)業(yè)務(wù)邏輯,然后由 VGG 將其運(yùn)行為一個(gè)交互式圖形應(yīng)用程序。這可以節(jié)省大量重復(fù)的工作,不僅提高了開(kāi)發(fā)人員的工作效率,也為整個(gè)團(tuán)隊(duì)增加了工作效率。
Design as Code 的想法很簡(jiǎn)單,但它實(shí)現(xiàn)起來(lái)非常困難,比如會(huì)遇到來(lái)自編譯器技術(shù)、編程接口抽象和圖形渲染方面的工程挑戰(zhàn)。
因此,為了實(shí)現(xiàn) VGG 的 Design as Code 開(kāi)發(fā)流程
VGG 天生就有著對(duì)開(kāi)發(fā)生態(tài)很好的兼容性。相比于低代碼,VGG 是一套真正為開(kāi)發(fā)者設(shè)計(jì)的工具。小結(jié):
基于以上兩點(diǎn),VGG 以及它主打的 Design as Code 可以為現(xiàn)代交互式應(yīng)用開(kāi)發(fā)帶來(lái)巨大的好處。在最終用戶對(duì)用戶界面的實(shí)際使用效果沒(méi)有明顯感知差異的前提下,大大提升了應(yīng)用開(kāi)發(fā)者的開(kāi)發(fā)體驗(yàn),甚至可以讓設(shè)計(jì)師、產(chǎn)品經(jīng)理來(lái)承擔(dān)一部分的界面開(kāi)發(fā)工作:無(wú)非是把現(xiàn)有的設(shè)計(jì)工具當(dāng)作一個(gè) UI Builder 來(lái)使用罷了。
下面引用來(lái)自 VGG Github 首頁(yè)的一張圖,來(lái)更好地說(shuō)明 Design as Code 的概念與 VGG 的有機(jī)組成:
在這篇文章中,我們討論了 Web 技術(shù)、特定平臺(tái)的框架、跨平臺(tái)框架、Design to Code 解決方案以及基于 VGG 開(kāi)源引擎的 Design as Code 開(kāi)發(fā)流程。
我們提出了 Design as Code 的概念,介紹了 VGG 作為一個(gè)全新的開(kāi)發(fā)交互式圖形應(yīng)用程序的框架。但 VGG 仍然年輕,因?yàn)檫€有許多技術(shù)挑戰(zhàn)需要克服,VGG 運(yùn)行時(shí)引擎現(xiàn)已開(kāi)源,歡迎大家一起參與 VGG 開(kāi)源社區(qū)共建。
關(guān)于 VGG 的更多細(xì)節(jié)將在后續(xù)的文章中討論。如果您感興趣,可以繼續(xù)閱讀官方博客和文檔
https://blog.verygoodgraphics.com/
迎觀看Illustrator教程,小編帶大家學(xué)習(xí) Illustrator 的基本工具和使用技巧,了解如何在 Illustrator 使用畫(huà)板和命令導(dǎo)航畫(huà)板。
在 Illustrator 中如想創(chuàng)建一個(gè)宣傳冊(cè)這樣的多頁(yè)文檔或一個(gè)多頁(yè)面的web設(shè)計(jì),可以創(chuàng)建一系列畫(huà)板。在本文中,我們將學(xué)習(xí)什么是畫(huà)板以及如何瀏覽包含多個(gè)畫(huà)板的文檔。
打開(kāi)文件, 要查看文件的全部?jī)?nèi)容,依次選擇「視圖」-「全部適合窗口大小」。
在 Illustrator 中創(chuàng)建文檔時(shí),首先應(yīng)該創(chuàng)建至少一個(gè)畫(huà)板。畫(huà)板就像InDesign或 Microsoft Word 中的頁(yè)面一樣,代表可供打印的區(qū)域。如文檔中所見(jiàn), 畫(huà)板可能具有不同的尺寸和方向。也可以按照自己的喜好排列畫(huà)板,甚至把它們重疊在一起。
畫(huà)板周?chē)拇笃疑珔^(qū)域,叫做畫(huà)布區(qū)域,適合盛放可能不會(huì)打印或?qū)С龅膬?nèi)容。例如當(dāng)前用不上的替代圖像或圖稿(圖標(biāo))。
針對(duì)包含多個(gè)畫(huà)板的文檔,您需要了解如何在 Illustrator 中高效地瀏覽這些畫(huà)板。在「工具」面板中選擇「選擇工具」,單擊左側(cè)第一個(gè)畫(huà)板中的圖稿。
注意,畫(huà)板周?chē)倪@些小黑線表示這個(gè)畫(huà)板處于活動(dòng)狀態(tài),也就是正在處理的這個(gè)畫(huà)板。
依次選擇「視圖」-「畫(huà)板適合窗口大小」。使用這個(gè)命令,將活動(dòng)畫(huà)板調(diào)整到適合文檔窗口的大小。
「畫(huà)板適合窗口大小」或「全部適合窗口大小」等「視圖」菜單命令是在畫(huà)板之間進(jìn)行切換的好辦法,也可以使用「屬性」面板瀏覽畫(huà)板。
依次選擇「選擇」-「取消選擇」,如果這個(gè)選項(xiàng)可選,確保未選中任何圖稿。
在無(wú)圖稿被選中時(shí),文檔中的所有畫(huà)板全部被列入此「屬性」面板菜單中。
要在畫(huà)板之間進(jìn)行切換,從此菜單中選擇畫(huà)板編號(hào)或者單擊向前或向后的箭頭。
選中的畫(huà)板,會(huì)自動(dòng)調(diào)整到適合「文檔」窗口的大小。
有時(shí)候,無(wú)論選中了什么內(nèi)容,都可以轉(zhuǎn)到左下角,在文檔下方找到更快速瀏覽畫(huà)板的方法。單擊「畫(huà)板導(dǎo)航」菜單,查看帶有對(duì)應(yīng)名稱的畫(huà)板列表。
選擇 Business Card Front 名片字體,查看該畫(huà)板,并將其調(diào)整到適應(yīng)「文檔」窗口的大小。
要再次查看內(nèi)容中的全部畫(huà)板,依次選擇「視圖」-「全部適合窗口大小」。
現(xiàn)在已經(jīng)了解了什么是畫(huà)板,以及如何在文檔中高效地瀏覽畫(huà)板,下次處理多畫(huà)板文檔時(shí),就能更容易地從一個(gè)畫(huà)板切換到另一個(gè)畫(huà)板。
要關(guān)閉而不保存文檔, 依次選擇「文件」-「關(guān)閉」。
以上就是在 Illustrator 中使用畫(huà)板和命令導(dǎo)航畫(huà)板的方法。
llustrator矢量圖軟件下載地址:Illustrator 2020 for Mac(ai 2020 直裝版)
https://www.macz.com/mac/5120.html?id=NzY4OTYwJl8mMjcuMTg2LjExLjEwMw%3D%3D
windows系統(tǒng)軟件下載地址:Adobe Illustrator CC 2020(矢量圖形軟件)
https://soft.macxf.com/soft/731.html?id=MjkzODQ%3D
迎觀看Illustrator最新版教程,小編帶大家學(xué)習(xí) Illustrator2020中文版的基本工具和使用技巧,了解如何在 Illustrator 中使用顏色混合器創(chuàng)建色板以及色板的淺色調(diào)。
在Illustrator中文版中,可以創(chuàng)建許多不同類型的顏色。在這個(gè)圖標(biāo)中,可以看到一些較深的橙色和一些淺橙色,較淺的顏色可以給等距圖賦予立體感。這些較淺的橙色稱為原始橙色的淡色調(diào),淡色調(diào)為原始顏色較淺的版本。
在本文中,我們將創(chuàng)建一個(gè)右側(cè)所示的圖形,用橙色填充某些形狀,然后再創(chuàng)建一些淺色調(diào)的橙色用來(lái)填充其他形狀。首先創(chuàng)建并保存一種顏色,選擇「選擇工具」,點(diǎn)擊選擇右側(cè)這個(gè)形狀。
要更改填充顏色,在右側(cè)的「屬性」面板中點(diǎn)擊「填色」,在顯示的面板中選擇「色板」,對(duì)這個(gè)形狀應(yīng)用色板下的默認(rèn)顏色。
但是在這里要混合創(chuàng)建一種新的顏色,點(diǎn)擊頂部的「顏色混合器」按鈕。使用這里的顏色滑塊來(lái)混合顏色,對(duì)于這個(gè)文件,顯示的是用于打印的典型油墨顏色,分別為藍(lán)綠色、品紅、黃色和黑色。
除此之外還可以在底部的「色譜」中來(lái)選擇顏色,在色譜中點(diǎn)擊鼠標(biāo),來(lái)選擇和應(yīng)用顏色,每點(diǎn)擊一下,就會(huì)選擇一種顏色。
而且可以看到所選顏色中藍(lán)綠色、品紅、黃色和黑色的比例,應(yīng)用顏色后將它保存為色板,這樣就可以在其他位置重復(fù)使用。
點(diǎn)擊頂部的「色板」按鈕,切換到文件自帶的默認(rèn)色板,要保存你剛才創(chuàng)建的顏色,點(diǎn)擊下方的「新建色板」按鈕。
在打開(kāi)的「新建色板」對(duì)話框中,更改「色板名稱」將它改為「圖標(biāo)」。
要?jiǎng)?chuàng)建這種顏色的淺色調(diào)版本需要選中「全局色」選項(xiàng),該選項(xiàng)默認(rèn)選中,這樣在你進(jìn)行編輯時(shí),整個(gè)圖中的全局顏色將會(huì)自動(dòng)更新,點(diǎn)擊「確定」保存顏色。
現(xiàn)在顏色已經(jīng)保存為色板,可以將它應(yīng)用到圖中了。
點(diǎn)擊選中這個(gè)形狀,然后按住 Shift 鍵點(diǎn)擊,選擇更多形狀,選擇完成后,松開(kāi) Shift 鍵。
要更改填充顏色,在右側(cè)點(diǎn)擊「填色」,并選擇「色板」,選擇顏色「圖標(biāo)」。
現(xiàn)在來(lái)創(chuàng)建「圖標(biāo)」色板的淺色調(diào)版本。首先選擇要對(duì)其應(yīng)用淺色調(diào)的圖形,點(diǎn)擊這個(gè)n形狀,然后按住 Shift 鍵點(diǎn)擊再選中這個(gè)I形狀。
要應(yīng)用「圖標(biāo)」色板,點(diǎn)擊「填色」顏色之后選擇該色板。
要?jiǎng)?chuàng)建該顏色的淺色調(diào)版本,點(diǎn)擊上方的「顏色混合器」按鈕。
這里只有一個(gè)名為「T」的滑動(dòng)條,向左側(cè)拖動(dòng)滑塊使顏色變淺,把它拖動(dòng)到「35」左右,色調(diào)的范圍是 0 到 100%,數(shù)值越低顏色越淺。
現(xiàn)在將該色調(diào)保存為色板,以便再次使用,點(diǎn)擊上方的「色板」圖標(biāo),要保存它,點(diǎn)擊底部的「新建色板」按鈕。
在面板中可以看到一個(gè)新的「圖標(biāo)」色板,如果將鼠標(biāo)移動(dòng)到它上面,可以看到它的名稱和色調(diào)百分比。
如果要更改原始的圖標(biāo)顏色,那么基于原始顏色的所有色調(diào)都將發(fā)生變化,來(lái)試一下。點(diǎn)擊并選中這個(gè)圖形,要編輯填充顏色,在右側(cè)點(diǎn)擊「填色」顯示色板后,雙擊「圖標(biāo)」色板進(jìn)行編輯。
在出現(xiàn)的對(duì)話框中,選擇「預(yù)覽」查看任何更改,試著拖動(dòng)一個(gè)顏色滑塊來(lái)更改顏色,可以看到你保存的基于「圖標(biāo)」色板的色調(diào)同樣發(fā)生了改變,點(diǎn)擊「確定」。
可以簡(jiǎn)單練習(xí)一下嘗試對(duì)這些白色形狀應(yīng)用圖標(biāo)顏色,然后嘗試創(chuàng)建新的色調(diào)將顏色和色調(diào)保存為色板,可以有助于你更方便地為自己的作品增添創(chuàng)意。
以上就是在 Illustrator 中使用顏色混合器創(chuàng)建色板的方法。
adobeillustrator破解版下載地址:Illustrator 2020 for Mac(ai 2020 直裝版)
https://www.macz.com/mac/5120.html?id=NzY4OTYwJl8mMjcuMTg2LjE1LjI0OA%3D%3D
windows軟件激活地址:Adobe Illustrator2022(AI 2022)
https://soft.macxf.com/soft/1246.html?id=MjkzODQ%3D
*請(qǐng)認(rèn)真填寫(xiě)需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。