成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

鵝廠優(yōu)文 | ReactJS一點(diǎn)通

ziwenxie / 577人閱讀

摘要:于是好處顯而易見,并非每修改一次組件的,就會(huì)重新渲染一次,而是在結(jié)束后做一次計(jì)算,減少冗余的操作?;谏鲜龅膬牲c(diǎn),很自然的就獲得一部分開發(fā)者的青睞。

歡迎大家前往騰訊云+社區(qū),獲取更多騰訊海量技術(shù)實(shí)踐干貨哦~

本文由鵝廠新鮮事兒發(fā)表于云+社區(qū)專欄

作者:盧文喆 騰訊云 UI工程師

導(dǎo)語 | 當(dāng)React 剛開始紅的時(shí)候,一直覺得 JSX 的設(shè)計(jì)思想極其獨(dú)特,屬于革命性的創(chuàng)新,它性能出眾,代碼邏輯卻非常簡單,所以,受到很多開發(fā)者的關(guān)注和使用,認(rèn)為它可能是將來 Web 開發(fā)的主流工具。

React 最早起源于 Facebook 的一個(gè)內(nèi)部項(xiàng)目,因?yàn)楣緦?duì)現(xiàn)有的 JavaScript MVC 框架都不滿意,就決定自己開發(fā)一套,用來架設(shè) Instagram 的網(wǎng)站。開發(fā)完成后,發(fā)現(xiàn)這套東西很好用,就在2013年5月開源了。

那么 React 優(yōu)勢在哪里呢?

首先:虛擬 DOM,在 DOM 樹的狀態(tài)需要發(fā)生變化時(shí),虛擬 DOM 機(jī)制會(huì)將同一Event loop前后的 DOM樹進(jìn)行對(duì)比,如果兩個(gè) DOM 樹存在不一樣的地方,那么 React 僅僅會(huì)針對(duì)這些不一樣的區(qū)域來進(jìn)行響應(yīng)的 DOM 修改,從而實(shí)現(xiàn)最高效的 DOM 操作和渲染。

比如,我們修改了 DOM 樹上一些節(jié)點(diǎn)或 UI 組件對(duì)應(yīng)綁定的 state,React 會(huì)即刻將其標(biāo)記為“臟狀態(tài)”,在一個(gè) Event loop 結(jié)束時(shí),React 會(huì)計(jì)算得出 DOM 樹上需要修改的地方及其最終的狀態(tài),并僅僅針對(duì)這些地方進(jìn)行一次性的重新渲染。

于是好處顯而易見,并非每修改一次組件的 state,就會(huì)重新渲染一次,而是在 Event loop 結(jié)束后做一次計(jì)算,減少冗余的 DOM 操作。另外 React 只針對(duì)需要修改的地方來做新的渲染,而非重新渲染整個(gè) DOM 樹,自然效率很高。

其次:組件可嵌套,而且,可以模版化 —— 其實(shí)在 React 里提及的“組件”,常規(guī)是一些可封裝起來、復(fù)用的 UI 模塊,可以理解為“帶有細(xì)粒度UI功能的部分DOM區(qū)域”。然后我們可以把這些組件層層嵌套起來使用,當(dāng)然這樣組件間會(huì)存在依賴關(guān)系。

至于模塊化,類似于 ejs 那樣可以作為獨(dú)立的模塊被引用到頁面上來復(fù)用,它可以直接把 UI 組件當(dāng)作腳本模塊那樣來使用,完全可以配合 CommonJS、AMD、CMD 等規(guī)范來 require 需要的組件模塊,并處理好它們的依賴關(guān)系。

基于上述的兩點(diǎn),React 很自然的就獲得一部分開發(fā)者的青睞。不過在這之前得先理清兩件事情:

1. React 是一個(gè)純 View 層,不擅長于和動(dòng)態(tài)數(shù)據(jù)打交道,因此它不同于,也替代不了常規(guī)的框架;

