日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
再談Go語(yǔ)言在前端的應(yīng)用前景

 今年是舉辦 ECUG Con 的第 11 年,之前我談的基本都是服務(wù)端的開(kāi)發(fā)實(shí)踐。從去年起我開(kāi)始不談后端而是談前端。當(dāng)然,去年我沒(méi)有說(shuō)為什么我會(huì)關(guān)注前端。今天再談 Go 語(yǔ)言在前端的應(yīng)用之前,我先簡(jiǎn)單聊一下思路脈絡(luò),為什么我今天會(huì)關(guān)注前端。

前端的演進(jìn)

最早的 PC 時(shí)期,常見(jiàn)的設(shè)備主要是臺(tái)式機(jī)、筆記本。這兩類(lèi)設(shè)備是 PC 時(shí)代主流設(shè)備,用的操作系統(tǒng)主流的是三個(gè),分別是 Mac 、 Linux、Windows。前兩者市場(chǎng)占有率非常少,基本是 Windows 一統(tǒng)天下。瀏覽器早期因?yàn)?Windows 的流行,主要是 IE,但在今天 Chrome 市場(chǎng)占有率非常高。另外還有 Safari、Firefox,大家也都耳熟能詳。

從蘋(píng)果發(fā)布 iPhone 為標(biāo)志,我們開(kāi)始進(jìn)入移動(dòng)時(shí)期。這個(gè)時(shí)期的設(shè)備主要是手機(jī)和平板,以手機(jī)為主。操作系統(tǒng)基本是安卓和 iOS,像 Windows Mobile 之類(lèi)的占比非常少。瀏覽器不是 Chrome 這類(lèi)桌面瀏覽器,而是從微信小程序開(kāi)始,有了移動(dòng)時(shí)代的瀏覽器。在國(guó)內(nèi)小程序的種類(lèi)非常多,包括支付寶小程序、頭條小程序等等。我認(rèn)為這才真正是移動(dòng)瀏覽器戰(zhàn)爭(zhēng)的開(kāi)始。

比較奇怪的是,為什么移動(dòng)瀏覽器之爭(zhēng)沒(méi)有在美國(guó)開(kāi)始,而是在中國(guó)開(kāi)始,這也是比較有意思的地方。小程序相關(guān)的技術(shù),無(wú)論是谷歌還是其他公司,也都在琢磨,當(dāng)然也可能是我孤陋寡聞,我沒(méi)有看到國(guó)外出現(xiàn)移動(dòng)瀏覽器的跡象。為什么我說(shuō) Chrome 這些不是移動(dòng)下的瀏覽器,是因?yàn)椴僮魇指胁顒e非常大。微信小程序是試圖讓 BS 結(jié)構(gòu)的應(yīng)用和 Native 應(yīng)用手感無(wú)差別,這是非常重要的嘗試。

我也暢想了一下未來(lái),移動(dòng)時(shí)期設(shè)備還比較少,筆記本、手機(jī)、平板是最主流的設(shè)備。臺(tái)式機(jī)今天不太見(jiàn)得到,但筆記本大家經(jīng)常會(huì)用。ECUG 是在 2007 年,差不多蘋(píng)果發(fā)布蘋(píng)果手機(jī)時(shí)開(kāi)始的。在那時(shí)候,我做了一個(gè)判斷,未來(lái)是一個(gè)強(qiáng)悍的服務(wù)端加上多元化的終端,其實(shí)就是前端。但今天在我看來(lái),前端多元化還沒(méi)有真正意義上的出現(xiàn)。

在 ECUG 的第 11 年,可以看到這個(gè)多樣化的趨勢(shì)已經(jīng)越來(lái)越趨向于現(xiàn)實(shí),包括手機(jī)之后下一個(gè)前端戰(zhàn)場(chǎng),在我看來(lái)是汽車(chē)。汽車(chē)非?;鸨?。當(dāng)然,會(huì)有更多設(shè)備,很多人都會(huì)認(rèn)為下一個(gè)是所謂的物聯(lián)網(wǎng)時(shí)代,我們不必談這么抽象的名詞,也能預(yù)測(cè)到未來(lái)前端的趨勢(shì)會(huì)非常多元化。這個(gè)多元化和 PC 時(shí)期、移動(dòng)時(shí)期都非常不一樣,因?yàn)槠聊坏某叽缭谇岸私换ダ镎挤浅jP(guān)鍵的因素。除了汽車(chē),今天手表也蠻多,但普及率可能還不如手機(jī)和平板。手表是一個(gè)很特別的東西,它在這么小的屏幕上,要把前端玩出花來(lái),其實(shí)是非常難的事情。未來(lái)操作系統(tǒng)到底會(huì)是怎么樣的?今天還是未知狀態(tài)。

