App下載

尤雨溪:TypeScript不會(huì)取代JavaScript

猿友 2020-09-15 10:17:03 瀏覽數(shù) (2817)
反饋

來(lái)源 | evrone.com
譯者 | 核子可樂(lè)
策劃 | 蔡芳芳

近日,Evrone 與 Vue.js 的作者尤雨溪進(jìn)行了一次訪談,了解他對(duì)于無(wú)后端與全棧方法、以及 Vue.js 適用場(chǎng)景的看法,還有他本人如何在工作與生活之間取得平衡。

記者: 嗨 Evan,很榮幸你能接受我們的訪談。那就先從一個(gè)簡(jiǎn)單的問(wèn)題開(kāi)始:您的全職工作崗位是由 Patreon 資助的,大多數(shù)人恐怕都沒(méi)有這樣的機(jī)會(huì)。您能聊聊怎樣在工作與生活之間找到平衡,特別是如何避免長(zhǎng)期工作帶來(lái)的倦怠心理嗎?

尤雨溪: 雖然我這份工作看似自己說(shuō)了算,而且大部分時(shí)間也都是待在家里,但我每天還是會(huì)遵照固定的時(shí)間表。慶幸我有孩子,所以只要完成了工作內(nèi)容,我可以馬上陪伴家人。另外,我會(huì)在感覺(jué)需要的時(shí)候給自己安排一段比較長(zhǎng)的假期,可能是幾個(gè)禮拜。這一點(diǎn)對(duì)于上班族來(lái)說(shuō)可能比較困難。

記者: 厲害!Vue 3 版本即將發(fā)布,在此之后,您是打算休息一陣子,還是馬上開(kāi)始規(guī)劃 Vite build 系統(tǒng)的下一個(gè)版本?

尤雨溪: 我總是存著一大堆工作。在 Vite 方面,目前的目標(biāo)就是努力提升穩(wěn)定性——這是一套新系統(tǒng),用戶(hù)總會(huì)在我當(dāng)初的設(shè)計(jì)場(chǎng)景之外使用,所以我得花點(diǎn)時(shí)間思考項(xiàng)目的下一步要如何發(fā)展。關(guān)于 Vue 3.1,我也已經(jīng)有了一點(diǎn)想法。但休息是肯定的,給自己充電非常重要!

記者: 您是 Google Creative Lab 中的創(chuàng)造力技術(shù)專(zhuān)家與藝術(shù)史專(zhuān)家。在 Vue 項(xiàng)目當(dāng)中,您有沒(méi)有感覺(jué)自己的數(shù)學(xué)、算法以及數(shù)據(jù)結(jié)構(gòu)功底有點(diǎn)薄弱?在您看來(lái),是不是只有學(xué)習(xí)過(guò)計(jì)算機(jī)科學(xué)理論才能成為程序員?還是說(shuō)只要能寫(xiě)出平平無(wú)奇但卻易于理解的代碼就可以?

尤雨溪: 坦率地講,我遇到的這類(lèi)問(wèn)題不太多。我個(gè)人覺(jué)得 Vue 或者說(shuō)大部分前端框架對(duì)于數(shù)學(xué)和算法專(zhuān)業(yè)知識(shí)的要求不算太高——至少跟數(shù)據(jù)庫(kù)比沒(méi)那么高。 我覺(jué)得自己在算法或者數(shù)據(jù)結(jié)構(gòu)方面的確不強(qiáng),雖然提升這方面能夠肯定會(huì)有所幫助,但想要管理好前端框架項(xiàng)目,最重要的還是了解用戶(hù)、設(shè)計(jì)出合理的 API、建立技術(shù)社區(qū)并長(zhǎng)期維護(hù)項(xiàng)目承諾。

