欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

React.js入門實(shí)例教程之創(chuàng)建hello world 的5種方式

 更新時(shí)間:2016年05月11日 14:04:07   作者:surfaces  
React 是近期非常熱門的一個(gè)前端開發(fā)框架。應(yīng)用非常廣泛,接下來(lái)通過(guò)本文給大家介紹React.js入門實(shí)例教程之創(chuàng)建hello world 的5種方式 ,需要的朋友參考下吧

一、ReactJS簡(jiǎn)介

React 是近期非常熱門的一個(gè)前端開發(fā)框架。React 起源于 Facebook 的內(nèi)部項(xiàng)目,因?yàn)樵摴緦?duì)市場(chǎng)上所有 JavaScript MVC 框架,都不滿意,就決定自己寫一套,用來(lái)架設(shè) Instagram 的網(wǎng)站。做出來(lái)以后,發(fā)現(xiàn)這套東西很好用,就在2013年5月開源了。由于 React 的設(shè)計(jì)思想極其獨(dú)特,屬于革命性創(chuàng)新,性能出眾,代碼邏輯卻非常簡(jiǎn)單。所以,越來(lái)越多的人開始關(guān)注和使用,認(rèn)為它可能是將來(lái) Web 開發(fā)的主流工具。

ReactJS官網(wǎng)地址:http://facebook.github.io/react/

Github地址:https://github.com/facebook/react

ReactJS中文地址:http://reactjs.cn/react/docs/getting-started.html

React是什么?

React是由工作在Facebook的優(yōu)秀程序員開發(fā)出來(lái)的用于開發(fā)用戶交互界面的JS庫(kù)。其源碼由Facebook和社區(qū)優(yōu)秀的程序員維護(hù),因此其背后有著非常強(qiáng)大的技術(shù)團(tuán)隊(duì)給予技術(shù)支持。React帶來(lái)了很多新的東西,例如組件化、JSX、虛擬DOM等。其提供的虛擬DOM使得我們渲染組件呈現(xiàn)非常之快,讓我們從頻繁操作DOM的繁重工作之中解脫。了解React的人都知道,它做的工作更多偏重于MVC中的V層,結(jié)合其它如Flux等一起,你可以非常容易構(gòu)建強(qiáng)大的應(yīng)用。

二、ReactJS特點(diǎn)

1,虛擬DOM

通過(guò)DOM diff算法,只會(huì)更新有差異化的部分,不用渲染整個(gè)頁(yè)面,從而提高效率

2,組件化

把頁(yè)面分成若干個(gè)組件,組件中包含邏輯結(jié)構(gòu)和樣式

組件只包含自身邏輯,更新組件的時(shí)候可以預(yù)測(cè),利于維護(hù)

頁(yè)面拆分多個(gè)組件,可以做到重用

3,單向數(shù)據(jù)流

數(shù)據(jù)是從頂層組件傳遞到子組件中

數(shù)據(jù)可控

三、入門React 編寫 Hello,world 首先了解下什么是JSX

React的核心機(jī)制之一就是虛擬DOM:可以在內(nèi)存中創(chuàng)建的虛擬DOM元素。React利用虛擬DOM來(lái)減少對(duì)實(shí)際DOM的操作從而提升性能。類似于真實(shí)的原生DOM,虛擬DOM也可以通過(guò)JavaScript來(lái)創(chuàng)建,例如:

var child1 = React.createElement('li', null, 'First Text Content');
var child2 = React.createElement('li', null, 'Second Text Content');
var root2 = React.createElement('ul', { className: 'my-list' }, child1, child2);
React.render(
<div>{root2}</div>,
document.getElementById('container5')
); 

使用這樣的機(jī)制,我們完全可以用JavaScript構(gòu)建完整的界面DOM樹,正如我們可以用JavaScript創(chuàng)建真實(shí)DOM。但這樣的代碼可讀性并不好,于是React發(fā)明了JSX,利用我們熟悉的HTML語(yǔ)法來(lái)創(chuàng)建虛擬DOM:

var root =(
<ul className="my-list">
<li>First Text Content</li>
<li>Second Text Content</li>
</ul>
);
React.render(
<div>{root}</div>,
document.getElementById('container6')
);

四、React 編寫Hello,world 入門的5種方式

第1種方式

<div id="example1"></div>
<script type="text/jsx">
React.render( //直接html
<h1 className="classN1" >1 hellow 直接 html world </h1>, 
document.getElementById('example1')
);
</script> 