2. React 很擅長于處理組件化的頁面,在頁面上搭組件的形式有點(diǎn)像搭積木一樣,因此用上React的項(xiàng)目需求常規(guī)為界面組件化。

簡單點(diǎn)說,React組件應(yīng)該具有如下特征:

(1)可組合(Composeable):一個(gè)組件易于和其它組件一起使用,或者嵌套在另一個(gè)組件內(nèi)部。如果一個(gè)組件內(nèi)部創(chuàng)建了另一個(gè)組件,那么說父組件擁有它創(chuàng)建的子組件,通過這個(gè)特性,一個(gè)復(fù)雜的UI可以拆分成多個(gè)簡單的 UI 組件;

(2)可重用(Reusable):每個(gè)組件都是具有獨(dú)立功能的,它可以被使用在多個(gè)UI場景;

(3)可維護(hù)(Maintainable):每個(gè)小的組件僅僅包含自身的邏輯,更容易被理解和維護(hù);

組件化一直是網(wǎng)頁開發(fā)的利器,許多開發(fā)者最希望能夠最大程度的重復(fù)使用過去的開發(fā)的組件,避免重復(fù)造輪子。在 React 中組件就是一切,前端開發(fā)可能需要花點(diǎn)時(shí)間轉(zhuǎn)變思維,尤其過去我們往往習(xí)慣將 HTML 、CSS 和 JavaScript 分離,現(xiàn)在卻要把它們都封裝在一起。

以下是一般 React Component 書寫的主要兩種方式:

1.使用 ES6 的 Class

//  注意組件首字母需要大寫
class MyComponent extends React.Component {
    // render 是 Class based 元件唯一必須的方法(method)
    render() {
        return (
            
Hello, World!
); } } // 將 組件插入 id 為 app 的 DOM 元素中 ReactDOM.render(, document.getElementById("app"));

2.使用 Functional Component 寫法

// 使用 arrow function 來設(shè)計(jì) Functional Component 讓 UI 設(shè)計(jì)更便捷,避免互相干擾(side effect)
const MyComponent = () => (
    
Hello, World!
); // 將 組件插入 id 為 app 的 DOM 元素中 ReactDOM.render(, document.getElementById("app"));

前面說到 React 有獨(dú)有的 JSX 語法,那么到底什么是 JSX 呢?

JSX在ECMAScript的基礎(chǔ)上提供了類似于XML的擴(kuò)展。 JSX和HTML有點(diǎn)像,但也有不一樣的地方。例如,HTML中的class屬性在JSX中 為className。其他不一樣的地方,你可以參考FB的HTML Tags vs. React Components 這篇文章。

但是由于瀏覽器原生并不支持JSX,因此我們需要將其編譯為JS,有很多方法能夠 完成這個(gè)任務(wù),后面我們會(huì)提到這些方法。此外,Babel也能夠講JSX編譯為JS。

一些參考資料:

JSX in depth

Online JSX compiler

Babel: How to use the react transformer

一般而言 JSX 通常有兩種使用方式:

1.使用 browserify 或 webpack 等 CommonJS bundler 并整合 babel 預(yù)處理

2.在瀏覽器端做解析

請(qǐng)大家注意JSX的語法書寫方式:



  
    
    Hello React!
    
    
    
    
  
  
    

一般載入 JSX 方式有:

內(nèi)嵌

從外部引入

? ? ?

總結(jié):以上都是我對(duì) React 簡單的了解,包括 React 的優(yōu)勢、組件化的特征、React Component 的方法、以及 React 中為何要使用 JSX,以及 JSX 基本概念和用法。在 React 里,所有的事物都是以 Component 為基礎(chǔ),通常會(huì)將同一個(gè) Component 相關(guān)的資源放在一起,而在撰寫 React Component 時(shí)我們常會(huì)使用 JSX 的方式來提升書寫效率。 JSX 是一種語法類似 XML 的 ECMAScript 語法擴(kuò)充,可以發(fā)揮 JavaScript 的強(qiáng)大能力,放棄蹩腳的模板語言。當(dāng)然 JSX 并非強(qiáng)制使用,你也可以選擇不用,因?yàn)樽罱K JSX 的內(nèi)容都會(huì)轉(zhuǎn)化成 JavaScript。