我覺(jué)得編寫(xiě)所謂“平平無(wú)奇卻易于理解”的代碼沒(méi)什么不好,我不太認(rèn)同這話(huà)里隱藏的那種貶義傾向。 實(shí)際上,編寫(xiě)出這樣的代碼也需要一定經(jīng)驗(yàn),而且好代碼的核心在于執(zhí)行效率高,而不是令人拍案稱(chēng)奇的實(shí)現(xiàn)思路。 沒(méi)有接受專(zhuān)業(yè)的計(jì)算機(jī)科學(xué)教育當(dāng)然也能編寫(xiě)軟件,不過(guò)每一位開(kāi)發(fā)者都應(yīng)該重視專(zhuān)業(yè)教育背景帶來(lái)的扎實(shí)基礎(chǔ)。我個(gè)人一直采取比較務(wù)實(shí)的態(tài)度——先開(kāi)始做事,哪怕做得不好。在做的過(guò)程中,我們會(huì)找到自己的不足之處,并確定下一階段該從哪些方面提升自己。

記者: 說(shuō)得好。借助 Nuxt.js 與 JAMstack 等技術(shù)方案,開(kāi)發(fā)者得以專(zhuān)注于處理應(yīng)用程序的前端部分,因?yàn)楹蠖瞬糠种恍枰苯咏唤o minimal/JS/BaaS 即可。您怎么看待這些“無(wú)后端”或者說(shuō)“全?!遍_(kāi)發(fā)方法?

尤雨溪:我覺(jué)得這是一種強(qiáng)調(diào)以技術(shù)推動(dòng)產(chǎn)品制造的開(kāi)發(fā)思路。開(kāi)發(fā)者們之所以選擇這樣的棧,是因?yàn)樗鼈冋m合自己當(dāng)前構(gòu)建的產(chǎn)品類(lèi)型:后端邏輯相對(duì)簡(jiǎn)單,而前端交互更值得關(guān)注。雖然不是什么萬(wàn)靈藥,但這類(lèi)方案確實(shí)非常適合特定一部分應(yīng)用場(chǎng)景。

記者: Vue 已經(jīng)經(jīng)歷過(guò)多次重寫(xiě)。如果時(shí)光可以倒流,您會(huì)對(duì)現(xiàn)在的年輕人們提出怎樣的技術(shù)建議?

尤雨溪: 請(qǐng)一定認(rèn)真思考這個(gè)問(wèn)題:怎么才能更好地拆分與解耦內(nèi)部模塊。

記者: 最近幾年來(lái),我們發(fā)現(xiàn) JavaScriptTypeScript 可以說(shuō)是齊頭并進(jìn)。您是怎么看待這樣的趨勢(shì)的?是會(huì)最終向核心 JavaScript 當(dāng)中添加某些類(lèi)型,用 TypeScript 取代 JavaScript,還是做出其他選擇?

尤雨溪: 我覺(jué)得向 JS 本體中添加類(lèi)型的可能性不大——因?yàn)?JS 是一套由社區(qū)委員會(huì)負(fù)責(zé)類(lèi)型設(shè)計(jì)的系統(tǒng),而根據(jù) TC39 委員會(huì)的運(yùn)作方式來(lái)看,這事沒(méi)戲。另外,TypeScript 也不會(huì)取代 JS,前者只是 JS 的一個(gè)超集。我個(gè)人認(rèn)為,JS 與 TS(帶類(lèi)型的超集)并行發(fā)展才是最合理的未來(lái)方向,而且這一點(diǎn)在可預(yù)見(jiàn)的未來(lái)不會(huì)改變。

記者: Vue 的用戶(hù)群體已經(jīng)超過(guò)百萬(wàn)。您認(rèn)為衡量技術(shù)采用率的最佳方法是什么?Stack Overflow 問(wèn)題熱度、GitHub 星評(píng)以及其他公共訪問(wèn)指標(biāo)都不錯(cuò),但也有不少企業(yè)用戶(hù)需要在隔離網(wǎng)絡(luò)中工作。他們提不出多少問(wèn)題,但卻實(shí)實(shí)在在在“使用技術(shù)”。我們?cè)撛鯓影阉麄兗{入到技術(shù)普及率的計(jì)算中來(lái)?

尤雨溪: 對(duì)于開(kāi)源軟件來(lái)說(shuō),核定采用率確實(shí)是個(gè)老牌難題了,因?yàn)橛脩?hù)并沒(méi)有義務(wù)上報(bào)自己的使用情況。而作為軟件作者,我們也確實(shí)沒(méi)有可靠的采用率跟蹤方法。也正因?yàn)槿绱耍也庞X(jué)得 devtools 擴(kuò)展用戶(hù)數(shù)量應(yīng)該作為最可靠的指標(biāo),因?yàn)樗辽俑采w到了全體用戶(hù)。

