国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

React框架創(chuàng)建項(xiàng)目詳細(xì)流程-項(xiàng)目的基本配置-項(xiàng)目的代碼規(guī)范

這篇具有很好參考價(jià)值的文章主要介紹了React框架創(chuàng)建項(xiàng)目詳細(xì)流程-項(xiàng)目的基本配置-項(xiàng)目的代碼規(guī)范。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

React創(chuàng)建項(xiàng)目流程與規(guī)范

項(xiàng)目規(guī)范

項(xiàng)目規(guī)范: 在項(xiàng)目中都會(huì)有一些開(kāi)發(fā)規(guī)范和代碼風(fēng)格, 下面介紹一下我采用的規(guī)范與風(fēng)格

  1. 文件夾、文件名稱(chēng)統(tǒng)一小寫(xiě)、多個(gè)單詞以連接符(-)連接, 組件采用大駝峰;

  2. JavaScript變量名稱(chēng)采用小駝峰標(biāo)識(shí),常量全部使用大寫(xiě)字母;

  3. CSS采用普通CSS和styled-component結(jié)合來(lái)編寫(xiě)(全局采用普通CSS或Less、局部采用styled-component);

  4. 整個(gè)項(xiàng)目不再使用class組件,統(tǒng)一使用函數(shù)式組件,并且全面擁抱Hooks;

  5. 所有的函數(shù)式組件,為了避免不必要的渲染,全部使用memo進(jìn)行包裹;

  6. 組件內(nèi)部的狀態(tài),使用useState、業(yè)務(wù)數(shù)據(jù)全部放在redux中管理;

  7. 函數(shù)組件內(nèi)部邏輯代碼基本按照如下順序編寫(xiě)代碼:

    組件內(nèi)部state管理;

    redux的hooks代碼;

    其他hooks相關(guān)代碼(比如自定義hooks);

    其他邏輯代碼;

    返回JSX代碼;

  8. redux代碼規(guī)范如下:

    redux目前我們學(xué)習(xí)了兩種模式, 根據(jù)自己的情況選擇普通模式還是rtk模式

    每個(gè)模塊有自己獨(dú)立的reducer或者slice,之后合并在一起;

    redux中會(huì)存在共享的狀態(tài)、從服務(wù)器獲取到的數(shù)據(jù)狀態(tài);

  9. 網(wǎng)絡(luò)請(qǐng)求采用axios

    對(duì)axios進(jìn)行二次封裝;

    所有的模塊請(qǐng)求會(huì)放到一個(gè)請(qǐng)求文件中單獨(dú)管理;

  10. 項(xiàng)目使用AntDesign或者M(jìn)UI(Material UI)

其他規(guī)范在項(xiàng)目中根據(jù)實(shí)際情況決定和編寫(xiě)

項(xiàng)目配置

創(chuàng)建項(xiàng)目的方式:create-react-app

項(xiàng)目配置:

配置項(xiàng)目的icon, 將圖標(biāo)換為自己項(xiàng)目的圖標(biāo)

react創(chuàng)建項(xiàng)目,React,react.js,代碼規(guī)范,前端

配置項(xiàng)目的標(biāo)題: 在public文件夾下的index.html中配置項(xiàng)目的標(biāo)題

<title>網(wǎng)易云音樂(lè)</title>

配置jsconfig.json:這個(gè)文件在Vue通過(guò)腳手架創(chuàng)建項(xiàng)目時(shí)自動(dòng)生成, React是沒(méi)有自動(dòng)生成, jsconfig.json是為了讓vs code的代碼提示更友好, 按需求決定是否配置;

{
  "compilerOptions": {
    "target": "es5",
    "module": "esnext",
    "baseUrl": "./",
    "moduleResolution": "node",
    "paths": {
      "@/*": [
        "src/*"
      ]
    },
    "jsx": "preserve",
    "lib": [
      "esnext",
      "dom",
      "dom.iterable",
      "scripthost"
    ]
  }
}

