真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Vue和React的比較

這篇文章主要講解了“Vue和React的比較”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Vue和React的比較”吧!

成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供張掖企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、H5建站、小程序制作等業(yè)務(wù)。10年已為張掖眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。

在過去的 5 年中,我一直是一名 React 工程師。我愛 React,我愛開發(fā) React 應(yīng)用。我認(rèn)為它是現(xiàn)存最好的 UI 框架之一。

然而,React 在這個領(lǐng)域中有一些競爭對手,其中最大的就是 Vue.js。

我曾玩過一陣 Vue.js,但我認(rèn)為那時(shí)的經(jīng)驗(yàn)已經(jīng)過時(shí)了。因?yàn)槲覍⒁钊胙芯?Vue.js 的工作原理以及了解它是如何讓我的工作變得更簡單。

在深入研究 Vue.js 文檔并使用之后(注意:我絕對不是 Vue.js 的專家),我驚奇地發(fā)現(xiàn)有些方面 Vue.js 甚至比 React 做得更好。

最后,我希望 React 能受到 Vue.js 的啟發(fā)并且也開始這么做。

1、不同的理念

Vue.js 和 React 之間的一個主要區(qū)別是它們對自己的定位不同。

從它們官網(wǎng)直觀來看,React 把自己描述為 “一個用于構(gòu)建用戶界面的 JavaScript 庫”,而 Vue.js 則把自己描述為“漸進(jìn)式 JavaScript 框架”。

React 是一個庫,而 Vue.js 是一個框架。我認(rèn)為從很多方面來說,這是導(dǎo)致這些 UI 框架在執(zhí)行方式上有所不同的根本原因。

我想強(qiáng)調(diào)這一點(diǎn),以便您在閱讀本文時(shí)隨時(shí)牢記這一點(diǎn)。 從歷史上看,庫和框架都專注于讓它們的工作表現(xiàn)得更出色,但框架的要求和提供的能力更全面詳盡,而庫則更少更輕量。

2、單文件組件

Vue 和 React 都有用來創(chuàng)建 UI 的組件。

組件通常由 3 部分組成:

  •  UI (HTML)

  •  行為 (JavaScript)

  •  外觀 (CSS)

Vue.js 的理念是使用單文件組件,用一種開箱即用的方式來編寫涵蓋所有 3 個部分的組件。

看起來像這樣:

        p {      font-size: 2em;      text-align: center;    }  

即便你不是一個 Vue.js 的工程師也可以理解這里的代碼。

React 組件提供了開箱即用的 UI 和 行為部分,但是樣式在很大程度上不受限制:

import React, { useState } from 'react';  function Button() {    const [count, setCount] = useState(0);    return (       setCount(count + 1)}>        Current count: {count}                Click me          );  }

當(dāng)然了,React 有一個非?;钴S的社區(qū),所以如果你想包含樣式,可以輕松使用 Emotion 或 Styled Components 來填補(bǔ)樣式的空缺,但是:

  •  它們是非內(nèi)置的;

  •  你必須知道這些庫才能使用他們。

這正好與默認(rèn)提供了這些的 Vue.js 相反。

3、官方支持的相關(guān)庫

任何足夠大且復(fù)雜的 UI 應(yīng)用都需要兩個附加功能的支持:

  •  路由

  •  狀態(tài)管理

Vue.js 官方支持的庫分別覆蓋了這兩個場景: Vue Router 和 Vuex 。

這些庫明確地在 Vue.js 文檔中提及,并且由 Vue.js 核心組開發(fā)和維護(hù)。這太神奇了。

它為剛使用 Vue.js 的工程師提供了解決問題的明確方法,并讓他們相信這些庫是長期維護(hù)的。

擁有第一方支持的庫并不會限制社區(qū)解決方案,但確實(shí)為新用戶提供了入門解決方案

4、風(fēng)格指南

嗯,我非常希望 React 也有風(fēng)格指南,在閱讀本節(jié)之前,請單擊鏈接并瀏覽Vue.js的樣式指南。

它回答了很多 Vue.js 新手可能遇到的問題,并提供了如何編寫 “適當(dāng)?shù)摹?和易于訪問的 Vue.js 的最佳實(shí)戰(zhàn)。

它分享了經(jīng)過實(shí)戰(zhàn)檢驗(yàn)的以及社區(qū)中的最佳實(shí)踐和模式。

最重要的是:它是由 Vue.js 官方維護(hù)和支持的!這太棒了!

5、類和樣式綁定

如上所述,Vue.js 內(nèi)置了對樣式的支持。此外,Vue.js 本質(zhì)上是內(nèi)置 classNames 的。

Classnmes 是一個很棒的庫,可以方便地連接和動態(tài)構(gòu)造應(yīng)用于 HTML 元素的 CSS 類名。

而在 React 中,你需要知道這個庫,然后安裝它。

在 Vue.js 中,這只是另一個內(nèi)置特性:參考文檔:

Vue.js 模板:

data 內(nèi)容:

data() {    return {      isActive: true,      hasError: false    }  }

渲染出的 UI:

有這個內(nèi)置項(xiàng)真好。

Vue.js 進(jìn)一步支持內(nèi)聯(lián)樣式。Vue.js 和 React 一樣,都支持內(nèi)聯(lián)樣式,但是 Vue.js 比 React 更棒的地方就是它能夠自動為需要的 CSS 加上前綴。

