React 初探(九)

概述

之前已經(jīng)說了搭建一個 React 項目的基本知識阱州,現(xiàn)在就來正式搭建一個 React 項目。首先說一下這個 React 項目的頁面和功能

項目介紹

這個 React 項目主要用于移動端卸伞,共有四個頁面

  • Login -> 用于登錄
  • Home -> 展示主頁
  • Detail -> 展示詳情頁面
  • 404 -> 404 頁面
  • Account -> 個人中心頁面

使用的庫包括

  • react
  • react-redux
  • react-router-dom
  • redux
  • react-sticky
  • rc-form
  • node-sass
  • antd-mobile

使用 fetch 進行 AJAX 請求
使用 scss 進行 css 的編寫

快速搭建項目

通過 create-react-app 腳手架快速搭建一個 React 項目

create-react-app react-project
cd react-project

在 github 上創(chuàng)建一個空倉庫桑阶,創(chuàng)建之后便可以將代碼 push 到這個新倉庫中悟泵,運行這兩句話即可。我的項目地址

push 到新倉庫

git 相關操作

  1. 創(chuàng)建開發(fā)分支并切換到開發(fā)分支
git checkout -b dev
  1. 將開發(fā)分支提交到 github 上
git push --set-upstream origin dev

目前為止我們便有了兩個分支

  • master -> 用于發(fā)布正式版本
  • dev -> 用于開發(fā)

之后我們便使用 dev 分支進行開發(fā)

安裝依賴

yarn add -D react-redux
yarn add -D react-router-dom
yarn add -D redux
yarn add -D react-sticky
yarn add -D rc-form
yarn add -D node-sass
yarn add -D antd-mobile
yarn add -D react-app-rewired
yarn add -D babel-plugin-import

或者

yarn add -D react-redux react-router-dom redux react-sticky rc-form node-sass antd-mobile react-app-rewired babel-plugin-import

引入 ant-design-mobile UI 框架

  1. 更改入口文件 index.html鱼冀。在 public 目錄下 index.html 文件的 <head> 標簽中加入
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" />
    <script src="https://as.alipayobjects.com/g/component/fastclick/1.0.6/fastclick.js"></script>
    <script>
      if ('addEventListener' in document) {
        document.addEventListener('DOMContentLoaded', function() {
          FastClick.attach(document.body);
        }, false);
      }
      if(!window.Promise) {
        document.writeln('<script src="https://as.alipayobjects.com/g/component/es6-promise/3.2.2/es6-promise.min.js"'+'>'+'<'+'/'+'script>');
      }
    </script>
  1. 更改 package.json 文件里的啟動配置。
/* package.json */
"scripts": {
-   "start": "react-scripts start",
+   "start": "react-app-rewired start",
-   "build": "react-scripts build",
+   "build": "react-app-rewired build",
-   "test": "react-scripts test --env=jsdom",
+   "test": "react-app-rewired test --env=jsdom",
}
  1. 在根目錄下創(chuàng)建 config-overrides.js 文件悠就,用于修改默認配置
const { injectBabelPlugin } = require('react-app-rewired');
module.exports = function override(config, env) {
    config = injectBabelPlugin(['import', {
        libraryName: 'antd-mobile',
        style: 'css'
    }], config);
    return config;
};
  1. 按需引用并使用千绪。將 src 目錄下的 App.js 文件更改為:
import React, { Component } from 'react';
import { Button } from 'antd-mobile';  // 引入 Button
import logo from './logo.svg';
import './App.css';

class App extends Component {
    render() {
        return (
            <div className="App">
                {/* 使用 Button */}
                <Button>default</Button>
                <Button type="primary">primary</Button>
            </div>
        );
    }
}

export default App;
  1. 運行項目
yarn start
  • 第一個報錯


    error

    解決方案:

yarn add -D react-app-rewired@1.6.2
  • 第二個報錯


    error

    解決方案:

yarn remove react-scripts
yarn add -D react-scripts@2.1.1

之后便可以運行成功。將瀏覽器改為手機模式梗脾,即可看到兩個 button

引入 ant-design-mobile 效果圖

配置 SCSS