以上就是對(duì) React 入門的部分理解。

問答
如何擴(kuò)展React.js組件?
相關(guān)閱讀
AI從入門到放棄:CNN的導(dǎo)火索,用MLP做圖像分類識(shí)別?
開發(fā)效率太低?您可能沒看這篇文章
微信車票背后的設(shè)計(jì)故事
【每日課程推薦】機(jī)器學(xué)習(xí)實(shí)戰(zhàn)!快速入門在線廣告業(yè)務(wù)及CTR相應(yīng)知識(shí)

此文已由作者授權(quán)騰訊云+社區(qū)發(fā)布,更多原文請(qǐng)點(diǎn)擊

搜索關(guān)注公眾號(hào)「云加社區(qū)」,第一時(shí)間獲取技術(shù)干貨,關(guān)注后回復(fù)1024 送你一份技術(shù)課程大禮包!

海量技術(shù)實(shí)踐經(jīng)驗(yàn),盡在云加社區(qū)!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/98109.html

相關(guān)文章

  • Python 工匠:善用變量來改善代碼質(zhì)量

    摘要:變量用的好或不好,和代碼質(zhì)量有著非常重要的聯(lián)系。簡而言之,匈牙利命名法就是把變量的類型縮寫,放到變量名的最前面。很多情況下,使用匈牙利命名法是個(gè)不錯(cuò)的主意,因?yàn)樗梢愿纳颇愕拇a可讀性,尤其在那些變量眾多同一類型多次出現(xiàn)時(shí)。 歡迎大家前往騰訊云+社區(qū),獲取更多騰訊海量技術(shù)實(shí)踐干貨哦~ 本文由鵝廠優(yōu)文發(fā)表于云+社區(qū)專欄作者:朱雷 | 騰訊IEG高級(jí)工程師 『Python 工匠』是什么?...

    seanHai 評(píng)論0 收藏0
  • Python 工匠:編寫條件分支代碼的技巧

    摘要:系列文章工匠善用變量改善代碼質(zhì)量序言編寫條件分支代碼是編碼過程中不可或缺的一部分。而進(jìn)行條件分支判斷時(shí)用到的也是這個(gè)值重點(diǎn)來了,雖然所有用戶類實(shí)例的布爾值都是真。 歡迎大家前往騰訊云+社區(qū),獲取更多騰訊海量技術(shù)實(shí)踐干貨哦~ 本文由鵝廠優(yōu)文發(fā)表于云+社區(qū)專欄 作者:朱雷 | 騰訊IEG高級(jí)工程師 『Python 工匠』是什么? 我一直覺得編程某種意義是一門『手藝』,因?yàn)閮?yōu)雅而高效的代碼...

    KaltZK 評(píng)論0 收藏0
  • es6語法的reactjs的state狀態(tài)和組件間props傳遞的實(shí)踐

    摘要:目前只是體會(huì)到組件之間傳遞的值的初始來源一般都是值,可能是實(shí)踐不夠的原因。。。此時(shí),可以建一個(gè)組件內(nèi)部封裝一個(gè)構(gòu)造函數(shù),內(nèi)部封裝三個(gè)方法。 PS:開頭的一段廢話 ???????想起一個(gè)月前還不知道reactjs該如何下手的而今天有點(diǎn)小體會(huì),還是有點(diǎn)小欣慰,不過回望一些走過的坑和開始時(shí)的滿頭漿糊覺得還是有點(diǎn)恐怖的。今天分享一點(diǎn)實(shí)踐中的小心得給新手朋友們。 reactjs的es6語法形式 ...

    malakashi 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<