最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

實(shí)現(xiàn)React單頁應(yīng)用的方法詳解

 更新時間:2016年08月02日 10:45:00   作者:一個蘿卜一個坑  
今天我們來學(xué)習(xí)React是如何構(gòu)建起一個單頁應(yīng)用的,React作為目前最流行的前端框架之一,其受歡迎程度不容小覷,從這門框架上我們可以學(xué)到許多其他前端框架所缺失的東西,也是其創(chuàng)新性所在的地方,比如虛擬DOM、JSX等。下面一起來看看。

首先在學(xué)習(xí)這門框架前,你需要對以下知識有所了解:

     1.原生JS基礎(chǔ)

     2.CSS基礎(chǔ)

     3.npm包管理基礎(chǔ)

     4.webpack構(gòu)建項(xiàng)目基礎(chǔ)

     5.ES6規(guī)范

以上五個知識點(diǎn)也是目前學(xué)習(xí)其他前端框架所必須了解的前置任務(wù)。

JS和CSS就不多說了,npm是目前最提倡也是占據(jù)主導(dǎo)地位的包管理工具,還在用bower或者其他工具的童鞋可以考慮下了。而webpack作為新一代打包工具,已經(jīng)在前端打包工具中獨(dú)占鰲頭,和Browserify相比也有很大優(yōu)勢。至于ES6規(guī)范雖然現(xiàn)在主流瀏覽器還不兼容,但可以使用babel等轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換。

結(jié)合其他的一些主流前端框架,我個人認(rèn)為構(gòu)建單頁應(yīng)用有這樣三個基本的東西:組件、路由、狀態(tài)管理。那么接下來我就基于這三者來介紹React,當(dāng)然其中會穿插一些額外的知識點(diǎn)。

組件

React的組件撰寫和調(diào)用主要依賴于ES6的模塊化和JSX的語法,以下是一個例子:

// main.js
import React from 'react'
import { render } from 'react-dom'
import MyComponent from './component.js'
import './main.css'


// 主組件
class MyDemo extends React.Component {
  render() {
    return (
      <div className="box">
        <MyComponent />
      </div>
    )
  }
}

render((
  <MyDemo />
), document.getElementById('app'))


// component.js

// 子組件
import React from 'react'

export default class MyComponent extends React.Component {
  render() {
    return (
      <div>
        <p>這是一個組件!</p>
      </div>
    )
  }
}


// main.css
.box {
  width: 100%
}

相比Vue.js框架,我個人認(rèn)為React的組件編寫方式還是沒有Vue來的舒服,組件的css樣式還是脫離在組件外部的,維護(hù)起來也不是很方便。

從這個例子中我們就可以看到React的虛擬DOM和JSX的特性了。相比其他框架,React的虛擬DOM不僅可以提升頁面的性能,同時還可以防止XSS攻擊等。關(guān)于虛擬DOM的具體原理這里不作介紹

至于JSX語法則是JS的一種語法糖,我們可以通過這種語法糖來便捷實(shí)現(xiàn)一些功能,這里JSX 把類 XML 的語法轉(zhuǎn)成純粹 JavaScript,XML 元素、屬性和子節(jié)點(diǎn)被轉(zhuǎn)換成 React.createElement 的參數(shù)。類似的JS語法糖還有TypeScript等。

路由

前端路由機(jī)制是目前構(gòu)建單頁應(yīng)用(SPA)最重要的一環(huán)之一。通過前端路由我們可以優(yōu)化用戶體驗(yàn),不需要每次都從服務(wù)器獲取全部數(shù)據(jù),從而快速將頁面展現(xiàn)給用戶。

React路由依賴于React Router。React Router 保持 UI 與 URL 同步。它擁有簡單的 API 與強(qiáng)大的功能例如代碼緩沖加載、動態(tài)路由匹配、以及建立正確的位置過渡處理。

下面是一個React路由的例子:

import React, { Component } from 'react'
import { render } from 'react-dom'
import { Router, Route, IndexRoute, Link, browserHistory } from 'react-router'

const ACTIVE = { color: 'red' }

class App extends Component {
  render() {
    return (
      <div>
        <h1>我的路由</h1>
        <ul>
          <li><Link to="/" activeStyle={ACTIVE}>首頁</Link></li>
          <li><Link to="/users" activeStyle={ACTIVE}>用戶頁</Link></li>
        </ul>
        {this.props.children}
      </div>
    )
  }
}

class Index extends React.Component {
  render() {
    return (
      <div>
        <h2>Index!</h2>
      </div>
    )
  }
}

class Users extends React.Component {
  render() {
    return (
      <div>
        <h2>Users</h2>
      </div>
    )
  }
}

render((
  <Router history={browserHistory}>
    <Route path="/" component={App}>
      <IndexRoute component={Index}/>
      <Route path="users" component={Users}></Route>
    </Route>
  </Router>
), document.getElementById('app'))

這里只列出了React的一種路由寫法。相比其他框架,React路由的語法更加通俗易懂。 

狀態(tài)管理

狀態(tài)管理不是單頁應(yīng)用必須的,使用它能夠幫助我們統(tǒng)一管理各個狀態(tài)的變更,使整個項(xiàng)目流程清晰可維護(hù)。React實(shí)現(xiàn)狀態(tài)管理可以使用官方推薦的Redux。

