自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Vue.js:好的,”呵呵”的,不好的

開發(fā) 前端
從React遷移到Vue,使用兩年后的感受總結(jié)。使用新的框架和庫總是會讓人興奮,但也有壓力。即使經(jīng)過一些測評,你也永遠不知道以后會遇到什么意外發(fā)現(xiàn)。

[[236020]]

  • 從React遷移到Vue,使用兩年后的感受總結(jié)。

使用新的框架和庫總是會讓人興奮,但也有壓力。即使經(jīng)過一些測評,你也永遠不知道以后會遇到什么意外發(fā)現(xiàn)。

我跟Vue.js的蜜月期結(jié)束了。在幾乎每天使用Vue2年之后,我終于決定要寫點關(guān)于它的事情了。

提示:下面內(nèi)容純屬個人觀點。

Vue.js的優(yōu)秀部分

機動性

在前端世界,數(shù)據(jù)綁定是一件大事。我們不再像使用jQuery那樣對DOM進行微觀管理,而是關(guān)注數(shù)據(jù)。Vue使用雙向反應數(shù)據(jù)綁定系統(tǒng)來處理這個問題。

為了實現(xiàn)這個能動性, Vue在狀態(tài)(state)中的每個變量添加了一些getter和setter,以便它能夠跟蹤、更改,并自動更新DOM(咳咳this. setstate()咳咳)。這種方法并不完美,我們將在后面看到。

自己供電

使用Vue,不需要使用非正式的包,比如MobX或response Router來處理應用程序的關(guān)鍵部分。Vue提供Vue Router和Vuex——一個受redu啟發(fā)的反應性中央狀態(tài)管理器。它們本身就是很棒的庫,但它們是為Vue定制的,這一點使它們變得更好。

速度

Vue真的是太快了。也許不是最快的,但它的性能對絕大多數(shù)web項目來說是頂級的。您上一次需要每秒呈現(xiàn)和更新數(shù)千個DOM元素是什么時候?

HTML模板

這在JavaScript開發(fā)人員中是一個有爭議的話題。不管您喜歡什么,HTML模板已經(jīng)在許多語言中進行了幾十年的打磨,并且是在Vue中編寫動態(tài)標記的首選。

而且,嘿,Vue也支持JSX。

其他的好東西

  • HTML、CSS和JavaScript單個文件組件。
  • 輕量。大約20KB(縮小+ gzip)。
  • 可擴展高(mixins、插件等)。
  • 優(yōu)秀的文檔(除了下面提到的一些例外)。
  • 可以漸進接入,甚至可以作為jQuery的替代品。
  • 容易上手。

Vue.js中讓人“呵呵”的部分

組件模板

從React遷移到Vue,我似乎感受到一股清新的空氣。不再到處bind(this) 或 setState()。哎!但是在一段時間之后,我開始質(zhì)疑Vue的組件語法的有效性。

