当前位置: 首页 > news >正文

vite+react+ts+Rust来进行前后端web开发(hello world)

准备工作

前端(react+ts)
yarn create vite

选择reactTypescript

cd 项目名称
yarn#初始化依赖
yarn add axios #安装ajax封装库

Rust

#初始化Rust项目
cargo new 项目名
#bat文件(windows shell,在创建的项目里面)
@echo off
echo actix-web = "4.0" >> Cargo.toml

主体

Rust部分

打开src/main.rs

use actix_web::{get,web,App,HttpServer,Responder,HttpResponse};#[get("/")]
async fn index() -> impl Responder {//手动设置跨域相应头HttpResponse::Ok().append_header(("Access-Control-Allow-Origin", "*")).append_header(("Access-Control-Allow-Methods", "GET, POST, OPTIONS")).append_header(("Access-Control-Allow-Headers", "Content-Type, Authorization")).body("Hello, Ruest!")
}#[actix_web::main]
async fn main() ->std::io::Result<()> {HttpServer::new(|| {App::new().service(index)}).bind("127.0.0.1:8081")?.run().await
}
React+Ts部分
import { useState } from 'react'
import reactLogo from './assets/react.svg'
import viteLogo from '/vite.svg'
import './App.css'import axios from 'axios' //初始化项目增加部分//初始化项目增加部分
function linkRustWebGet(url:string){axios.get(url).then(async res=>{console.log(res)}).catch(err=>console.log(err))
}function App() {const [count, setCount] = useState(0)const [result,setResult] = useState("")//初始化项目增加部分//初始化项目增加部分onload = () => {linkRustWebGet("http://127.0.0.1:8081/") //'http://127.0.0.1:8081/'在Rust部分有定义}return (<><div><a href="https://vitejs.dev" target="_blank"><img src={viteLogo} className="logo" alt="Vite logo" /></a><a href="https://react.dev" target="_blank"><img src={reactLogo} className="logo react" alt="React logo" /></a></div><h1>Vite + React</h1><div className="card"><button onClick={() => setCount((count) => count + 1)}>count is {count}</button><p>Edit <code>src/App.tsx</code> and save to test HMR</p></div><p className="read-the-docs">Click on the Vite and React logos to learn more</p></>)
}export default App

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 后端返回一个图片链接,前端如何实现下载功能?
  • 零基础入门:创建一个简单的Python爬虫管理系统
  • 杰发科技AC7840——SENT数据解析及软件Sent发送的实现
  • 【Node.js基础04】包的理解与使用
  • 如何使用 API list 极狐GitLab 容器镜像仓库中的 tag?
  • SVN文件夹没有图标(绿钩子和红感叹号)
  • 【C# WInForm】将TextBox从输入框设置为文本框
  • Nginx笔记(一)
  • 在Mac M1上面使用Dockerfile打x86_64镜像
  • nng协议nni_taskq_sys_init(void) 对nni_taskq_systq 初始化
  • Python从0到100(四十三):数据库与Django ORM 精讲
  • LeetCode 129, 133, 136
  • 鸿蒙界面开发
  • Redis 主从搭建
  • 过滤出List集合的元素是Person对象,过滤出每个元素非null的name字段得到String类型的集合
  • 5、React组件事件详解
  • JS变量作用域
  • js操作时间(持续更新)
  • JS数组方法汇总
  • linux安装openssl、swoole等扩展的具体步骤
  • Node 版本管理
  • Nodejs和JavaWeb协助开发
  • PHP变量
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 多线程事务回滚
  • 给Prometheus造假数据的方法
  • 开源地图数据可视化库——mapnik
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • Spring第一个helloWorld
  • 从如何停掉 Promise 链说起
  • ​一些不规范的GTID使用场景
  • ​字​节​一​面​
  • # 移动硬盘误操作制作为启动盘数据恢复问题
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #HarmonyOS:基础语法
  • #考研#计算机文化知识1(局域网及网络互联)
  • (160)时序收敛--->(10)时序收敛十
  • (175)FPGA门控时钟技术
  • (2)STL算法之元素计数
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (分布式缓存)Redis哨兵
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (十一)c52学习之旅-动态数码管
  • (四)linux文件内容查看
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .env.development、.env.production、.env.staging
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .net dataexcel winform控件 更新 日志
  • .NET导入Excel数据
  • .NET与 java通用的3DES加密解密方法