第2種方式

<div id="example2"></div>
<script type="text/jsx">
React.render( //直接創(chuàng)建元素
React.createElement('h1', {className:'classN2'}, '2 Hello, 直接創(chuàng)建元素 world!'), 
document.getElementById('example2')
);
</script> 

第3種方式

<div id="example3"></div>
<script type="text/jsx">
var CreateEl=React.createClass({
render:function(){
// return <h1>hellow 組件 創(chuàng)建 html world </h1> //有無(wú)括號(hào)均可 
return (<h1 className='classN3' >3 hellow 組件 創(chuàng)建 html world </h1>);
}
});
React.render( //組件方式創(chuàng)建元素
<CreateEl/>, 
//或者雙括號(hào) <CreateEl></CreateEl>
document.getElementById('example3')
);
</script> 

第4種方式

<div id="example4"></div> 
<script type="text/jsx">
var JsxCreateEl=React.createClass({ // 直接 jsx 方式 創(chuàng)建
render:function(){
return (
React.createElement('h1', {className: "classN4"},"4 Hello, 直接 jsx 方式 創(chuàng)建 world! ")
)
}
});
React.render( //組件方式創(chuàng)建元素
React.createElement(JsxCreateEl, null), 
document.getElementById('example4')
);
</script> 

第5種方式

<div id="example5"></div> 
<script type="text/jsx">
var Hello=React.createClass({ // 模板 Hello 
render:function(){
return (<span>{this.props.data}</span>)
}
});
var World=React.createClass({ // 模板 world 
render:function(){
return (<span> 和 World 模板拼接</span>)
}
});
React.render( // 2個(gè) 模板 組件方式創(chuàng)建元素
<h1 className="classN5" >
<Hello data='5 hello' />
<World />
</h1>, 
document.getElementById('example5')
);
</script>

五、上結(jié)果圖

