怎麼評價Vue.js2.5以後要大力加強對TypeScript和VSCode的支持?

(見尤雨溪的最新博客)原文鏈接:https://medium.com/the-vue-point/upcoming-typescript-changes-in-vue-2-5-e9bd7e2ecf08

國內不知能不能打開


幫沒有閱讀原文的同學總結一下原文說了些什麼:

  1. Vue 從 2.0 開始就已經有官方的類型聲明文件了,但是 Vue 與 TypeScript 的集成一直都存在一些缺陷,比如無法自動推論出 this 的類型(需要藉助 vue-class-component)
  2. TypeScript 最近的版本更新了一些新特性,可以更好的支持 this 的類型推論了
  3. 即使你不用 TypeScript,你也可以在 VSCode 中使用 Vetur 插件來獲得自動補全和類型提示功能,這都得益於強大的 TypeScript 編譯器
  4. Vue 這次的版本更新,對於原本就使用 TypeScript + Vue 的用戶來說,有一些升級成本,可以參考升級文檔去升級。對於非 TypeScript 用戶,沒有任何變化,但是建議使用 VSCode + Vetur(或其他支持 vue-language-server 的編輯器)來獲得更佳的開發體驗
  5. vue-cli 將支持創建基於 TypeScript 的新項目了

我看好 TypeScript 的發展,順便自薦一下我寫的這本書《TypeScript 入門指南》


實際上和 @Fula Li 說的不和諧解讀應該是正相反,是

vue 已經成為地方一霸,TS 團隊只能唱征服。

為什麼這麼說呢?Vue 本來就想要支持 TS,2.0一出來就自帶了 typing。

但是 TS 不支持 vue 的一些 api 啊!只能寫出個半吊子的類型定義。

TS 的 PM Daniel 特意開了 issue說 TS 不能支持 Vue 的 API直到 這個 pull request Typed "this" in object literal methods by ahejlsberg · Pull Request #14141 · Microsoft/TypeScript,才能支持 Vue 的寫法。而這個 PR 當時要解決的問題,就是 Vue 里 object literal 的 this 指針類型的問題!

看到這個 PR,真是感嘆 Vue 終於混到了這一天!


作為vue-class-component的用戶,我覺得對我的影響並不算大……emmmm…

其實說不定可以反過來問…

如何看待數千數萬行的代碼,多人協同開發卻沒有靜態代碼檢查…?


國內前端的平均水平,將要上升到一個新的高度了


不和諧的解讀:vsc和ts已經成為地方一霸,vue只能唱征服;

正常解讀:vsc和ts團隊的開放迎來了收穫;

剛剛的10月,typescript迎來了開源5周年慶,如今的ts項目已經不是一門單純的編程語言了,早在兩年前,ts引擎已經成為了vs系列產品的js編輯器引擎,因為一個代碼編輯器對於js的支持,首先要對js代碼進行語法解析,而ts語法本身兼容js語法,所以ts的語法解析器放到js也能用。

談談開發工具的原理,對js代碼進行語法解析後,生成了抽象語法樹,傳統的vs對於js的語法解析器是用c++寫的,生成的語法樹也就是哈希字典之類的對象;前面的5,6年誕生的webstorm的語法解析器是用java寫的,也是一時風光,因為java開發人員對比cpp開發可能更懂web開發的需求,主要就是體現在對語法樹的分析利用以及結合ide的開發程度;在這方面上,ts和vsc方案天生更具有優勢,因為ts本身自舉了,ts開發者用ts開發了ts的語言編譯器,ts本身其實就是js,解析後的語法樹就是json,然後同家公司又用ts開發了語言編輯器vsc,典型的各種吃自己狗糧;(這種優勢也存在案例:chrome開發者工具是用js+html開發的,顯然一下就打敗了ie的開發者工具(c++寫的?))

說說ts項目對於js語法樹的開發程度,本身ts語法除了es也就是類型聲明了,這部分完全可以用js正常的注釋語法來替代(標準jsdoc注釋),所以現在只要在vsc上面使用js+jsdoc+allowjs或者//@ts-check的編譯開關,就跟寫ts效果一樣了,連編譯都省了。

簡而言之,這是一場編譯器+前端技術的勝利,因為前端更適合造工具哈,在這樣開放的編輯器平台上(開放了語法解析介面)增加擴展,很容易就可以入侵代碼中的html模板,增加智能感知和語法檢查,做成ng和vue的開發插件,勉強能達到目前ts對於jsx的支持。