Redux使用的是嚴(yán)格的單向數(shù)據(jù)流。整個應(yīng)用的 state 被儲存在一棵 object tree 中,并且這個 object tree 只存在于唯一一個 store 中。 

項(xiàng)目實(shí)例

這里我用React寫了一個單頁網(wǎng)站,頁面如下:

Fetch

因?yàn)樯厦娴膶?shí)例中我用到了Fetch來進(jìn)行Ajax交互,所以這里簡單介紹下Fetch。
我們可以把Fetch作為下一代Ajax技術(shù),它采用了目前流行的 Promise 方式處理。

利用Fetch我們可以這樣寫Ajax進(jìn)行數(shù)據(jù)交互:

// 獲取數(shù)據(jù)方法
  fetchFn = () => {
    fetch('../../data.json')
      .then((res) => { console.log(res.status);return res.json() })
      .then((data) => { this.setState({lists:data.listData}) })
      .catch((e) => { console.log(e.message) })
  }

總結(jié)

學(xué)習(xí)一門框架最重要的并不是學(xué)習(xí)它的技術(shù),而是學(xué)習(xí)其帶來的解決問題的思路。通過React這一門框架的學(xué)習(xí),你可以從它獨(dú)特的新特性中發(fā)掘一種新的思維模式。只有思維層面得到了擴(kuò)展,你才能在前端的海洋里自由翱翔。希望本文對大家學(xué)習(xí)React有所幫助。

相關(guān)文章

  • 詳解如何在React中監(jiān)聽鼠標(biāo)事件

    詳解如何在React中監(jiān)聽鼠標(biāo)事件

    React可以通過使用React事件系統(tǒng)來監(jiān)聽鼠標(biāo)事件,您可以在React組件中通過使用特定的事件處理函數(shù)來注冊和處理鼠標(biāo)事件,本文小編講給大家詳細(xì)介紹一下如何在React中監(jiān)聽鼠標(biāo)事件,需要的朋友可以參考下
    2023-09-09
  • 詳解React的組件通訊

    詳解React的組件通訊

    這篇文章主要介紹了詳解react組件通訊方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-11-11
  • React UI組件庫ant-design的介紹與使用

    React UI組件庫ant-design的介紹與使用

    Ant Design是阿里螞蟻金服團(tuán)隊(duì)基于React開發(fā)的ui組件,主要用于中后臺系統(tǒng)的使用,這篇文章主要介紹了React UI組件庫ant-design的介紹與使用,需要的朋友可以參考下
    2023-12-12
  • React使用ref方法與場景介紹

    React使用ref方法與場景介紹

    這篇文章主要介紹了React使用ref方法與場景,React支持給任意組件添加特殊屬性。ref屬性接受一個回調(diào)函數(shù),它在組件被加載或卸載時會立即執(zhí)行
    2022-10-10
  • React中的axios模塊及使用方法

    React中的axios模塊及使用方法

    axios 是一個基于 promise 的 HTTP 庫,可以用在瀏覽器和 node.js 中,本文給大家分享React中axios模塊的使用方法,感興趣的朋友一起看看吧
    2022-03-03
  • React-Native 組件之 Modal的使用詳解

    React-Native 組件之 Modal的使用詳解

    本篇文章主要介紹了React-Native 組件之 Modal的使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • React組件傳參方式你了解嗎

    React組件傳參方式你了解嗎

    眾所周知?,在業(yè)務(wù)開發(fā)中,無論用的什么框架,首先要熟悉項(xiàng)目搭建,路由配置和組件通信,所以我們今天要探究的就是React中組件通信的幾種方式,快跟隨小編一起學(xué)習(xí)起來吧
    2024-03-03
  • React中useState的理解和使用案例

    React中useState的理解和使用案例

    Hook是React16.8的新增特性,它可以讓你在不編寫class的情況下使用state以及其他的React特性,本文中講解的useState就是React中的其中一個Hook,這篇文章主要給大家介紹了關(guān)于React中useState理解和使用的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • React 服務(wù)器組件的使用方法詳解

    React 服務(wù)器組件的使用方法詳解

    最近,React 服務(wù)器組件受到了廣泛的關(guān)注和熱捧,這是因?yàn)?nbsp;React 服務(wù)器組件允許開發(fā)人員將與組件相關(guān)的任務(wù)外包給服務(wù)器,在本文中,我們將討論什么是 React 服務(wù)器組件,以及如何將它們集成到構(gòu)建應(yīng)用程序中,需要的朋友可以參考下
    2023-10-10
  • react使用axios進(jìn)行api網(wǎng)絡(luò)請求的封裝方法詳解

    react使用axios進(jìn)行api網(wǎng)絡(luò)請求的封裝方法詳解

    這篇文章主要為大家詳細(xì)介紹了react使用axios進(jìn)行api網(wǎng)絡(luò)請求的封裝方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03

最新評論

吴忠市| 淅川县| 和政县| 万年县| 庆云县| 张北县| 怀柔区| 万盛区| 大丰市| 和政县| 武义县| 江北区| 仁布县| 蛟河市| 通化市| 曲阜市| 山东省| 铜陵市| 连平县| 常宁市| 黄冈市| 金乡县| 陆河县| 确山县| 镇平县| 农安县| 罗城| 砀山县| 团风县| 溧阳市| 巩义市| 平潭县| 曲靖市| 大邑县| 镶黄旗| 宾川县| 长兴县| 宜兰县| 金溪县| 边坝县| 唐海县|