前端的演進(jìn)跟設(shè)備演進(jìn)非常有關(guān)聯(lián)。所以前端的演進(jìn)是大起大落的,這和服務(wù)端非常不一樣。服務(wù)端的發(fā)展非常穩(wěn)健。操作系統(tǒng)偏 Unix 系為主,到今天仍然如此,不太劇烈變動(dòng)。但前端由于終端變化,導(dǎo)致操作系統(tǒng)的演進(jìn)非常劇烈。

云計(jì)算的演進(jìn)

云計(jì)算的演進(jìn),我分三個(gè)階段:一階段,以亞馬遜的 EC2 為典型代表的,我叫做機(jī)器計(jì)算階段。虛擬機(jī)(VM)為基礎(chǔ)構(gòu)建了整個(gè)體系結(jié)構(gòu)。虛擬機(jī)和物理機(jī)沒(méi)什么區(qū)別,現(xiàn)在大家摸不到虛擬機(jī),但從操作一臺(tái)虛擬機(jī)手感來(lái)說(shuō)和物理機(jī)區(qū)別不大。

今天看到很多不一樣的地方,因?yàn)槿萜髋d起了,從 2014 年開(kāi)始興起到今天典型的標(biāo)志是 Kubernetes 一統(tǒng)了容器操作系統(tǒng)的天下。以這樣的基礎(chǔ),能看到云計(jì)算演進(jìn)到了第二階段。容器計(jì)算時(shí)期和機(jī)器計(jì)算時(shí)期的計(jì)算不太一樣,容器會(huì)越來(lái)越關(guān)注運(yùn)維的自動(dòng)化以及相關(guān)基礎(chǔ)支撐,它最終要達(dá)到的目標(biāo)是讓服務(wù)端基本趨向于免運(yùn)維。以后大家做業(yè)務(wù)時(shí),基本不用太在意服務(wù)端的事情。

這也會(huì)帶來(lái)另外一個(gè)問(wèn)題,再下一階段云計(jì)算會(huì)走向哪里?在我看來(lái)是應(yīng)用計(jì)算。因?yàn)樵埔呀?jīng)隨著容器技術(shù)的發(fā)展越來(lái)越標(biāo)準(zhǔn),云計(jì)算下一階段應(yīng)該會(huì)偏向于業(yè)務(wù),和業(yè)務(wù)做越來(lái)越強(qiáng)的融合,不再只是關(guān)注基礎(chǔ)架構(gòu),而是關(guān)注應(yīng)用本身的業(yè)務(wù)架構(gòu)。應(yīng)用業(yè)務(wù)架構(gòu)里,端占非常大的成份。云計(jì)算和端并不是割裂的。

云+端的演進(jìn)趨勢(shì)

在我看來(lái),云計(jì)算會(huì)使得后端的技術(shù)棧越來(lái)越標(biāo)準(zhǔn)化。后端的大部分技術(shù)難題都可標(biāo)準(zhǔn)化解決。每一個(gè)公司都有一個(gè)基礎(chǔ)架構(gòu)部,而云計(jì)算就是把技術(shù)架構(gòu)部從公司里面搬到外面。這個(gè)標(biāo)準(zhǔn)化是自然發(fā)生的。正因?yàn)槿绱耍瑯I(yè)務(wù)的難點(diǎn)和挑戰(zhàn)會(huì)越來(lái)越向前端轉(zhuǎn)移。服務(wù)端沒(méi)太大的挑戰(zhàn)。服務(wù)端從支撐業(yè)務(wù)的角度看,挑戰(zhàn)越來(lái)越少。但從服務(wù)端的體系,可能側(cè)重點(diǎn)會(huì)越來(lái)越偏向于業(yè)務(wù)運(yùn)營(yíng)體系的標(biāo)準(zhǔn)化,就是 BI (商業(yè)智能)方面的東西。但這個(gè)事情的標(biāo)準(zhǔn)化比前端更難。