附上代碼:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>無(wú)標(biāo)題文檔</title>
<meta name="viewport" content="initial-scale=1.0,user-scalable=no,maximum-scale=1,width=device-width" />
</head>
<body>
<style>
*{ margin:0; padding:0;}
body{ background:#333;}
#box{ background:url(loveImg/QioA-fxehfqi8208393.jpg) no-repeat center top; width:550px; border:8px solid #fff; -webkit-box-sizing:border-box; margin:50px auto;}
#example1,#example2,#example3,#example4,#example5{ margin:20px auto; width:100%; background:rgba(255,255,255,.3); padding:5px 10px; font-size:13px; color:#f1f1f1;-webkit-box-sizing:border-box; }
</style>
<div id="box">
<div id="example1"></div>
<script type="text/jsx">
React.render( //直接html
<h1 className="classN1" >1 hellow 直接 html world </h1>, 
document.getElementById('example1')
);
</script>
<div id="example2"></div>
<script type="text/jsx">
React.render( //直接創(chuàng)建元素
React.createElement('h1', {className:'classN2'}, '2 Hello, 直接創(chuàng)建元素 world!'), 
document.getElementById('example2')
);
</script>
<div id="example3"></div>
<script type="text/jsx">
var CreateEl=React.createClass({
render:function(){
// return <h1>hellow 組件 創(chuàng)建 html world </h1> //有無(wú)括號(hào)均可 
return (<h1 className='classN3' >3 hellow 組件 創(chuàng)建 html world </h1>);
}
});
React.render( //組件方式創(chuàng)建元素
<CreateEl/>, 
//或者雙括號(hào) <CreateEl></CreateEl>
document.getElementById('example3')
);
</script>
<div id="example4"></div> 
<script type="text/jsx">
var JsxCreateEl=React.createClass({ // 直接 jsx 方式 創(chuàng)建
render:function(){
return (
React.createElement('h1', {className: "classN4"},"4 Hello, 直接 jsx 方式 創(chuàng)建 world! ")
)
}
});
React.render( //組件方式創(chuàng)建元素
React.createElement(JsxCreateEl, null), 
document.getElementById('example4')
);
</script>
<div id="example5"></div> 
<script type="text/jsx">
var Hello=React.createClass({ // 模板 Hello 
render:function(){
return (<span>{this.props.data}</span>)
}
});
var World=React.createClass({ // 模板 world 
render:function(){
return (<span> 和 World 模板拼接</span>)
}
});
React.render( // 2個(gè) 模板 組件方式創(chuàng)建元素
<h1 className="classN5" >
<Hello data='5 hello' />
<World />
</h1>, 
document.getElementById('example5')
);
</script>
</div>
<script src="build/react.min.js"></script>
<script src="build/JSXTransformer.js"></script>
</body>
</html>

下面給大家補(bǔ)充點(diǎn)知識(shí):

React 術(shù)語(yǔ)

React Elements

代表 HTML 元素的 JavaScript 對(duì)象。 這些 JavaScript 對(duì)象最后被編譯成對(duì)應(yīng)的 HTML 元素。

Components

封裝 React Elements, 包含一個(gè)或者多個(gè) React Elements。 Components 用于創(chuàng)建可以復(fù)用的 UI 模塊,例如 分頁(yè),側(cè)欄導(dǎo)航等。

JSX

JSX 是 React 定義的一種 JavaScript 語(yǔ)法擴(kuò)展,類似于 XML 。 JSX 是可選的, 我們完全可以使用 JavaScript 來(lái)編寫 React 應(yīng)用, 不過(guò) JSX 提供了一套更為簡(jiǎn)便的方式來(lái)寫 React 應(yīng)用。

Virtual DOM

Virtual DOM 是一個(gè)模擬 DOM 樹的 JavaScript 對(duì)象。 React 使用 Virtual DOM 來(lái)渲染 UI, 同時(shí)監(jiān)聽 Virtual DOM 上數(shù)據(jù)的變化并自動(dòng)遷移這些變化到 UI 上。

相關(guān)文章

  • Remix?路由模塊輸出對(duì)象handle函數(shù)

    Remix?路由模塊輸出對(duì)象handle函數(shù)

    這篇文章主要為大家介紹了Remix?路由模塊輸出對(duì)象handle函數(shù)使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • create-react-app構(gòu)建項(xiàng)目慢的解決方法

    create-react-app構(gòu)建項(xiàng)目慢的解決方法

    這篇文章主要介紹了create-react-app構(gòu)建項(xiàng)目慢的解決方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • React Fiber樹的構(gòu)建和替換過(guò)程講解

    React Fiber樹的構(gòu)建和替換過(guò)程講解

    React Fiber樹的創(chuàng)建和替換過(guò)程運(yùn)用了雙緩存技術(shù),直接將舊的 fiber 樹替換成新的 fiber 樹,這樣做的好處是省去了直接在頁(yè)面上渲染時(shí)的計(jì)算時(shí)間,避免計(jì)算量大導(dǎo)致的白屏、卡頓,現(xiàn)在你一定還不太理解,下面進(jìn)行詳細(xì)講解,需要的朋友可以參考下
    2022-12-12
  • react電商商品列表的實(shí)現(xiàn)流程詳解

    react電商商品列表的實(shí)現(xiàn)流程詳解

    這篇文章主要介紹了react實(shí)現(xiàn)電商商品列表的流程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • react腳手架配置代理的實(shí)現(xiàn)

    react腳手架配置代理的實(shí)現(xiàn)

    本文主要介紹了react腳手架配置代理的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • react 跳轉(zhuǎn)后路由變了頁(yè)面沒刷新的解決方案

    react 跳轉(zhuǎn)后路由變了頁(yè)面沒刷新的解決方案

    最近在學(xué)習(xí)React的過(guò)程中遇到了路由跳轉(zhuǎn)后頁(yè)面不刷新的問(wèn)題,本文就詳細(xì)的介紹一下解決方法,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • react-native中ListView組件點(diǎn)擊跳轉(zhuǎn)的方法示例

    react-native中ListView組件點(diǎn)擊跳轉(zhuǎn)的方法示例

    ListView作為React Native的核心組件,用于高效地顯示一個(gè)可以垂直滾動(dòng)的變化的數(shù)據(jù)列表。下面這篇文章主要給大家介紹了關(guān)于react-native中ListView組件點(diǎn)擊跳轉(zhuǎn)的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-09-09
  • React文字展開收起組件的實(shí)現(xiàn)示例

    React文字展開收起組件的實(shí)現(xiàn)示例

    本文主要介紹了React文字展開收起組件的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 詳解React native fetch遇到的坑

    詳解React native fetch遇到的坑

    這篇文章主要介紹了詳解React native fetch遇到的坑,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • React-native橋接Android原生開發(fā)詳解

    React-native橋接Android原生開發(fā)詳解

    本篇文章主要介紹了React-native橋接Android原生開發(fā)詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01

最新評(píng)論