学了两天react的我,用vite+react+ts搭建起了项目

我们要学习或者使用react项目,那么搭建react是必修课,我根据网上查的资料整理以及针对一些场景进行了整理从而来搭建的这个项目,我相信绝对是最小白;也是最基础实用的搭建方法,我也看了很多人的搭建react项目,我个人感觉哈一个字乱;所以才写了这篇文章,希望能对刚学习react的同学们有用。

安装

输入一下命令以后按照步骤选择即可:

  • 选择react

  • 选择ts;如果你想要用js开发选择js即可

npm create vite

运行

安装依赖运行即可;查看是否可以运行成功

 npm install
 npm run dev

创建文件

在src下面创建以下几个文件

/pages/index.tsx
/router/index.tsx
/store/index.ts
/store/festures
/store/festures/user.ts

配置路由

安装:

npm install react-redux react-router-dom

路由配置:

import React, { lazy } from "react";
import { RouteObject } from 'react-router-dom'
const Index = lazy(() => import('../pages/index'))

const Router: RouteObject[] = [
  {
    path: '/',
    element: <Index />
  }
]

export default Router;

app.tsx:

import React, { Suspense } from "react";
import { useRoutes, Link } from 'react-router-dom';
import routes from '../src/router';
function App() {
  return <div className="App">
    <Suspense fallback="Loading...">
      <div className="main">
        {useRoutes(routes)}
      </div>
    </Suspense>
  </div>;
};

export default App;

main.tsx:

import ReactDOM from 'react-dom/client';
import { BrowserRouter } from 'react-router-dom';
import App from "./App";
const root = ReactDOM.createRoot(
  document.getElementById("root") as HTMLElement
);
root.render(
  <BrowserRouter>
    <App></App>
  </BrowserRouter>
);

index.tsx:

function index(params:type) {
  return ('55')
}

export default index


在配置到这儿的时候,基本上我们在网页上打开就可以看到页面上展示的是55了。

创建pages/home.tsx文件

function home(params:type) {
  return ('home')
}

export default home;

路由中增加一个页面

{
    path: '/home',
    element: <Home />,
  },

在路由中切换home,就可以得到展示的home文本。这样我么的路由就算是配置完成了

状态管理

安装:

npm install @reduxjs/toolkit

store/index.ts:

import { configureStore } from '@reduxjs/toolkit';
import counterSlice from './festures/homeReducer';

const store = configureStore({
    reducer: {
        user: counterSlice
    },
});
export type RootState = ReturnType<typeof store.getState>;
export type AppDispatch = typeof store.dispatch;
export default store;

store/festures/user.ts:

import { createSlice, PayloadAction } from '@reduxjs/toolkit';
import type { RootState } from '../index';

interface CounterState { 
  value: number
}
const initialState: CounterState = { 
  value: 33,
}
export const counterSlice = createSlice({
  name: 'user',
  initialState,
  reducers: {
    increment: (state) => {
      state.value += 1
    },
    decrement: (state) => {
      state.value -= 1
    },
    incrementByAmount: (state, action: PayloadAction<number>) => {
      state.value += action.payload
    },
  },
})

export const { increment, decrement, incrementByAmount } = counterSlice.actions;
export const selectCount = (state: RootState) => state;
export default counterSlice.reducer;

修改app.tsx

import React, { Suspense } from "react";
import { useRoutes, Link } from 'react-router-dom';
import routes from '../src/router';

function App() {
  return <div className="App">
    <Suspense fallback="Loading...">
      <div className="main">
        {useRoutes(routes)}
      </div>
    </Suspense>
  </div>;
};

export default App;

修改main.tsx

import React from 'react';
import ReactDOM from 'react-dom/client';
import store from './store/index';
import {BrowserRouter} from 'react-router-dom';
import { Provider } from 'react-redux';
import App from "@/App";
const root = ReactDOM.createRoot(
  document.getElementById("root") as HTMLElement
);
root.render(
  <Provider store={store}>
    <BrowserRouter>
      <App></App>
    </BrowserRouter>
  </Provider>
);

获取/修改状态管理:

import { useSelector, useDispatch } from 'react-redux';


const counts = useSelector((state:any) => state.user);
console.log(counts);


const dispatch = useDispatch(); 
dispatch(increment())

到这儿的时候我们的状态管理就完成了,我们可以通过控制台查看到user文件的数据。

vite.config.ts配置

alias配置:

我们在文件中可以看到,我们引入的时候都是相对路径或者绝对路径;这样的话如果层级多的话可能会出现问题,所以我们需要配置@引入方式

安装@types/node:

npm install @types/node -D

配置:

也可以配置多个别名

resolve: {
      alias: {
        '@': path.resolve(__dirname, './src')
      }
},