今天我為什么會(huì)談前端?當(dāng)下我們?nèi)匀辉诤芘Φ赝七M(jìn)后端技術(shù)的標(biāo)準(zhǔn)化,但在我看來(lái),在可以預(yù)期的幾年內(nèi)這個(gè)事情就會(huì)被解決,更遠(yuǎn)的未來(lái)一定會(huì)把精力花在前端。

很多人都知道七牛云跟 Go 語(yǔ)言非常有淵源,我自己大概在 2012 年也比較狂妄地做了一個(gè)預(yù)測(cè),認(rèn)為 Go 語(yǔ)言一定會(huì)進(jìn)語(yǔ)言排行榜靠前,我設(shè)的時(shí)間是 10 年左右。2012 年到現(xiàn)在差不多進(jìn)入第 7 個(gè)年頭。Go 是很專(zhuān)注的語(yǔ)言,用 Go 的人基本都集中在后端的開(kāi)發(fā),而且是偏向于后端 API 層面的開(kāi)發(fā),Web 占比相對(duì)少很多。Go 的專(zhuān)注使得它今天基本占領(lǐng)整個(gè)云計(jì)算領(lǐng)域。很多云計(jì)算公司技術(shù)棧,Go 在里面的占比會(huì)越來(lái)越高。這樣的專(zhuān)注也讓 Go 語(yǔ)言在今年里程碑式地進(jìn)入前十的排名。

Go 語(yǔ)言的演進(jìn)

專(zhuān)注后端開(kāi)發(fā)是沒(méi)辦法讓 Go 排到首位的。原因很簡(jiǎn)單,后端開(kāi)發(fā)尤其是云計(jì)算導(dǎo)致后端技術(shù)越來(lái)越標(biāo)準(zhǔn)化后,會(huì)使得 Go 語(yǔ)言越來(lái)越?jīng)]有用武之地,因?yàn)楹芏鄦?wèn)題的復(fù)雜性被云計(jì)算公司解決掉了。大部分公司都是做自己的業(yè)務(wù)就好了,沒(méi)有必要關(guān)心高并發(fā)、高可用這種服務(wù)端的復(fù)雜。服務(wù)端的挑戰(zhàn),隨著云計(jì)算的影響會(huì)變?nèi)酢_@樣 Go 語(yǔ)言今天所處的位置,如果是一個(gè)公司,應(yīng)該有危機(jī)感,還要突破下一個(gè)戰(zhàn)場(chǎng)。在我看來(lái)它一定會(huì)進(jìn)入前端,也會(huì)讓 Go 語(yǔ)言更偏向于通用語(yǔ)言,領(lǐng)域會(huì)越來(lái)越泛。這樣的一個(gè)變化才能夠讓 Go 成為真正意義上語(yǔ)言排行榜的首位。

為什么 Go 語(yǔ)言適合做前端?

前端需求量大

前端是開(kāi)發(fā)人員最多,需求量最多的工種,對(duì)語(yǔ)言的要求一定是入門(mén)門(mén)檻比較低,心智負(fù)擔(dān)最小。而這個(gè)非常適合 Go。我 2011 年推 Go 時(shí),大部分人不太了解 Go,但今天 Go 語(yǔ)言的受眾已經(jīng)非常廣,大家有很大共識(shí)的一點(diǎn)是,Go 語(yǔ)言的入門(mén)門(mén)檻非常低,心智負(fù)擔(dān)比較少?;境绦?qū)懗鰜?lái)編譯通過(guò),大概率沒(méi)有問(wèn)題。這樣的特性使得它非常適合前端。

前端需要工程化更強(qiáng)的語(yǔ)言

