jQuery or React?
jQuery
是對原生 JavaScript
封裝使其更加易用患整,崇尚的是 html
,css
和 js
獨(dú)立的思想,而 React
主導(dǎo)的是將實現(xiàn)某一個功能的 html
巷屿,css
和 js
綁定在一塊,作為一個組件(component)來使用墩虹。個人認(rèn)為嘱巾,兩者各有所長憨琳,專注點也不同。jQuery
應(yīng)該更加適合工具庫和邏輯業(yè)務(wù)的開發(fā)旬昭,即不涉及 view
層的開發(fā)篙螟,;而 React
更加適合頁面業(yè)務(wù)的開發(fā)问拘,可以將多個常用的功能模塊設(shè)計為組件進(jìn)行復(fù)用闲擦。
JSX
既然說 React
是將 html
,css
和 js
作為一個組件场梆,那么這三者如何整合在一塊?為此纯路,F(xiàn)acebook 引入了 JSX
語法來實現(xiàn)或油。在 JSX
文件中,一般會出現(xiàn) html
和 js
代碼驰唬,而 css
代碼一般通過外部引入的方式來加入到其中顶岸,如下所示:
import React from 'react';
import 'text-view.css';
export default class TextView extends React.Component {
constructor(props) {
super(props);
this.state = {
content: props.content
}
}
render() {
return (
<div>{this.state.content}</div>
);
}
}
生命周期
React
的組件均有生命周期,componentWillMount
叫编,componentDidMount
辖佣,render
等,即在組件不同的加載階段會有不同的回調(diào)方法搓逾,開發(fā)者可以在這些方法中更好地對組件進(jìn)行控制卷谈,比如在組件銷毀時對資源進(jìn)行釋放等操作。
原理和效率
相比于 jQuery
直接操作 DOM
霞篡,React
采用一種 Virtual DOM
的技術(shù)來間接操作 DOM
世蔗。所謂的 Virtual DOM
技術(shù),指的是開發(fā)者去改變 “DOM”
時并不會直接影響到真實的 DOM
朗兵,最終的 DOM
是通過虛擬的 DOM
結(jié)構(gòu)加上特定的算法得出來的污淋。
React
對于事件機(jī)制做了優(yōu)化,采用了事件委托余掖,即 React
會對同一種事件進(jìn)行匯總寸爆,然后計算出是哪個元素觸發(fā)了該事件,再把事件分配到該元素上盐欺。比如 onClick
赁豆,雖然在代碼中可能有多個 DOM 綁定,但是最終其實只是綁定在同一個 onClick
上找田,React
會通過 Virtual DOM
計算出到底是哪個元素觸發(fā)了這個事件歌憨。
最重要的是,React
對于 DOM
的更新有一個比較突出的優(yōu)點:只改變需要改變的墩衙。即會通過算法計算出哪個結(jié)構(gòu)是確實需要更新的而哪個不需要务嫡,之后才去作必要的 DOM
結(jié)構(gòu)更新甲抖。