"paths": {
      "@/*":["./src/*"]
}

配置好这两个文件以后,我们在使用@去引入文件的时候就不会报错了,赶紧起来试试吧!

大文件压缩

安装:

npm install vite-plugin-compression -D

vite.config.ts:

import viteCompression from 'vite-plugin-compression';

viteCompression({
     threshold: 1024, 
})

环境配置

.env

# 公共环境-主要用于一些标题以及常用文本等
VITE_APP_TITLE = 公共环境

.env.development

# 开发环境
VITE_APP_NAME = 开发环境

.env.production

# 生产环境
VITE_APP = production
VITE_APP_NAME = 生产环境

.env.test

# 测试环境
VITE_APP = test
VITE_APP_NAME = 测试环境

注意:

我们原来获取环境变量都是通过process.env方法去获取的,但是在vite中取消了该方法。

方法一:

可以获取

import.meta.env

方法二:

vite中提供的loadEnv进行使用。

import { defineConfig, loadEnv } from 'vite';
import react from '@vitejs/plugin-react';
import path from 'path'; 
import viteCompression from 'vite-plugin-compression';


export default ({ mode }) => {
  let outDir:string = 'dist';
  const APPNAME:string = loadEnv(mode, process.cwd()).VITE_APP;
  const pro = loadEnv(mode, process.cwd());
  if (APPNAME === 'test') { 
    outDir = 'test';
  }else if (APPNAME === 'production') { 
    outDir = 'pro';
  }else {
    outDir = 'dist';
  };

  return defineConfig({
    plugins: [
      react(),
      viteCompression({
        threshold: 1024, 
      })
    ],
    build: {
      outDir: outDir,
    },
    resolve: {
      alias: {
        '@': path.resolve(__dirname, './src')
      }
    },
    define: {
      'process.env': pro
    },
  })
}

.gitignore

因为会打包很多个文件,所以这几个文件避免上传。

test
pro

跨域配置

server: {
      port: 3000, 
      host: '0.0.0.0',
      
      proxy: {
        '/api': {
          target: 'http:xxxxxx', 
          changeOrigin: true,  
          
          
          
        }
      }
    }

scss

安装:

npm install sass

当你读到这儿的时候,基本上创建项目就基础搭建完毕了。

如果你还想搭建的更完善的话,可以对请求进行封装以及一些常用方法进行封装等等。

这期的内容到这儿就完了,我们下次有机会再见!

如果转载,请说明出处;创作不易,凌晨一点还在写作。
作者-雾恋

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
我们来一步一步了解如何搭建reactvitets项目,包括mock、路由和存储: 1. 安装Node.js和git。 2. 使用以下命令创建一个新文件夹,打开终端,进入此新文件夹 ```bash mkdir my-app cd my-app ``` 3. 运行以下命令来初始化你的项目,将你的应用程序创建为一个新的React工程 ```bash npx create-react-app . --template typescript ``` 4. 在项目根目录下,创建一个mock文件夹。在这个文件夹中,您可以使用mock数据来帮助测试和开发。 5. 添加react-router-dom,可以通过以下命令安装: ```bash npm install --save react-router-dom ``` 6. 为了使用react-router,在src文件夹中创建一个新的路由器组件(router.tsx)。 7. 在router.tsx中导入BrowserRouter,用于处理浏览器路由和Link,用于创建内部链接。 ```jsx import { BrowserRouter, Route, Switch, Link } from 'react-router-dom'; ``` 8. 在router.tsx中创建您的路由。您可以像下面这样使用Switch组件包装配置路由。您可以在Route组件中使用 exact 或 path 来匹配URL,并为每个路径添加一个组件。 ```jsx <BrowserRouter> <Switch> <Route exact path="/" component={Home} /> <Route path="/about" component={About} /> <Route path="/contact" component={Contact} /> </Switch> </BrowserRouter> ``` 9. 添加react-redux,可以通过以下命令安装: ```bash npm install --save react-redux ``` 10. 创建一个store.ts文件,用于创建、导出store ```jsx import { configureStore } from '@reduxjs/toolkit' import rootReducer from './rootReducer' const store = configureStore({ reducer: rootReducer, }) export type RootState = ReturnType<typeof store.getState> export default store ``` 11. 在App.tsx中添加Provider组件,用于为应用程序中所有的组件提供store。 ```jsx import { Provider } from 'react-redux'; import store from './store'; function App() { return ( <Provider store={store}> <div className="App"> ... //你的应用程序组件 </div> </Provider> ); } export default App; ``` 以上就是一个搭建ReactViteTS项目的基本步骤,包括mock、路由、存储等。希望这能帮助到你!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Web面试那些事儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值