前端業(yè)務(wù)量非常大,所以前端代碼量比后端多很多。前端是負(fù)責(zé)和用戶(hù)打交道的,和人打交道的東西是最復(fù)雜也最容易發(fā)生變化的。今天可能這個(gè)知識(shí)更好,明天可能換了一種新的知識(shí),尤其是我前面提到了端的變化。從 PC、筆記本到手機(jī),屏幕尺寸不一樣,以及過(guò)去以鍵盤(pán)為交互主體變成了觸摸屏,再到未來(lái)手表或者汽車(chē)。為什么很多公司都關(guān)注語(yǔ)音交互,就因?yàn)橄衿?chē)、手表這樣的設(shè)備,語(yǔ)音交互是一個(gè)比較好的手段。但這些都有很大的不確定性。前端的變化是很劇烈的,而交互的手感以及為了讓用戶(hù)舒服、爽,程序員要付出的努力也會(huì)是非常大的。前端的代碼量一定是最多的。

前端非常需要有強(qiáng)工程化能力的語(yǔ)言。今天我們看到前端的代碼量肯定是 JavaScript,但 JavaScript 幾乎是沒(méi)有工程化支持的。它之所以叫 Script,是因?yàn)樾?,?lèi)似于微信小程序。大家仔細(xì)想想,小程序一定不小。在這樣一個(gè)不小的東西上,或者代碼量更多的應(yīng)用里,需要工程語(yǔ)言更強(qiáng)。JavaScript 為什么流行,是因?yàn)樗摹笁艛嗟匚弧埂S袀€(gè)趨勢(shì)已經(jīng)發(fā)生了,但今天還不是特別強(qiáng)烈,就是會(huì)有越來(lái)越多語(yǔ)言進(jìn)軍前端,Go 只會(huì)是其中之一。這是由需求決定的,我也認(rèn)為 Go 是最有希望的那幾個(gè)之一。

前面談為什么我會(huì)在 ECUG Con 談前端,今天我講的東西,也許對(duì)大家影響不會(huì)太大,因?yàn)?Go 做前端畢竟還非常初級(jí),但 ECUG Con 我希望它是一個(gè)前瞻趨勢(shì)探索的會(huì)議,我并不傾向于它一定是非常實(shí)用的,它不需要今天跟大家聊了,明天就把它用到工程上,我對(duì)它并不是這樣的定義。我希望 ECUG 本身是一種對(duì)未來(lái)有預(yù)見(jiàn)的社區(qū)。

Go 在前端的進(jìn)展

回顧 Go 在前端的進(jìn)展,GopherJS 是真正產(chǎn)生了影響力的進(jìn)展。在 GopherJS 之前有非常多人做前端相關(guān)的事情。谷歌也有人推出了一個(gè)框架叫做 GXUI,GXUI 今天已經(jīng)不怎么維護(hù)了。

很多人會(huì)試圖做跨平臺(tái)的框架,但實(shí)際上跨平臺(tái)的框架最有希望的一定是瀏覽器。因?yàn)闉g覽器就是跨平臺(tái)框架。在我看來(lái),像 QT 包括谷歌做的 GXUI,都相對(duì)比較局限。但 GopherJS,我認(rèn)為它是在前端真正能立得住腳的嘗試。他就是干我剛才說(shuō)的事情,讓 Go 語(yǔ)言的程序員能寫(xiě)前端。怎么寫(xiě)?它做了一個(gè)編譯器,這個(gè)編譯器把 Go 代碼翻譯成 JavaScript 代碼,自然而然 Go 就能寫(xiě)前端了。它是把 JavaScript 作為前端的一個(gè)機(jī)器語(yǔ)言,因?yàn)?JavaScript 的位置是繞不過(guò)去的。

但也不見(jiàn)得真的繞不過(guò)去。前端的機(jī)器語(yǔ)言在今天的標(biāo)準(zhǔn)肯定是 JavaScript,但我們也看到了另外一個(gè)東西,叫 WebAssembly,顧名思義它將自己看做是 Web 的匯編語(yǔ)言。但其實(shí)這個(gè) WebAssembly 是二進(jìn)制的,我覺(jué)得說(shuō)它是 Web 的匯編語(yǔ)言,不如說(shuō)它是 Web 的機(jī)器語(yǔ)言。WebAssembly 的覆蓋面比大家想象得要廣,今天所有主流的瀏覽器都已經(jīng)支持了。JavaScript 的「壟斷位置」已經(jīng)有一些變化了,它并不會(huì)一直這樣壟斷下去。大家可能也聽(tīng)過(guò) Go 已經(jīng)支持 WebAssembly,而且是語(yǔ)言?xún)?nèi)建支持,這對(duì) Go 來(lái)說(shuō)也是非常重要的。