官網(wǎng)中已經(jīng)說明如何配置 scss荸型,只需要安裝 node-sass npm 包即可,之前我們安裝依賴的時候已經(jīng)安裝過了炸茧,所以可以直接使用 scss

  1. App.css 改為 App.scss
  2. App.js 中將 import './App.css'; 改為 import './App.scss'; 即可
  3. 更改 App.scss 內(nèi)容瑞妇,UI 將自動進行更新

之后我們將使用 scss 編寫 css

發(fā)布

這里主要說兩點有關發(fā)布的問題:

  1. github 發(fā)布
  2. 上傳到測試或者線上

github 發(fā)布

github 發(fā)布主要是讓他人可以通過 github 直接看到我們的項目

  1. 修改 .gitignore 文件,將其中的 /build 刪除

  2. 運行:

    yarn build
    

    build 之后仔細看一下 log梭冠,我們可以看到

    yarn build log

    我們重點關注一下 homepage踪宠。我們需要在 package.json 中添加 homepage 字段,即:

    "homepage" : "http://myname.github.io/myapp/build"
    
    • myname -> github 的 這部分
      myname
    • myapp -> 倉庫名
  3. 再次打包并提交到 github 上

  4. 合并到 master 分支

    git checkout master
    git merge dev
    
  5. master 分支打包

    yarn build
    
  6. 提交到 github 上

  7. 在 github 項目的 settings 中的 GitHub Pages

    GitHub Pages

    之后點擊保存妈嘹,頁面刷新后將 GitHub PagesUrl copy 下來
    GitHub Pages Url

  8. 在項目中的描述中添加預覽鏈接柳琢,在剛剛 copy 的 Url 后面添加 build/index.html 即可

上傳到測試或線上

上傳到測試或線上將打包的代碼上傳到服務器上,我主要使用腳本進行上傳润脸。

  1. 創(chuàng)建 update.sh 腳本
  2. 內(nèi)容為
    # 說明:
    # 將此文件放置于默認bash目錄柬脸,直接運行
    # 發(fā)測試環(huán)境 source update.sh dev
    # 發(fā)正式環(huán)境 source update.sh pro
    
    if [ $1x = "pro"x ]; then
      rsync -avz ./build/* MyName@Ip:Path
      echo "production code publish success"
    elif [ $1x = "dev"x ]; then
      rsync -avz ./build/* MyName@Ip:Path
      echo "develop code publish success"
    else
       echo "hello world"
    fi
    
  3. 上傳到服務器
    • 發(fā)測試環(huán)境
      source update.sh dev
      
    • 發(fā)線上環(huán)境
      source update.sh pro
      
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市毙驯,隨后出現(xiàn)的幾起案子倒堕,更是在濱河造成了極大的恐慌,老刑警劉巖爆价,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件垦巴,死亡現(xiàn)場離奇詭異,居然都是意外死亡铭段,警方通過查閱死者的電腦和手機骤宣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來序愚,“玉大人憔披,你說我怎么就攤上這事。” “怎么了芬膝?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵望门,是天一觀的道長。 經(jīng)常有香客問我锰霜,道長筹误,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任癣缅,我火速辦了婚禮厨剪,結果婚禮上,老公的妹妹穿的比我還像新娘所灸。我一直安慰自己丽惶,他們只是感情好,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布爬立。 她就那樣靜靜地躺著钾唬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪侠驯。 梳的紋絲不亂的頭發(fā)上抡秆,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機與錄音吟策,去河邊找鬼儒士。 笑死,一個胖子當著我的面吹牛檩坚,可吹牛的內(nèi)容都是我干的着撩。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼匾委,長吁一口氣:“原來是場噩夢啊……” “哼拖叙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起赂乐,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤薯鳍,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后挨措,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挖滤,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年浅役,在試婚紗的時候發(fā)現(xiàn)自己被綠了斩松。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡担租,死狀恐怖砸民,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情奋救,我是刑警寧澤岭参,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站尝艘,受9級特大地震影響演侯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜背亥,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一秒际、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧狡汉,春花似錦娄徊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至尖啡,卻和暖如春橄仆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背衅斩。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工盆顾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人畏梆。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓您宪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親奠涌。 傳聞我的和親對象是個殘疾皇子宪巨,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容