Vue組件是用對象創(chuàng)建的,這里有一個定義組件函數(shù)的例子:

 

  1. export default { 
  2.  methods: { 
  3.   increment () { 
  4.    this.count++; 
  5.   } 
  6.  } 

您需要為計算屬性、組件狀態(tài)、監(jiān)視程序等添加類似的模板文件。幾乎所有Vue中的內(nèi)容都有自己的特殊語法和更多的模板文件。

相比之下,Marko也有同樣的事情,它更干凈:

 

  1. class { 
  2.  increment() { 
  3.   this.state.count++; 
  4.  } 

我這里的重點不是使用類或不使用類,而是Vue使用任意的對象結(jié)構(gòu)而不是語言特性。

如果你覺得我有點想找事,我不會怪你的。Vue還提供了基于類的語法,但它實際上更多的是事后考慮。

社區(qū)更像是個聊天室

Vue社區(qū)的人都喜歡使用一種叫Discord的工具閑聊。這是一種游戲社區(qū)里才會有的聊天工具。如果你遇到問題,聊天可能是你最好的選擇,因為官方論壇是一片荒涼的土地,可為什么,你不敢在Github上問問題嗎?

聊天很亂,主要的問題是聊天內(nèi)容不能被搜索引擎索引。同樣的問題(及其相關(guān)的討論)注定要一遍又一遍地重復。

這種用聊天來提問的趨勢正在困擾開源項目,我認為它需要停止。這種聊天里沒有集體學習效果。

沒有那么神奇

只要你不偏離正道,就不會遇到麻煩,但一段時間后,你可能會在Vue周圍發(fā)現(xiàn)很多“如果”和“但是”。

一些例子:

reactivity系統(tǒng)只會在一定條件下跟蹤變化。不要指望向它能提供任何你想要的東西。通常,您可能需要盡可能地簡化數(shù)據(jù),以避免頭痛。當然,所有這些都在文檔的小字中可以找到解釋。

transition 系統(tǒng)不適用于列表。您實際上需要使用,它的工作方式略有不同,而且會在DOM中引入新的元素。同樣,有些東西你也會認為這是一件已經(jīng)解決的事情,但你發(fā)現(xiàn)必須自己去實現(xiàn)它。

如果您需要組件實例中的non-reactive狀態(tài),那么您將進入一個未知領(lǐng)域。

等等。

別誤會我的意思,這些都不是大問題,但似乎每次你開始動手的時候,另一個小煩惱就會冒出來。

Vue.js中不好的部分

不清晰架構(gòu)模式

這里有一個例子:在組件中還是在Vuex中處理API請求更好?

該文檔提供了如何處理Vuex中的API邏輯的示例。甚至還有一個漂亮的彩色圖表:

Vue.js:好的,”呵呵”的,不好的

這是否意味著驗證邏輯也適用于Vuex ?狀態(tài)管理器現(xiàn)在將開始做為所有應用程序邏輯的中介嗎?

這些都不是顯而易見的事情。大多數(shù)人喜歡將non-state邏輯插入到Vuex操作中,或者更糟的是,直接插入到組件中,因為Vue主頁上有一段視頻這樣寫道:

Vue.js:好的,”呵呵”的,不好的

回答我最初的問題:API邏輯不應該放到Vuex或組件編寫。在一些官方代碼示例中,甚至還有一個很好的例子來說明如何做到這一點。

結(jié)論

Vue的使用率一直在不斷增加,我懷疑這種趨勢是否會很快停止。它的普及還遠不及React(至少在中國以外),而且還在需要和Angular競爭遙遠的第二名。

在過去,我認為Vue是一個實用的庫,不同于React過于理想化的設計(“我們是純JavaScript!”)。我仍然認為這是一個很好的比喻。另一方面,我現(xiàn)在覺得,Vue的實用主義需要在用戶層面上更加優(yōu)雅、專注、優(yōu)雅和簡潔。

在使用了2年后,我對Vue的印象是正面積極的。我仍然認為這是一個正確的決定——把我的團隊從React帶到Vue。不是因為Vue更好,而是因為它更適合我們。

Vue實現(xiàn)了它想做的目的,并且在其他人失敗的領(lǐng)域取得了成功,但是,今天,我并不認為Vue客觀上比你想象中的其他選擇更好或更糟糕。

這些就是我要說的。

附錄:Vue CLI

我沒有在本文中包含Vue CLI,我想解釋一下原因。

Vue CLI是一個非常方便的工具,用于搭建Vue項目。在即將發(fā)布的新版本3中,它將更加出色,因為它是一個完整的項目管理解決方案。

但是,便利總是有代價的,在我看來,這里的代價是不合理的。Webpack并不像很多人說的那么難,創(chuàng)建自己的初始化配置可以減少大部分配置時間。

當這樣做的成本如此之低時,定制自己的自定義產(chǎn)品就更有意義了。

責任編輯:未麗燕 來源: 程序師
相關(guān)推薦

2020-09-16 06:12:30

Vue.js 3.0Suspense組件前端

2017-08-30 17:10:43

前端JavascriptVue.js

2017-09-27 16:44:23

前端

2019-04-01 19:38:28

Vue.jsJavascript前端

2023-04-27 08:23:38

JavaScriptVue.jsMVVC

2021-05-08 06:14:28

Vue.js片段開發(fā)

2016-09-21 12:56:31

JavascriptWeb前端

2022-04-04 16:53:56

Vue.js設計框架

2018-01-23 11:48:17

Vue.js前端開發(fā)

2019-10-11 09:59:55

開發(fā)者技能工具

2022-04-01 08:08:27

Vue.js框架命令式

2022-06-30 09:00:23

Vue.js版本名稱

2025-01-15 15:20:43

2023-03-07 16:09:08

2016-11-02 18:43:02

javascripthtml5vue.js

2018-04-04 10:32:13

前端JavascriptVue.js

2017-07-04 17:55:37

Vue.js插件開發(fā)

2016-11-04 19:58:39

vue.js

2022-04-12 08:08:57

watch函數(shù)options封裝

2023-03-29 14:25:08

Vue.js前端框架
點贊
收藏

51CTO技術(shù)棧公眾號