記者: 即將發(fā)布的 Vue.js 3 中包含大量搖樹(shù)(Tree Shaking)處理方面的更新。在您看來(lái),為什么搖樹(shù)處理用了這么久才正式登陸現(xiàn)代框架?是因?yàn)槔镱^有什么重大阻礙嗎?

尤雨溪: 搖樹(shù)的工作機(jī)制,取決于源代碼的特定構(gòu)造方式——換句話(huà)說(shuō),只有在項(xiàng)目起步時(shí)就在代碼編寫(xiě)與 API 設(shè)計(jì)中考慮到搖樹(shù)機(jī)制,才能保證搖樹(shù)擁有最好的效果。而現(xiàn)在,我們之所以需要引入大量變更才能實(shí)現(xiàn)搖樹(shù)友好,就是因?yàn)橹苯訐u樹(shù)要么會(huì)影響到 API 變更、要么需要進(jìn)行重大的結(jié)構(gòu)調(diào)整(這會(huì)帶來(lái)嚴(yán)重風(fēng)險(xiǎn))。

記者: Vue 3 當(dāng)中“基于函數(shù)的組件 API”提案遭到了社區(qū)成員們的強(qiáng)烈反對(duì)。事后來(lái)看,您有哪些值得與其他開(kāi)發(fā)者分享的觀點(diǎn)?

尤雨溪: 社區(qū)成員們之所以反對(duì),是因?yàn)樗麄儞?dān)心項(xiàng)目管理方會(huì)廢棄掉 Vue 當(dāng)前的(2.x 版本)API,其實(shí)我們并沒(méi)有這樣的想法。作為項(xiàng)目作者與維護(hù)者,我們一般會(huì)在日常工作中與熱心的早期采用者交互,而他們對(duì)于新思路的態(tài)度往往比普通用戶(hù)更開(kāi)放、更積極,這也導(dǎo)致我們沒(méi)能對(duì)向下兼容性給予應(yīng)有的重視。用戶(hù)不喜歡自己熟悉的一切被他人硬生生奪走,我已經(jīng)深切理解到了這一點(diǎn)。

總而言之,最重要的是了解用戶(hù)需求。但這事并不簡(jiǎn)單,有時(shí)候我們需要投入大量精力才能獲得可靠的需求信息。傾聽(tīng)是必須的,綜合各方面訴求才能得出合理的結(jié)論。

記者: Vue 的用例范圍非常廣泛,從小型企業(yè)到中型代理機(jī)構(gòu),再到市值數(shù)十億美元的上市公司皆在其中。LV 公司與美國(guó)宇航局也在使用 Vue。有哪些使用 Vue 編寫(xiě)的高復(fù)雜度真實(shí)前端案例,給您留下了深刻印象?

尤雨溪: 問(wèn)題在于,大多數(shù)“高復(fù)雜度真實(shí)前端案例”都不開(kāi)源。我覺(jué)得要回答這個(gè)問(wèn)題,大家可以多看看 Vue Devtools 與 Vue CIL UI,雖然它們不屬于典型的面向消費(fèi)者型 Web 應(yīng)用程序,但無(wú)疑都屬于由 Vue 編寫(xiě)而成的強(qiáng)大界面成果。

以上就是W3Cschool編程獅關(guān)于尤雨溪:TypeScript不會(huì)取代JavaScript的相關(guān)介紹了,希望對(duì)大家有所幫助。

0 人點(diǎn)贊