Go 在前端的進(jìn)展,第二個(gè)大里程碑事件是 Go 內(nèi)建支持了 WebAssembly(https://github.com/golang/go/wiki/WebAssembly)。從 Go 的 1.11 版本開(kāi)始。這是 Go 官方對(duì) WebAssembly Go 支持的介紹,編譯過(guò)程是把 GOOS 環(huán)境變量定義成 js,架構(gòu)選 wasm,這樣就可以編譯出 wasm 文件,而不是本地的可執(zhí)行程序。這里有一些 DEMO,是一些社區(qū)的人用 Go 寫(xiě)的 WebAssembly 樣例。

DEMO 樣例展示:

  • https://stdiopt.github.io/gowasm-experiments/

  • https://justinclift.github.io/wasmGraph1/

  • https://stdiopt.github.io/gowasm-experiments/splashy/

這展示的效果就是后面的源代碼實(shí)現(xiàn)的。看起來(lái)好像也沒(méi)有什么,但這個(gè)支持是非常關(guān)鍵的。Go 開(kāi)始在語(yǔ)言?xún)?nèi)建就支持 Web 前端的開(kāi)發(fā)。盡管今天它還是一個(gè)經(jīng)驗(yàn)版的狀態(tài),但也是非常重要的里程碑。做這件事情的人和前面干 GopherJS 是同一波人。有那么一堆人他們?cè)谂Π?Go 推向前端。

前面兩個(gè)如果大家關(guān)注 Go 語(yǔ)言應(yīng)該比較多人知道,但接下來(lái)這件事情應(yīng)該大部分人都不知道。有一個(gè)新東西叫做 TinyGo,它是在嵌入式設(shè)備上跑 Go,它是一個(gè)剪裁版的 Go(https://github.com/aykevl/tinygo)。因?yàn)?Go 主要是針對(duì)服務(wù)端開(kāi)發(fā),所以大家對(duì) Go 編譯出的可執(zhí)行文件有多大一點(diǎn)都不在意,但如果留意過(guò)就知道它非常大。TinyGo 試圖讓編譯出的文件足夠小,因?yàn)樵谇度胧皆O(shè)備上磁盤(pán)空間非常珍貴,內(nèi)存也很珍貴。它居然也支持 WebAssembly,能夠做 Web 開(kāi)發(fā),雖然裁掉了很多 Go 的特性。不知道它后面的演化怎么樣,因?yàn)檫@個(gè)項(xiàng)目還非常新,不到一年。對(duì)于新出現(xiàn)的東西,我們只能關(guān)注,也沒(méi)有辦法真的用到什么工程上。

Go 2D 游戲開(kāi)發(fā)引擎(https://github.com/hajimehoshi/ebiten),實(shí)際上 3D 已經(jīng)出現(xiàn)了,今天沒(méi)有列出來(lái)。這個(gè)游戲引擎是日本人做的,而且已經(jīng)拿它做了多款的手游開(kāi)發(fā)。它是一個(gè)已經(jīng)商業(yè)化的引擎。支持的平臺(tái)非常廣,用這個(gè)游戲引擎做出的游戲能夠支持 PC操作系統(tǒng)如 Windows、Mac、Linux、FreeBSD,也支持手機(jī)操作系統(tǒng)Android、iOS,還支持 Web 開(kāi)發(fā)如 GopherJS、WebAssembly。它是一個(gè)生產(chǎn)級(jí)的引擎。我去年演示的 DEMO,用 Go 寫(xiě)了一個(gè)少兒編程語(yǔ)言 Scratch 的解析器,這個(gè)解析器就是用這個(gè) 2D 游戲開(kāi)發(fā)引擎做的。

下一個(gè)有趣的東西是 Go 的前端代碼托管(https://github.com/dave/jsgo)。JavaScript 有很多公開(kāi)的前端代碼托管,但這里出現(xiàn)了 Go 前端代碼托管。直接往這里一扔就直接上云了。這看起來(lái)很小眾,但有人干這些事情。

這也有一些 DEMO:

  • 這是一個(gè)拼數(shù)字的游戲。

    https://jsgo.io/hajimehoshi/ebiten/examples/2048

  • 這是俄羅斯方塊。

    https://jsgo.io/hajimehoshi/ebiten/examples/blocks

  • 這是一個(gè)游戲,大家之前見(jiàn)過(guò)的版本是小鳥(niǎo),不是土撥鼠。

    https://jsgo.io/hajimehoshi/ebiten/examples/flappy

  • 這是一個(gè) To do list 類(lèi)的 Web 應(yīng)用。加它只是為了展示 Go 也能做一個(gè)標(biāo)準(zhǔn)的前端開(kāi)發(fā)。

    https://jsgo.io/dave/todomvc

Jsgo.io 既支持 GopherJS 也支持 WebAssembly。我們剛才看到的游戲,不是一個(gè) js 文件,是很多個(gè)。源代碼里,Go 會(huì) import 一些 Go 標(biāo)準(zhǔn)庫(kù),比如字符串轉(zhuǎn)換庫(kù) strconv。字符串轉(zhuǎn)換 Go 標(biāo)準(zhǔn)庫(kù)會(huì)直接被編譯成一個(gè)單獨(dú)的 js 文件。這個(gè)做法的好處是慢一點(diǎn),但后面的加載會(huì)非??欤ㄒ?yàn)榛静挥酶模?。大的前端?yīng)用這樣被拆解之后,從長(zhǎng)遠(yuǎn)來(lái)說(shuō)加載速度會(huì)比較快。它支持分模塊加載,而且我們不用為分模塊加載付出什么努力,Go 的引用會(huì)變成一個(gè)模塊引用,對(duì)應(yīng)到 js 也是一個(gè)模塊。這樣編程會(huì)非常爽。前端 JavaScript 語(yǔ)言里,這種模塊化編程并不是語(yǔ)言?xún)?nèi)建支持的。

