學了兩天 react,亂講一下學習思路,順便弄了一個腳手架

来源:https://www.cnblogs.com/fengzheng/archive/2018/11/09/9934600.html
-Advertisement-
Play Games

之前一直用 vue 做一些小項目,最近接觸了一個項目是用 react 做前端,雖然本身是做後端開發的,但是前端還是要瞭解一點的。 現在的項目基本上都是前後端分離的,後端就先不提了。前端的框架也是層出不窮,使用最多的就是 angular、vue、react 。angular 是前幾年用的比較多,最近好 ...


之前一直用 vue 做一些小項目,最近接觸了一個項目是用 react 做前端,雖然本身是做後端開發的,但是前端還是要瞭解一點的。

現在的項目基本上都是前後端分離的,後端就先不提了。前端的框架也是層出不窮,使用最多的就是 angular、vue、react 。angular 是前幾年用的比較多,最近好像用的人沒那麼多了。vue 是華人開發的項目,也是這三個框架里上手最簡單的。react 是 fecebook 開源的框架,市場占有率也是最高的,國外的公司和國內的一些大公司用的比較多。

我也不是專業前端,學習 react 也是一時興起,講不了什麼高深的東西,就來說說入門 react 的一個過程,僅僅是入門而已。

前期準備

不光學習 react 需要儲備一些前端的知識,學習 vue 等前端框架同樣需要。

稍微瞭解一下 nodejs ,前端框架的原理是這樣的,並不是像我們之前那樣直接寫操作 DOM 的 js 腳本或者使用 jquery,而是用 ES5、ES6 、TypeScript 等標準去組織項目代碼,這其中需要用到 nodejs 的很多包,最後編譯的時候,把用這些標準組織的代碼編譯成我們通常意義上的 js 代碼,然後在瀏覽器執行。

會使用 npm ,這是一個包管理工具,對比 Java 來說,它就類似於 maven,可以方便的管理項目中使用的包。

webpack 瞭解一點,webpack 是一個現代 JavaScript 應用程式的靜態模塊打包器,我們項目開發和編譯使用的命令 dev、start、build 最後都是由 webpack 幫我們完成的。

學習過程

我這裡只是說一下我學習的過程。打開 Google,先去找 react 官網,有英文的和中文的,因為英文的看著費勁,所以就看了中文官網 https://react.docschina.org/。 花大概兩個小時,把每個小結都看完,也就是做個大概瞭解,瞭解 react 到底是怎麼一個機制,具體到寫代碼的時候肯定還是要返回來查的。學任何東西其實都是一樣的,不能上來就拿一個 demo 開始改,肯定要先巨集觀的瞭解一下這項技術優缺點、運轉機制,然後再鑽到細節里。

看完官方文檔後,開始創建一個小項目寫寫簡單的代碼。 react 為了方便入門,提供了一個腳手架工具,create-react-app,只需要運行簡單的命令就能創建一個 react 項目出來。

先用 npm 全局安裝 create-react-app 包。

npm install -g create-react-app

然後運行命令創建項目,運行之前先 cd 到你想創建項目的目錄

create-react-app my-app

create-react-app 已經出到了 2.x 的版本,它幫助我們省去了一些配置上的東西,它其實是把 webpack 做了比較好的封裝,大大節省了我們配置 webpack 的時間,可以另我們專註的寫程式代碼。如果不適用它的話,你從頭到尾的配置項目結構和webpack,中間會有很多坑在等著你,恐怕還沒開始寫代碼就已經中途放棄了。

然後運行 npm start 就可以把最簡單的項目跑起來。

跑起來之後,可以根據官方文檔來寫兩個簡單的頁面,建立一下自信。

如果你之前用過 vue,會發現 react 和 vue 差別是非常大的。vue 是非常直接 MVVM 模式,通俗點來說就是數據雙向綁定,改變視圖也就改變了 model ,改變 model 也就改變了視圖。

而 react 是在每個視圖中維護一個 state ,每次只能操作當前視圖的 state ,每次頁面載入需要初始化 state ,state 綁定到視圖上,但是視圖的修改,需要通知 state 。這是最基本的運行模式。如果是做一個比較小的系統,交互不是很複雜的那種,可以用這些足夠了。