不知道 @rebornix 和 @尤雨溪之間發生了多少骯髒的屁股交易(逃


我來湊一波熱度。記得2.0還是rc的時候我跟小右在ningjs的afterparty上面基時(大概是2016年9月)就聊到,Vue 如果能加強 TS 支持就好了,因為對於大型項目來說,TS 是必然的趨勢,儘管這就 Vue 的編程方式來說確實相當困難。不過一年以來,隨著 Vue 和 TS 本身的不斷改進,終於等到了今天嘿!

BTW,這篇blog里提到的『now being maintained here by core team member HerringtonDarkholme』,HerringtonDarkholme 同志會在 10 天后的 QConShanghai 上做 TypeScript 的發展進程 演講,歡迎大家去聽。不能到現場的朋友可以等幾個月看視頻。


最近公司上了個新項目,特意把vue-cli那個webpack改造成用ts可以寫了,期間在網上找了很多開源倉庫,真的感覺這塊的案例很缺。你去搜搜看,大部分倉庫里都像是集體約定好了一樣,組件class里都不引用別的組件,就一個組件文件。

你們不知道我因為@Component里components拼寫錯誤而不自知想知道如何正確引組件的時候有多無奈,感覺這種應該算是hello world demo里的需求吧。

而且今天想找個除了vux之外的相關移動端ui庫,感覺好像知名度高些的幾乎沒有,除了一個mint-ui,然而這貨我看倉庫是幾天前還在更新,但是官網文檔都打不開了。。。

感覺vue用的人是多,但是相關周邊還有很大的發展空間。

所以我的意思是,支持,不管啥框架,啥周邊,豐富點總是好的。正好也是前幾天,用create-react-app搭建的初始代碼去整個一堆東西,相比較而言,確實個人感覺人家生態更好一些。


說明前端已經複雜到沒有類型就抗不住的地步


Vue出現2.0就迫不及待的弄了用ts寫vue的奇技淫巧,然後等到了vue-class-component,代碼終於好看一點了。

2.5這個強化我是非常看好的。

雖然我是Angular把我帶入TS這個坑裡的,但是真的進去了就出不來了,現在所有的javascript項目,不讓我寫ts我就是不舒服。


都會ts了應該不太在意vue和react上手難度的差別吧?


有生之年系列。

優化對 ts 的支持真的真的真的能幫助 Vue 勝任大規模的項目,同時也能提升 Vue 項目的代碼質量,減少潛在的問題。靈活性肯定是要損失一些的,但是我認為是值得的。

優化 VSCode 太!重!要!了!Vue 在 VSCode 上的體驗挺差的 (其實在 WebStorm 上也不太好),期待有驚喜!


ts是真好用,vue用ts很正常,沒啥好評價的。

不過我倒是很想問問尤大如何評價他當初的這個回答。

Vue 2.0 為什麼選用 Flow 進行靜態代碼檢查而不是直接使用 TypeScript?

我真的沒有諷刺或者打臉的意思啊,大家不要誤會,畢竟那個回答已經過去一年多了,很多東西都發生了改變。

再補充一些細節

尤大在之前的回答提到,「成本和收益的考量」,「而不是用一個被 M$ 控制的、一旦使用難以遷出的語言」

那麼,時至今日,成本和收益發生了哪些變化?如何處理「被 M$ 控制的、一旦使用難以遷出」的問題?

尤大還提到 flow 的優點,「可以一個文件一個文件地遷移,不需要一竿子全弄了」,「保留 ES 的靈活性,並且對於生成的代碼尺寸有更好的控制力」

這些優點現在的 ts 是不是也都具備呢?


雖然不想在這裡引火燒身,但還是想說一句,angular去年發布的時候整個項目就已經完完全全是用typescript寫的,當時有多少人不看好它引入typescript,雖然現在typescript還未真正成為絕對的主流,但是angular是第一個大規模使用typescript,並且讓更多人注意到typescript,這應該沒有人質疑吧。即使有這樣的眼光又能怎麼樣呢?第一個吃螃蟹的人在別人眼中永遠是另類,瘋子。有些人還說,我也可以很容易的引入typescript寫項目呀,我跟他說,只有你自己的代碼用typescript寫和你所用的框架也是用typescript寫,所發揮的功效是完全不能比的。不要說你也想到了,人家angular早已經開始動手幹起來了


"雖然 Vue 本身用了 flow,但是在應用中我建議用 TypeScript,這跟 2 個類型系統本身的優劣關係不大,更多的是實際的 IDE 支持,開發體驗方面和生態的完善度。Typescript 團隊跟我們有比較活躍的合作,相比之下 flow 在應用開發這塊支持不如 TypeScript 來的好。"


始終不明白,vue在知乎怎麼這麼高的曝光率,還是我關注的都是搞vue的……沒用過vue但是timeline告訴我這可能是個比較功利性的Repo


幹得好(所以我還是繼續用angular2吧


唉……

又看到賀師俊那啥了……

前端娛樂圈變成前端關係圈了

看來上次ng和vue撕逼的時候還沒舔夠。

關於vue加大對ts的支持,我想說,尤教主不是說過那個啥了嗎

想知道那個啥,自己去看尤教主以前在知乎的回答,找不到沒關係,我有截圖

覺得沒有說服力我還有


怎麼會那麼多人不明白 Vue 2.0 開始使用 Flow 開發與 Vue 將要加強對 TypeScript 的支持不矛盾呢?

還是揣著明白裝糊塗?

蠢 || 壞


Vue 考慮加上對ts的支持無非就是考慮兩點,一是工程複雜度上來後,ts的靜態類型檢查能夠帶來更好的代碼質量,使項目更可控,也便於團隊協作,二是ts肯定是前端未來的趨勢,跟著趨勢走肯定沒錯。但是在Vue 的編程範式下寫ts,我還是怎麼想怎麼怪。如果項目真的大到需要引入ts了,那麼我幹嘛不選Angular 去

Ps. Vue 粉忽噴,我也是在寫Vue 的(逃


推薦閱讀:

font-weight和fontWeight的區別?
onclick = xxx這種賦值寫法綁定事件的原理是什麼?
有哪些常用軟體是用WEB前端技術寫的?底層使用瀏覽器殼?
我可以只用flex布局嗎?
網站的 logo 圖片用 img 標籤還是背景圖片合適?

TAG:前端開發 | JavaScript | TypeScript | VisualStudioCode | Vuejs |