Jsgo.io 對(duì) WebAssembly 的支持目前還不體完善,跟剛才的 GopherJS 不一樣,它目前不能做到分 package 引用,編譯出來(lái)的是一個(gè)大的 wasm 文件。但這只是臨時(shí)狀態(tài),因?yàn)檫@塊的支持才剛開(kāi)始做。

前面我也說(shuō)過(guò),Go 的通用卡平臺(tái) gui 庫(kù)很多人在嘗試,但無(wú)一不是失敗告終。這并不是由于 Go 引起的,是因?yàn)橄?QT 這類(lèi)的跨平臺(tái)方案本身并不是符合趨勢(shì)的東西。最有希望的跨平臺(tái)方案還是瀏覽器技術(shù),基于 HTML5 和小程序,它們是真正的生產(chǎn)級(jí)的跨平臺(tái)方案。尤其是小程序的出現(xiàn),今天看到很多跨平臺(tái)庫(kù),比如 React 做出的應(yīng)用還是有生硬的地方,但微信小程序是試圖讓 Web 跟 Native 體驗(yàn)一致的。

Go 在前端的發(fā)展展望

Go 跨平臺(tái)的游戲引擎,已經(jīng)基本接近生產(chǎn)級(jí),它是非常重要的突破口。

在我看來(lái),Go 在前端的突破,一定是從游戲領(lǐng)域開(kāi)始。它對(duì) Go 的意義是 0 到 1 的歷史性突破。如果沒(méi)有商業(yè)公司用它,這個(gè)東西就是一個(gè)玩具。但 Go 的游戲引擎不會(huì)是玩具,因?yàn)闀?huì)有越來(lái)越多商業(yè)公司用它。未必是這個(gè)游戲引擎,也許會(huì)有人做出更牛的,但這是個(gè)靠譜的方向。對(duì)于 Go 來(lái)說(shuō),就跟 Docker、Kubernetes 的流行代表 Go 占領(lǐng)了云一樣。Go 在前端也需要一個(gè)殺手锏,它就是游戲引擎。


本文標(biāo)題:再談Go語(yǔ)言在前端的應(yīng)用前景
文章鏈接:http://www.5511xx.com/article/dpdehhd.html