本教程笔记来自 杨旭老师的 rust web 全栈教程,链接如下:
https://www.bilibili.com/video/BV1RP4y1G7KF?p=1&vd_source=8595fbbf160cc11a0cc07cadacf22951
学习 Rust Web 需要学习 rust 的前置知识可以学习杨旭老师的另一门教程
项目的源代码可以查看 git:(注意作者使用的是 mysql 数据库而不是原教程的数据库)
https://github.com/aiai0603/rust_web_mysql
这是本教程的最后一节,我们将把我们之前编写的项目进行打包发布:
统一工作空间
之前我们在 stage_7 , stage_8 , stage_9 三个部分分别完成了一个 rust 后端服务器,一个rust tera 的教师管理系统和一个 wasm 的课程管理系统,现在我们想把他们打包发布,我们首先在这三个项目的同一级目录添加一个 Cargo.toml 文件,将我们的项目统一在一个工作空间中:
[workspace]
members = ['stage_7','stage_8','stage_9']
在放置在一个工作空间之后,我们打包时他们就会生成在一个 target 目录下:
打包传统 rust 项目
现在我们先将我们 stage_7 stage_8 两个传统的 rust 项目打包,我们执行以下命令:
cargo build --bin teacher-service --release
cargo build --bin svr --release
他们分别将我们的 stage_7 stage_8 两个项目打包,生成在 target 文件夹中,我们打开文件夹的 release 目录,其中由两个 exe 文件:teacher-service.exe 和 svr.exe ,我们将他们复制到单独的目录里,现在我们可以使用这两个 exe 文件来启动我们的项目了。例如:
svr.exe
但是目前启动我们的项目还会报错,因为我们的项目在开发的时候设置了环境变量,但是在当前环境下没有环境变量,我们可以自己配置环境变量到我们的电脑中,或者也可以在当前目前再编写一个 .env 文件来配置我们的环境变量:
DATABASE_URL=mysql://root:sss991126@localhost:3306/yx
HOST_PORT = 127.0.0.1:4396
打包 wasm 项目
之后我们来打包我们的 wasm 项目,我们进入 stage_9 文件夹,输入以下指令:
wasm-pack build --release
这样可以生成一份适合工业环境运行的打包文件,之后我们进入 www 文件夹,安装刚刚打包出来的内容
npm install
之后我们使用 webpack 进行打包:
npm run build
打包完成后生成了一个 dist 文件夹,里面的内容就是我们的生成的 web 资源文件,只要把这些文件放进 web 服务器中就可以运行了,如果你没有 web 服务器,你可以使用一个插件来模拟一个 web 服务器的环境:
npm i http-server
安装完毕之后我们使用如下的命令来启动它:
http-server
可以看到我们的项目在默认的 8080 端口启动了,要注意的是,因为我们的跨域配置了 localhost:8080 ,所以我们必须使用 localhost:8080 来访问我们刚刚启动的服务,而不能使用本地保留地址或者 127.0.0.1
结尾
教程就到此为止了,如果之后你有兴趣可以尝试使用 nigix 或者 tomcat 将你的 web 应用部署到服务器上,然后将你的 exe 文件也部署到服务器中,形成一个完成的在线应用。作者在自己的 git 上提供了打包完成的文件,可以访问这个 git 的 pack 文件夹:
https://github.com/aiai0603/rust_web_mysql
本教程只是一个简单的入门教程,如果你想要学习更多的内容可以自己查阅相关的资料或者继续关注 杨旭老师的 b站教程。根据杨旭老师的说法,为了让大家入门所以选择使用 wasm 编写一个简单的增删改查的应用,但是目前使用 wasm 的方式编写业务应用是多此一举,不仅效率没有得到提升,还有很多的 js 函数还没有得到支持,属于"脱裤子放屁",但是 wasm 可以运用在更多复杂的场景中,比如编写 web 游戏等等,期待各位读者的研究和 wasm 官方的更新。
欢迎关注作者的其他坑,长期更新各类前端知识,项目开发教程和算法刷题内容,支持作者的可以点一个关注!