Rust 写脚手架,Clap你应该知道的二三事

有感而发最近,在和前端小伙伴聊天发现,在2024年,她们都有打算入局Rust学习的行列 。毕竟前端现在太卷了,框架算是走到「穷途末路」了 , 无非就是在原有基础上修修补补 。所有他们想在新的赛道弯道超车 。但是,苦于各种原因,迟迟找不到入门之法 。
确实如她们所言,Rust由于学习路径比较陡峭,加之和前端语言可以说是交集很少 。然后,给大家一种学了马上就会忘记的感觉 。并且 , 由于现在Rust在前端领域的应用少之又少 。除了字节跳动的Rspack,还有Vivo的Vivo Blue OS(我们在国货之光?用Rust编写的Vivo Blue OS有过介绍),就很少听说其他国内互联网公司有相关的产品和应用 。
相比国外,我们的道路还任重而道远 。像国外很多耳熟能详的公司都早已布局Rust开发 。最明显的就是Photoshop,它已经将只能在桌面运行的PS搬入了浏览器上 。(这个我们也在之前的师夷长技以制夷:跟着PS学前端技术中有过相关介绍)
不过 , 从最新的招聘网站中搜索Rust相关岗位,相比前几年有了很好的改观 。并且很多岗位都和前端相关 。这说明,Rust在国内已经有了自己的市场,也意味着在前端领域也有了一席之地 。那么作为职业前端 , 不想在红海中继续卷,那势必就需要选择蓝海,方可在千军万马之中,杀出一条光明之路 。
其实 , 像我在学习Rust也遇到很她们一样的困境 。知识点看了,也理解了 。但是隔断时间就会忘记 。周而复始 , 就会对这门语言产生一种抗拒感 。毕竟,编程也算是一种技术工种,唯手熟尔 。
后面,我就转变思路,那就是动手做一些自己认为可以解决前端痛点的事 。哪怕做这个事情 , 其他语言也可以胜任 , 但是为什么我们不做更进一步的尝试呢 。现阶段,Rust在前端赋能的场景,大部分都是提高编译效率方向 。像Rspack[1]/OXC[2] 。
既然,大方向已经定了,然后就有了我们新的尝试 。从那开始 , 就有了我们下面的尝试方向

  1. Rust 开发命令行工具(上)
  2. Rust 开发命令行工具(中)
  3. Rust 编译为 WebAssembly 在前端项目中使用
  4. Game = Rust + WebAssembly + 浏览器
  5. Rust 赋能前端-开发一款属于你的前端脚手架
就是基于上面的不断试错和尝试,到现在我们已经有了像f_cli[3]的npm包,并且已经部署到公司私库,并投入生产开发了 。
同时,在最近的项目开发中 , 还利用Rust编写WebAssembly进行前端功能的处理 。这块等有机会写一篇相关的文章 。
前言耽误了大家几分钟的时间,在上面絮叨了半天,其实就是想传达一个思想 。Rust其实不可怕,可怕的是学了但是你没用到工作中 。就是想着法都要让它贴切工作 , 应用于工作 。
我们回到正题,其实Rust赋能前端这个方向我也在摸索 , 然后现阶段自我感觉能用到前端项目中的无非就两点
  1. 写一个脚手架,将一些繁琐操作工具化
  2. 写wasm模块,嵌入到前端逻辑中
大家不管是从哪个方面获取Rust知识点 , 想必大家尝试的第一个Rust应用就是Cli了 。
那我们今天就来聊聊在Rust开发Cli时的神器 -clap[4] 。
今天,我们只要是讲相关的概念 , 针对如何用Rust构建一个CLI , 可以翻看我们之前的文章 。
好了,天不早了,干点正事哇 。
我们能所学到的知识点
  1. 项目初始化
  2. 编写子命令
  3. 添加命令标志
  4. 交互式cli
  5. 其他有用的库
1. 项目初始化首先,让我们通过运行以下命令来初始化我们的项目:cargo init clap_demo 。随后我们再配置一下项目的基础信息 。(description等)
【Rust 写脚手架,Clap你应该知道的二三事】[package]name = "clap_demo"version = "0.1.0"edition = "2021"description = "front789带你学习clap"我们可以通过运行以下命令将 clap 添加到我们的程序中:
cargo add clap -F derive这样在Cargo.toml中的[dependencies]中就有了相关的信息 。
[dependencies]clap = { version = "4.5.1", features = ["derive"] }


推荐阅读