參考文檔:

當(dāng)使用 :style 時(shí),需要添加瀏覽器引擎前綴的 CSS 屬性,拿 transform 舉例,Vue.js 會自動偵測并添加相應(yīng)的前綴。

真正顯示框架控制自己的模板語法的優(yōu)勢。

6、插槽

React 中一切都是 prop。

如果要在 React 組件中渲染多個子節(jié)點(diǎn),只需添加多個 prop:

function Nav({ left, right }) {    return (      
        {right}          );  }  function App() {    return (      
        } right={} />      
    );  }

但如果內(nèi)部內(nèi)容邊龐大之后,雖然能很好運(yùn)行,但有一點(diǎn)尷尬。

Vue.js 采用了插槽的方法,我認(rèn)為它的 API 更簡潔。

      
          
    
          
    
          
               

Here might be a page title

             

A paragraph for the main content.

      

And another one.

              

Here's some contact info

      

Vue.js 使用插槽(受Web Component 規(guī)則草案的啟發(fā))清楚地指明內(nèi)容在組件內(nèi)部的位置。

Vue.js 為反復(fù)執(zhí)行的任務(wù)提供了捷徑。在這種情況下,可以使用插槽來簡化上面的示例:

          

Here might be a page title

              

A paragraph for the main content.

      

And another one.

              

Here's some contact info

      

7、指令修飾符

我認(rèn)為 Vue.js 指令修飾符的功能真的很酷。

在討論指令修飾符之前,讓我快速介紹一下指令是什么。

指令 v- 是你在 Vue.js 模板中使用的“帶有前綴的特殊屬性”。

指令的作用是在表達(dá)式的值發(fā)生變化時(shí)以響應(yīng)地方式將副作用施加到 DOM

例如:

// If "seen" variable is false then this p tag is not rendered  Now you see me

針對事件地指令:

   ...      ... 

還有其他更多的指令。

指令還支持修飾符。

使用通用指令執(zhí)行通用操作很開發(fā)友好。

對于事件處理指令(v-on),有很多修飾符:

               ...and more!

如果你想在 React 中執(zhí)行這樣的操作,可以創(chuàng)建一個輔助函數(shù)或一個自定義組件。但與指令修飾符地方式相比并不簡潔。

我很好奇是否有人可以開發(fā)一個 Babel JSX 超集,然后就可以編寫如下代碼了:

它將轉(zhuǎn)換為:

React.createElement(form, { onSubmit: preventWrapper(onSubmit) });

這不在 React 的討論范圍內(nèi),但我仍然認(rèn)為這會是一次生產(chǎn)效率地大提升。

還有更多的 Vue.js 修飾符。比如按鍵修飾符:

    

太酷了。

8、表單輸入綁定

當(dāng)將數(shù)據(jù)綁定到輸入元素時(shí),v-model 指令會有非常有趣的特性。

從文檔中發(fā)現(xiàn),v-model 內(nèi)部使用了不同的屬性,并為不同的輸入元素發(fā)出不同的事件:

這樣做的好處是,您無需關(guān)心數(shù)據(jù)是如何同步的,您只需關(guān)心它是如何為你服務(wù)的。

讓我們比較一下 React 和 Vue.js 是如何進(jìn)行綁定:

// Input  ////////  // React    // Vue.js    // Checkboxes and Radiobuttons  ////////  // React    // Vue.js    // Select ////////  // React            // Vue.js          

發(fā)現(xiàn)其中的不同了嗎?

現(xiàn)在,我要為 React 辯護(hù)了,React 鼓勵(并要求)您學(xué)習(xí)學(xué)習(xí)數(shù)據(jù)實(shí)際是如何設(shè)置以及它是如何變化的。這意味著,如果您曾經(jīng)用普通 JS 寫過一個表單,您將更了解其運(yùn)行原理。 與 Vue.js 不同,后者幫您把這些特性都抽象出來了。

9、自定義指令

像任何好的框架一樣,您可以在 Vue.js 中創(chuàng)建自己的自定義指令。

Vue.js 確實(shí)關(guān)注“代碼重用和抽象的主要形式是組件”,但這里有一個使用自定義指令不錯的例子,通過v-focus在 mount 時(shí)自動聚焦到元素上:

const app = Vue.createApp({})  // Register a global custom directive called `v-focus`  app.directive('focus', {    // When the bound element is mounted into the DOM...    mounted(el) {      // Focus the element      el.focus()    }  })  

在 React 中,你可能會編寫一個自定義組件來完成相同的事情,但對于這種簡單任務(wù)而言有些重

10、用 TypeScript 編寫

最后,Vue.js 最近正在用 TypeScript 重寫。

這意味著它們對 TypeScript 支持都是一流的,因?yàn)榭蚣鼙旧硎蔷褪怯?TypeScript 編寫的。

其實(shí) React 用什么編寫并不重要,我也不認(rèn)為它有什么太大的區(qū)別,但看到 Vue.js 也用 TypeScript 編寫仍然是一件很不錯事。

感謝各位的閱讀,以上就是“Vue和React的比較”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Vue和React的比較這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!


分享題目:Vue和React的比較
URL標(biāo)題:http://weahome.cn/article/jjcchs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部