繼續說看文檔這件事,只看官方文檔基本上可以寫一些簡單的頁面了,但是還不夠,我們通過搜索引擎繼續搜索,各種各樣的技術博客、文檔進去看,會陸陸續續的發現更多的信息,比如 router 、redux、mobx 等等,繼續根據新的關鍵詞還能挖掘出更多的東西。以 react 為例,除了 react 核心的功能,還有一些擴展的框架,如果我們想把這些都瞭解,從早到晚看一天的文檔恐怕也是不夠的。

router 路由器,如果頁面很多,項目很大的情況下,就需要路由器來管理頁面路徑了,訪問哪個路徑要載入哪個頁面,這些還是統一管理起來比較好。

redux 和 mobx 是數據管理的擴展包 ,我們如果只用 state 來管理和維護數據,當有不同的頁面需要有數據交互或共用的時候,就很吃力了,redux 或 mobx 就提供了數據統一管理的功能,把數據獨立出來,這樣就可以在不同的頁面、不同的組件之間來迴流轉了。

比起 mobx 來,redux 相對來說就麻煩的多,mobx 提供了裝飾器的語法功能,就像 Java 中的註解、Python中的裝飾器一樣。

寫的非常亂,但這就像開始學習 react 一樣,有些東西就是在你各種翻文檔的過程中才發現的,比如 redux 和 mobx ,大多數時候,開始你並不知道有這些東西。

學習的過程中,我用 react + router + mobx 搭了一個腳手架項目,有想要用的可以關註公眾號,回覆 「react」 。
掃碼關註


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在使用Arcgis API for JavaScript進行做地圖開發的過程中,在地圖進行畫線、畫面是經常使用的功能。本文主要介紹這一功能。 本文適用Arcgis API版本:Arcgis API for JS 4.x以上。 方案分析: 方案分析: 首先要初始化 map 和 mapView(2D m ...
  • 問題一:ruby按照官方文檔安裝後更換gem源時,報錯Error fetching https://gems.ruby-china.org/: bad response Not Found 404 (https://gems.ruby-china.org/specs.4.8.gz);不知就裡,在網上 ...
  • 攻擊原理 XSS(cross-site scripting跨域腳本攻擊)攻擊是最常見的Web攻擊,它允許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。 xss 與其他的攻擊方式相比缺點明顯,如下: 1、耗時間 2、有一定幾率不成功 3、沒有相應的軟體來完成自動化攻擊 4、前期需要基本的htm ...
  • 最終效果為 div元素從右向左出現, 然後從左向右消失。 transition標簽包裹要移動的元素: css 樣式: 其中: 1: 為div元素顯示時的狀態 2: 為div元素移動的過程 (進入的過程,離開的過程) (直線運動,運動0.3s) 3: 為div元素移動之前和離開後的轉態 (三個參數分別 ...
  • 1:打開Visual studio 2017後 按圖片操作新建項目 也可以使用快捷鍵Ctrl+Shift+N 進入創建項目頁面 2:選擇JavaScript 里的Node.js創建對應的Vue項目 如果沒有javaScript對應的node.js選項 打開最下麵的visual studio安裝程式 ...
  • HTML表單: (🐖:本文部分代碼需要在W3School平臺上運行) 表單用於搜集不同類型的用戶輸入 Content 元素:<form>*,<input>,<fieldset>,<legend>,<select>,<textarea>,<button>,<datalist>,<keygen>,<o ...
  • 使用對象池 Object Pool產生炸彈,首先創建一個對象組 this.exploadGroup = this.add.group(); 然後用對象組的.get重覆應用對象池而不是用.create,this.exploadGroup.get(x,y,'explode'); 最後銷毀的時候不是用.d... ...
  • 前言 學學忘忘 閑來做個筆記 整理下數組常用方法。 Array 數組常用方法 創建數組的基本方式有兩種 1.第一種是使用Array構造函數, var arr = new Array(); 使用構造函數方式的話 var arr = new Array(20),則表示創建了一個lenght值為20的數組 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...