通過(guò)craco配置別名和less文件(不需要集成less只需要配置別名):

在項(xiàng)目中層級(jí)嵌套會(huì)很深, 我們導(dǎo)入文件通常會(huì)有../../../甚至更多的上一級(jí)目錄; 因此我們配置別名解決這個(gè)問(wèn)題, 我的配置是使用@符號(hào)表示根目錄

首先安裝craco: npm i @carco/craco -D

如果使用的最新的React版本, 則需要npm i @craco/craco@alpha -D來(lái)安裝

安裝完成, 在項(xiàng)目根目錄下創(chuàng)建craco.config.js文件

const path = require('path')

const reslove = pathname => path.resolve(__dirname, pathname)

module.exports = {
  webpack: {
    alias: {
      "@": reslove("src")
    }
  }
}

然后修改根目錄下package.json文件中的腳本, 修改為craco啟動(dòng), 修改如下:

"scripts": {
  "start": "craco start",
  "build": "craco build",
  "test": "craco test",
  "eject": "react-scripts eject"
},

別名配置完成, 接下來(lái)我們配置一下less, 不需要集成less跳過(guò)即可

首先進(jìn)行安裝: npm i craco-less

最新版本React同樣會(huì)有適配問(wèn)題, 安裝方式: npm i craco-less@2.1.0-alpha.0

安裝完成按照如下方式配置less, 配置完成創(chuàng)建一個(gè)less文件測(cè)試一下, 樣式生效就配置成功了

const path = require('path')
const CracoLessPlugin = require('craco-less')

const reslove = pathname => path.resolve(__dirname, pathname)

module.exports = {
  // less
  plugins: [
    {
      plugin: CracoLessPlugin
    }
  ],
  webpack: {
    alias: {
      "@": reslove("src")
    }
  }
}

目錄結(jié)構(gòu)

接下來(lái)對(duì)項(xiàng)目src文件夾下進(jìn)行目錄結(jié)構(gòu)的劃分, 我是按照如下方式進(jìn)行劃分的:

assets: 存放靜態(tài)資源 (如css, img等等)

base-ui: 存放一些通用的組件, 不只是本項(xiàng)目, 其他項(xiàng)目也會(huì)使用的組件

components: 存放本項(xiàng)目中通用的組件

hooks: 自定義的hook函數(shù)

router: 路由相關(guān)

services: 網(wǎng)絡(luò)請(qǐng)求相關(guān)

stores: 狀態(tài)管理, redux相關(guān)

utils: 封裝的工具函數(shù)

views: 頁(yè)面相關(guān)

react創(chuàng)建項(xiàng)目,React,react.js,代碼規(guī)范,前端

樣式重置

對(duì)默認(rèn)CSS樣式進(jìn)行重置:

下載normalize.css, 再在src中的index文件引入normalize.css

可以通過(guò)npm安裝npm i normalize.css

import React from 'react'
import ReactDOM from 'react-dom/client'

// 引入樣式重置文件
import "normalize.css"
import App from './App'

const root = ReactDOM.createRoot(document.querySelector("#root"))
root.render(<App/>)

創(chuàng)建一個(gè)reset.css文件, 用來(lái)自己編寫(xiě)一些樣式的重置

* {
  margin: 0;
  padding: 0;
}

a {
  text-decoration: none;
  color: #000;
  outline: none;
}

ul, li {
  list-style: none;
}

input {
  outline: none;
  border: none;
}

i {
  font-style: normal;
}

并且引入

import React from 'react'
import ReactDOM from 'react-dom/client'

// 引入樣式重置文件
import "normalize.css"
import "./assets/css/reset.css"

import App from './App'

const root = ReactDOM.createRoot(document.querySelector("#root"))
root.render(<App/>)

Router配置

安裝: npm i react-router-dom

安裝完成配置映射關(guān)系即可, 示例代碼如下:

import React from "react"
import { Navigate } from "react-router-dom"

// 懶加載
const Home = React.lazy(() => import("@/views/home"))
const Detail = React.lazy(() => import("@/views/detail"))
const Entire = React.lazy(() => import("@/views/entire"))

const routes = [
  {
    path: "/",
    element: <Navigate to="/home"/>
  },
  {
    path: "/home",
    element: <Home/>
  },
  {
    path: "/detail",
    element: <Detail/>
  },
  {
    path: "/entire",
    element: <Entire/>
  }
]

export default routes

配置完成使用, 還需要在src目錄下index.js文件中, 對(duì)App組件進(jìn)行包裹

import React, { Suspense } from "react"
import ReactDOM from "react-dom/client"
import { BrowserRouter } from "react-router-dom"

import App from "./App"

const root = ReactDOM.createRoot(document.querySelector("#root"))
root.render(
  <BrowserRouter>
    <Suspense fallback="lodaing">
      <App/>
    </Suspense>
  </BrowserRouter>
)

Redux狀態(tài)管理

Redux有兩種模式

普通方式: 目前項(xiàng)目中依然使用率非常高;

@reduxjs/toolkit方式: 推薦方式, 未來(lái)的趨勢(shì);(下面簡(jiǎn)單演示一樣rtk模式)

rtk模式安裝: npm i @reduxjs/toolkit react-redux

安裝完成后再store文件夾下的index.js中進(jìn)行配置

import { configureStore } from '@reduxjs/toolkit'

const store = configureStore({
  reducer: {}
})

export default store

同樣需要對(duì)根組件App進(jìn)行包裹

import React, { Suspense } from "react"
import ReactDOM from "react-dom/client"
import { Provider } from "react-redux"

import App from "./App"
import store from "./stores"

const root = ReactDOM.createRoot(document.querySelector("#root"))
root.render(
  <Provider store={store}>
    <App/>
  </Provider>
)

axios配置

項(xiàng)目中我采用axios發(fā)送網(wǎng)絡(luò)請(qǐng)求

首先安裝axios: npm i axios

一般會(huì)對(duì)axios進(jìn)行二次封裝, 代碼如下文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-793219.html

import axios from "axios";
import { BASE_URL, TIMEOUT } from "./config";

class YQRequest {
  // 傳入默認(rèn)配置信息, 創(chuàng)建新的實(shí)例
  constructor(baseURL, timeout=10000) {
    this.instance = axios.create({
      baseURL,
      timeout
    })

    // 響應(yīng)成功的攔截, 返回res.data
    // this.instance.interceptors.response.use(res => {
    //   return res.data
    // }, err => {
    //   return err
    // })
  }

  // 1.封裝request
  request(config) {
    // 返回一個(gè)Promise, 對(duì)數(shù)據(jù)轉(zhuǎn)換
    return new Promise((reslove, reject) => {
      this.instance.request(config).then(res => {
        reslove(res.data)
      }).catch(err => {
        reject(err)
      })
    })
  }

  // 2.封裝get
  get(config) {
    //  調(diào)用自己的request函數(shù)
    return this.request({ ...config, methods: "get" })
  }

  // 3.封裝psot
  post(config) {
    //  調(diào)用自己的request函數(shù)
    return this.request({ ...config, methods: "post" })
  }
}

export default new YQRequest(BASE_URL, TIMEOUT)
export const BASE_URL = "http://codercba.com:1888/airbnb/api"
export const TIMEOUT = 10000

到了這里,關(guān)于React框架創(chuàng)建項(xiàng)目詳細(xì)流程-項(xiàng)目的基本配置-項(xiàng)目的代碼規(guī)范的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀(guān)點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Python - 【FastAPI】框架配置搭建基本使用

    之前在面試的時(shí)候面試官有提到過(guò)這個(gè)框架,但是個(gè)人在之前的項(xiàng)目中沒(méi)有用到過(guò),只是有聽(tīng)過(guò),并沒(méi)有實(shí)際的應(yīng)用,因此,個(gè)人自己研究了一下,這是個(gè)新型的框架,使用起來(lái)相對(duì)挺簡(jiǎn)單。FastAPI是一個(gè)基于Python的現(xiàn)代Web框架,它具有快速構(gòu)建高性能API的特點(diǎn)。 中文文檔:

    2024年02月11日
    瀏覽(38)
  • django 項(xiàng)目基本配置

    django 項(xiàng)目基本配置

    使用命令創(chuàng)建項(xiàng)目 效果 根目錄創(chuàng)建apps用以放置所有包 切換至apps目錄創(chuàng)建子應(yīng)用 muxi_shop_back/settings.py 數(shù)據(jù)庫(kù)配置 創(chuàng)建數(shù)據(jù)庫(kù) 配置靜態(tài)文件路徑 數(shù)據(jù)庫(kù)配置 如果是協(xié)同開(kāi)發(fā)數(shù)據(jù)庫(kù)表是提前準(zhǔn)備好的,可以將表的字段映射到本地 setting配置文件 注: 安裝mysqlclient 可能會(huì)顯示以

    2024年02月07日
    瀏覽(23)
  • 【詳細(xì)】Jmeter的安裝配置與基本操作

    【詳細(xì)】Jmeter的安裝配置與基本操作

    1、Jmeter環(huán)境搭建 安裝JDK:https://www.oracle.com/cn/java/technologies/downloads/ 安裝Jmeter:https://jmeter.apache.org/download_jmeter.cgi 注意:下載JDK,注意電腦操作系統(tǒng)及位數(shù);Jmeter版本要與JDK版本匹配;Jmeter安裝路徑不能有中文或空格 2、Jmeter基本配置 (1)Jmeter界面漢化 永久性:修改bin目錄下

    2024年02月03日
    瀏覽(22)
  • 【框架篇】Spring Boot核心介紹及項(xiàng)目創(chuàng)建(詳細(xì)教程)

    【框架篇】Spring Boot核心介紹及項(xiàng)目創(chuàng)建(詳細(xì)教程)

    Spring Boot 是基于 Spring 開(kāi)發(fā)的一種輕量級(jí)的全新框架,不僅繼承了 Spring 框架原有的優(yōu)秀特性,而且還通過(guò)簡(jiǎn)化配置來(lái)進(jìn)一步簡(jiǎn)化了 Spring 應(yīng)用的整個(gè)搭建和開(kāi)發(fā)過(guò)程。通過(guò) Spring Boot ,可以輕松地創(chuàng)建獨(dú)立的,基于生產(chǎn)級(jí)別的和基于 Spring 的應(yīng)用程序。 Spring 的誕生是為了簡(jiǎn)化

    2024年02月16日
    瀏覽(47)
  • STM32-IAP基本原理及應(yīng)用 | ICP、IAP程序下載流程 | 程序執(zhí)行流程 | 配置IAP到STM32F4xxx

    STM32-IAP基本原理及應(yīng)用 | ICP、IAP程序下載流程 | 程序執(zhí)行流程 | 配置IAP到STM32F4xxx

    ①在線(xiàn)編程(ICP,In-Circuit Programming) :通過(guò)JTAG/SWD協(xié)議或者系統(tǒng)加載程序(Bootloader, 串口 )下載用戶(hù)應(yīng)用程序到微控制器中。 ②在程序中編程(IAP,In Application Programming) :通過(guò)任何一種通信接口(如IO端口,USB,CAN,UART,I2C,SPI等)下載程序或者應(yīng)用數(shù)據(jù)到存儲(chǔ)器中( 需要在此前通過(guò)在線(xiàn)編

    2024年02月07日
    瀏覽(27)
  • Android Studio 安裝配置詳細(xì)步驟,以及使用的基本操作

    Android Studio 安裝配置詳細(xì)步驟,以及使用的基本操作

    一.Android SDK下載和安裝 ????如果本地已有合適版本Android SDK,則無(wú)需再下載,或者可以使用SDK Manager更新SDK; ?????如果沒(méi)有SKD,則需要下載了,其實(shí)在安裝Android Studio過(guò)程中會(huì)選擇下載最新SDK安裝,但是速度極慢,我習(xí)慣先把SDK下載下來(lái),在安裝完Android Studio后再配置(當(dāng)

    2023年04月18日
    瀏覽(32)
  • Git的基本操作(安裝Git,創(chuàng)建本地倉(cāng)庫(kù),配置Git,添加、修改、回退、撤銷(xiāo)修改、刪除文件)

    Git的基本操作(安裝Git,創(chuàng)建本地倉(cāng)庫(kù),配置Git,添加、修改、回退、撤銷(xiāo)修改、刪除文件)

    Git 是開(kāi)放源代碼的代碼托管?具,最早是在Linux下開(kāi)發(fā)的。開(kāi)始也只能應(yīng)?于Linux平臺(tái),后?慢慢的被移植到windows下,現(xiàn)在,Git可以在Linux、Unix、Mac和Windows這??平臺(tái)上正常運(yùn)?了。 如果你的的平臺(tái)是centos,安裝git相當(dāng)簡(jiǎn)單,以我的centos7.6為例: 我們還可以用下面的指令來(lái)

    2024年03月28日
    瀏覽(30)
  • docker基本操作:安裝部署、設(shè)置ssh遠(yuǎn)程登入、配置docker鏡像文件并創(chuàng)建docker容器

    Docker 是一個(gè)流行的應(yīng)用程序容器化和部署平臺(tái),允許開(kāi)發(fā)人員輕松地創(chuàng)建、部署和管理容器中的應(yīng)用程序。 請(qǐng)注意運(yùn)行此命令需要 root 或 sudo 權(quán)限,因此可能需要在命令前加上 sudo 并輸入密碼。 一、更新系統(tǒng)工具(ubuntu) 安裝docker 查看docker版本 啟動(dòng)docker服務(wù) 二、一些基本

    2024年02月04日
    瀏覽(23)
  • anaconda 安裝、配置、開(kāi)機(jī)啟動(dòng)和基本操作 (windows+linux 詳細(xì))

    anaconda 安裝、配置、開(kāi)機(jī)啟動(dòng)和基本操作 (windows+linux 詳細(xì))

    包括notebook的開(kāi)機(jī)啟動(dòng),啟動(dòng)腳本、配置等,2023年12月4日更新教程 anaconda是conda中的一種,也可以選用其它的conda anaconda會(huì)把python、pip等直接安裝上,不用額外裝配了,省心 conda對(duì)于需要多個(gè)python環(huán)境的開(kāi)發(fā)者非常方便 演示版本2023.09 安裝方法對(duì)于其它版本基本一致 官網(wǎng): an

    2024年02月02日
    瀏覽(22)
  • 快速上手: Linux環(huán)境配置, 基本指令與項(xiàng)目部署要點(diǎn)

    快速上手: Linux環(huán)境配置, 基本指令與項(xiàng)目部署要點(diǎn)

    Linux 是由林納斯·托瓦茲(Linus Torvalds)在 1991 年創(chuàng)立并發(fā)展至今成為服務(wù)器操作系統(tǒng)領(lǐng)域的核心系統(tǒng)。 Linux 與 Windows 一樣,是一種操作系統(tǒng)(搞管理的軟件),Linux 嚴(yán)格意義來(lái)說(shuō)只是一個(gè) “操作系統(tǒng)內(nèi)核”;一個(gè)完整的操作系統(tǒng) = 操作系統(tǒng)內(nèi)核 + 配套的應(yīng)用程序。 Linux 可以

    2024年02月10日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包