精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Rust賦能前端:給我0.02秒,生成一套Vite/Rsbuild前端項目

開發 前端
很早就開始關注到Rsbuild[2]的功能。在不久之前,他們將版本信息更新到1.0。在觀望了幾天之后,發現Rsbuild在打包和開發階段有著和其他打包工具截然不同的性能優勢。所以,我們團隊,也在逐步將Vite替換為Rsbuild。

1. 迎新

相比上一個版本,我們主要有幾個新的變化。

新增特性

對Rsbuild的支持

很早就開始關注到Rsbuild[2]的功能。在不久之前,他們將版本信息更新到1.0。在觀望了幾天之后,發現Rsbuild在打包和開發階段有著和其他打包工具截然不同的性能優勢。所以,我們團隊,也在逐步將Vite替換為Rsbuild。

下面就直接截取它官網的內容了。

圖片圖片

圖片圖片

其實呢,Rsbuild在構建項目的時候,也為我們提供了很多Template。和其他工具一樣(CRA/Vue Cli/Vite)。他們只是為我們提供一個最基礎的項目。對于像一些axios/css/狀態管理都需要自己去配置。

既然,我們團隊也是對于一些新項目,要用Rsbuild。所以,這次更新cli也將Rsbuild作為一個打包選項。

體現在Rust代碼中就是下面的邏輯

let _build_tool = match build_tool {
    Some(build_tool) => build_tool,
    None => {
        if default {
            panic!("Fatal: 構建工具未指定");
        }
        logger::multiselect_msg("選擇一個構建工具:");
        logger::message("使用上/下箭頭進行選擇,使用空格或回車鍵確認。");
        let items = vec!["Vite", "Rsbuild"];
        let selection = Select::with_theme(&ColorfulTheme::default())
            .items(&items)
            .default(0)
            .interact_on_opt(&Term::stderr())?;

        match selection {
            Some(0) => BuildTool::Vite,
            Some(1) => BuildTool::Rsbuild,
            _ => panic!("Fatal: 構建工具指定失敗."),
        }
    }
};

然后,我們在使用交互式構建項目時候,就可以選擇vite或者rsbuild作為項目的構建工具了。

圖片圖片

通過,選擇Rsbuild作為構建工具,那么我們就會生成一個功能完備的項目。

然后,我們在之后的template-react目錄基礎上加上rusbuild-config的內容,在配合一些交互式配置就可以生成一個rsbuild+react的項目了。

下面是rusbuild-config的內容。

├── biome.json
├── index.d.ts
├── index.html
├── package.json
├── rsbuild.config.js
└── src
    └── routers
        └── index.tsx

命令自動化

在之前的版本中,像一些

  1. husky的實例化,
  2. 項目初始化后打開編輯器
  3. 安裝項目依賴

這些操作都需要自己手動完成。而此次更新之后,這些操作我們都使用了std::process::Command來自動執行了。

圖片圖片

體現在Rust代碼中,如下所示(我們拿打開Vscode為例子)

use std::process::Command;
use console::style;

use super::logger::{ self, message };

pub fn open_vscode(project_dir: &std::path::PathBuf) {
    logger::command_msg("正在打開 VS Code...");
    // 使用 `code` 命令打開指定的項目目錄
    let status = if cfg!(target_os = "windows") {
        Command::new("cmd").arg("/C").current_dir(project_dir).arg("code").arg(".").status()
    } else {
        Command::new("code").current_dir(project_dir).arg(".").status()
    };

    match status {
        Ok(s) if s.success() => {
            logger::command_success("VS Code 成功打開");
        }
        Ok(_) | Err(_) => {
            logger::error("打開 VS Code 失敗");
            message("確保您已安裝 VS Code,并且 `code` 命令可用");
            message(
                &format!(
                    "{}",
                    style("要將 `code` 命令配置到系統 PATH,請按照以下步驟操作:!").underlined()
                )
            );
            message("  1. 打開 VS Code");
            message("  2. 打開命令面板 (按下 `Ctrl + Shift + P`)");
            message("  3. 輸入并選擇 'Shell Command: Install 'code' command in PATH'");
            message("  4. 重啟終端,并再次運行此命令");
        }
    }
}

其他的操作,如husky的初始化,使用yarn安裝依賴。都是類似的操作。

css解決方案和hook,變成可選

在使用cli過程中,我們發現有些功能不是很必須的,所以我們讓這些功能變成可選。

圖片圖片

我們是用dialoguer[3]來實現這個的二次確認操作。

體現到Rust中就是如下:

let _style = match style {
    Some(style) => style,
    None => {
        if default {
            panic!("Fatal: css解決方案未指定");
        }
        if
            Confirm::with_theme(&ColorfulTheme::default())
                .with_prompt("所構建的項目是否需要CSS解決方案(tailwindcss/styled-components)?")
                .interact()
                .unwrap()
        {
            logger::multiselect_msg("選擇一個css解決方案:");
            logger::message("使用上/下箭頭進行選擇,使用空格或回車鍵確認。");
            let items = vec!["tailwindcss", "styled-components"];
            let selection = Select::with_theme(&ColorfulTheme::default())
                .items(&items)
                .default(0)
                .interact_on_opt(&Term::stderr())?;

            match selection {
                Some(0) => Style::TailwindCSS,
                Some(1) => Style::StyledComponents,
                _ => panic!("Fatal: css解決方案指定失敗."),
            }
        } else {
            Style::None
        }
    }
};

項目天然支持wasm/web worker(comlink)

我們在原始項目中,新增了wasm/worker的文件目錄,用于存放項目中可能會用到的wasm和web worker。

這些功能都是開箱即用的。我們已經在相應的構建工具(vite/rsbuild)為大家配置好了。

大家可以在下載完項目后,在home頁面進行驗證。(記得把控制臺打開)。

下面是vite.worker.config.ts中的相關配置。

import wasm from 'vite-plugin-wasm';
import topLevelAwait from 'vite-plugin-top-level-await';
import { comlink } from 'vite-plugin-comlink';
const worker = () => {
    return ({
        plugins: () => [wasm(), topLevelAwait(),comlink()],
        })
};

export default worker;

我們在配置vite時,按照功能將其分為幾大類:

├── vite.plugin.config.ts
├── vite.build.config.ts
├── vite.config.ts
├── vite.define.config.ts
├── vite.server.config.ts
├── vite.worker.config.ts

引入code-inspector-plugin

我們在項目中引入了code-inspector-plugin[4],它是一款點擊頁面上的 DOM 元素,它能自動打開 IDE 并將光標定位至 DOM 的源代碼位置

圖片圖片

通過tsconfig.json中的配置別名

{
  //...
  "compilerOptions": {
    "baseUrl": ".", // 解析非相對模塊的基準目錄
    "paths": { // 設置路徑映射
      "@/*": ["src/*"],
      "@hooks/*": ["src/hooks/*"],
      "@assets/*": ["src/assets/*"],
      "@utils/*": ["src/utils/*"],
      "@components/*": ["src/components/*"],
      "@pages/*": ["src/pages/*"],
      "@api/*": ["src/api/*"],
      "@network/*": ["src/services/*"]
    }
  },
  //....
}

設置vscode的規范

我們在構建項目的時候,會自動生成.vscode的文件。

其中有幾點比較好玩:

  1. 設置explorer.fileNesting.patterns配置文件分組
{
"explorer.fileNesting.patterns": {
    "tsconfig.json": "tsconfig.*.json, env.d.ts",
    "package.json": "package-lock.json, pnpm*, .yarnrc*, yarn*, .eslint*, eslint*, .prettier*, prettier*, .editorconfig",
    ".env":".env.*",
    "vite.config.ts":"vite.*.config.ts"
  },
}

圖片圖片

  1. 設置search.exclude限定搜索范圍。
{
  "search.exclude": {
    "**/node_modules": true,
    "**/*.log": true,
    "**/*.log*": true,
    //省略部分代碼
  },
}

相關的配置還有files.exclude。

  1. 設置cSpell.words規范拼寫檢查。
{
  "cSpell.words": [
    "vben",
    "windi",
    "browserslist",
    "tailwindcss",
    "esnext",
    "antv",
    //省略部分代碼
  ]
}

2. 辭舊

之前呢,我們在template-react中冗余了很多工具方法或者特性。

例如Sentry/Logging。

而此次的更新,我們將前端項目的結構做了精簡。

我們只保留了一個能夠直接啟動的目錄結構,其他冗余的功能,現在剔除掉了。因為有些需求對于一個項目來講不是必須品。

├── src
│   ├── App.tsx
│   ├── api
│   │   ├── config.ts
│   │   └── test.ts
│   ├── components
│   │   ├── ErrorPage
│   │   │   └── index.tsx
│   │   └── Loading
│   │       └── index.tsx
│   ├── constants
│   │   └── pages.ts
│   ├── contexts
│   │   └── global.ts
│   ├── index.css
│   ├── main.tsx
│   ├── pages
│   │   ├── Home
│   │   │   └── index.tsx
│   │   └── Login
│   │       └── index.tsx
│   ├── routers
│   │   └── index.tsx
│   ├── services
│   │   ├── ApiError.ts
│   │   └── HTTPService.ts
│   ├── style
│   │   └── global.css
│   ├── types
│   │   └── index.ts
│   ├── utils
│   │   ├── deviceDetection
│   │   │   └── index.ts
│   │   ├── envDetection
│   │   │   └── index.ts
│   │   ├── index.ts
│   │   └── storage
│   │       └── localStorage
│   │           ├── helpers.ts
│   │           └── index.ts
│   ├── wasm
│   │   └── fibonacci
│   │       ├── fibonacci_wasm.d.ts
│   │       ├── fibonacci_wasm_bg.wasm
│   │       ├── fibonacci_wasm_bg.wasm.d.ts
│   │       └── index.js
│   └── worker
│       └── fibonacciWorker.ts
├── tsconfig.json
└── yarn.lock

3. 展望

其實呢,這個項目還有很多功能需要完善。

如果大家使用了會發現,我們有些的工具是限定死的。

例如,我們推崇只使用yarn來作為包管理器。使用vscode作為IDE。

這塊也是我們后期需要豐富的地方。

這里我們有一個TODO List

  1. 兼容pnpm/npm/yarn
  2. 兼容常規IDE
  3. 兼容更多構建工具Webpack/Vite/Rsbuild
  4. 兼容Vue的項目構建。
  5. 兼容monorepo項目的構建

針對第四/五點,其實我們已經在做這方面的努力了。

圖片圖片

對應的我們已經構建好對于的枚舉類型- FrameworksType

#[derive(Clone, Copy, Debug, PartialEq, Eq, ValueEnum)]
pub enum FrameworksType {
    React,
    Vue,
}

同時,在create_project函數中,已經有了對Monorepo和FrameworksType的渴望。只不過,因為有些效果還沒達到要求。這方面的需求先擱置了。我們打算把這些需求放到下一個大版本中。

圖片圖片

Reference

[1]f_cli_f: https://www.npmjs.com/package/f_cli_f

[2]Rsbuild: https://rsbuild.dev/zh/guide/start/

[3]dialoguer: https://github.com/console-rs/dialoguer

[4]code-inspector-plugin: https://inspector.fe-dev.cn/

責任編輯:武曉燕 來源: 前端柒八九
相關推薦

2024-09-30 09:25:29

2021-03-29 11:20:39

前端代碼工作流

2019-11-01 10:00:14

前端業務代碼

2022-05-09 09:28:04

Vite前端開發

2024-12-09 09:25:30

2022-08-19 14:46:16

視覺框架

2017-05-31 13:58:05

戴爾宕機服務器

2024-05-23 08:12:45

Rust前端開發JavaScrip

2024-05-22 10:03:59

2020-10-14 10:30:07

前端Node代碼

2025-09-16 09:31:07

2025-01-07 07:00:00

DDD微服務MySQL

2023-10-27 10:16:17

前端項目Rust

2018-01-27 21:19:06

前端Rust Service

2025-07-07 04:22:00

2019-10-11 15:58:25

戴爾

2021-05-27 07:12:19

單點登錄系統

2021-05-25 09:59:50

前端開發工具

2024-02-28 08:38:07

Rust前端效率

2025-04-07 07:45:00

AI模型神經網絡
點贊
收藏

51CTO技術棧公眾號

国产精品久久久久毛片大屁完整版 | 日一区二区三区| 亚洲美女久久久| 韩国中文字幕av| 国产高清一区二区三区视频| 成人一区二区视频| 国产精品黄色av| 九九精品在线观看视频| 嫩草一区二区三区| 欧美一区二区三区四区五区 | 青青草成人免费视频| 丁香婷婷久久| 亚洲成人午夜影院| 天堂√在线观看一区二区| 99久久精品日本一区二区免费| 在线播放日韩| sm久久捆绑调教精品一区| 伊人久久精品一区二区三区| 成人激情黄色小说| 国产在线精品一区免费香蕉 | 天堂资源最新在线| 久久99精品国产麻豆不卡| 97在线免费观看视频| 日韩欧美视频免费观看| 亚洲理论电影片| 日韩欧美123| 三上悠亚av一区二区三区| 深夜在线视频| 亚洲国产三级在线| 51xx午夜影福利| 在线免费观看黄| 91在线小视频| 国产精品18毛片一区二区| 在线观看视频二区| 日韩精品视频网站| 欧美精品久久久久久久久久| 顶级黑人搡bbw搡bbbb搡| 亚洲人成亚洲精品| 亚洲国产黄色片| 亚洲成年人在线观看| 美女精品久久| 欧美一区二区三区四区久久| 国产三级精品三级在线| 成人亚洲网站| 欧美色综合网站| 天堂中文视频在线| 丁香婷婷久久| 欧美精品高清视频| 小明看看成人免费视频| 国产精品天堂蜜av在线播放| 色综合激情久久| 成年人在线看片| 欧美大胆成人| 色哦色哦哦色天天综合| www黄色av| 欧美电影网址| 在线观看日韩国产| www.超碰com| 精品无人乱码一区二区三区| 日本精品一级二级| 天堂在线资源视频| 欧美97人人模人人爽人人喊视频| 欧美中文字幕一区二区三区 | 久久国产精品99久久人人澡| 国产精品久久久久久久久男| 亚洲 小说区 图片区| 日韩国产精品久久久| 国产精品小说在线| 国产片高清在线观看| 国产一区二区不卡在线| 成人在线免费网站| 天堂av在线播放| 久久精品欧美一区二区三区不卡| 欧美一区二区三区四区夜夜大片 | 91丨国产丨九色丨pron| 欧美日韩国产综合在线| yes4444视频在线观看| 一区精品在线播放| 免费网站永久免费观看| 无码小电影在线观看网站免费| 日韩欧美在线国产| av亚洲天堂网| 美女视频亚洲色图| 中文字幕精品一区二区精品| 成人自拍小视频| 国产精品久久777777毛茸茸| 国产精品网址在线| 免费国产羞羞网站视频| 91麻豆国产福利在线观看| 先锋影音欧美| 国产乱码在线| 欧美综合色免费| 日韩欧美中文在线视频| 日本一区二区三区播放| 日韩精品高清视频| 国产探花在线视频| 国内精品久久久久久久影视蜜臀| 欧美在线观看网站| 国产免费久久久| 91一区二区三区在线播放| 亚洲激情啪啪| av福利导福航大全在线| 欧美写真视频网站| 日韩免费高清一区二区| 日韩一区三区| 欧美亚洲在线观看| 国产黄色一级大片| 国产亚洲精品福利| 分分操这里只有精品| 激情久久一区二区| 精品无码久久久久久国产| 天堂网avav| 久久午夜视频| 国产伦精品一区二区三区四区视频 | jvid一区二区三区| 亚洲黄色在线观看| 艳妇荡乳欲伦69影片| 水蜜桃久久夜色精品一区的特点| 91精品国产99久久久久久红楼 | 久久福利视频导航| 这里只有久久精品视频| 99久久精品99国产精品| 在线观看av的网址| 国产福利亚洲| 亚洲美女久久久| 国偷自拍第113页| 成人精品视频一区二区三区| 中国成人亚色综合网站| 欧美日韩成人影院| 亚洲天堂av图片| 羞羞影院体验区| 成人激情黄色小说| cao在线观看| 日韩精品久久久久久久软件91| 中文字幕精品av| 亚洲性猛交富婆| 国产日韩成人精品| 激情婷婷综合网| 亚洲制服欧美另类| 欧美重口另类videos人妖| 少妇av在线播放| 亚洲v中文字幕| 精品国产一区在线| 亚洲精品资源| 国产美女精品在线观看| 爱情岛论坛亚洲品质自拍视频网站| 欧美一区二区三区在线视频| 成人在线观看小视频| 韩国av一区二区三区四区| 91香蕉视频网址| 成人国产精品久久| 精品中文字幕在线观看| 精品国产无码一区二区| 亚洲男女一区二区三区| 超级砰砰砰97免费观看最新一期 | 精品视频在线播放一区二区三区 | 蜜桃视频在线观看成人| 筱崎爱全乳无删减在线观看| 亚洲精品资源美女情侣酒店| 亚洲免费黄色网址| 久久久久久久精| 亚洲三级视频网站| 午夜精品久久久久久久四虎美女版| 成人国产精品久久久| а√中文在线8| 欧美精品一区二区在线播放 | 欧美天堂一区二区三区| 911国产在线| 国产成人精品www牛牛影视| 欧美 日韩 国产 高清| 久久99国产成人小视频| 国产精品久久一区主播| 超碰在线caoporn| 亚洲成人精品久久久| 久草手机在线观看| 国产欧美精品一区二区色综合 | 男插女免费视频| 国产成人tv| 国产不卡av在线| 黄色网在线看| 亚洲精品aⅴ中文字幕乱码| 男人天堂av在线播放| 亚洲欧洲精品成人久久奇米网| 一级日本黄色片| 亚洲成人中文| 日韩欧美三级一区二区| 欧美2区3区4区| 日本欧美国产在线| 国产二区三区在线| 日韩电影视频免费| 97在线视频人妻无码| 午夜私人影院久久久久| 调教驯服丰满美艳麻麻在线视频| 国产在线视频一区二区三区| 青青草国产精品视频| 成人毛片在线| 国内一区二区三区在线视频| 日韩一区二区三区免费视频| 九九精品视频在线| 成年人视频在线观看免费| 日韩你懂的在线播放| 天堂网一区二区| 亚洲一区二区三区自拍| 天天操天天摸天天舔| 99久久婷婷国产| 色网站在线视频| 丝袜诱惑制服诱惑色一区在线观看| 国产树林野战在线播放| 欧美日韩激情在线一区二区三区| 成人h在线播放| 祥仔av免费一区二区三区四区| 国产91精品久| 久久香蕉一区| 久久福利视频网| 免费黄色网址在线观看| 亚洲精品日韩在线| 欧洲成人一区二区三区| 欧美一区二区三区在线观看视频 | 美乳视频一区二区| 欧美一级大片在线视频| 国产精品日韩在线一区| 性欧美又大又长又硬| 欧美极品美女视频网站在线观看免费| 北岛玲一区二区三区| 亚洲跨种族黑人xxx| 亚洲精品一级片| 欧美一区二区免费| 99国产在线播放| 51精品秘密在线观看| 成人一级免费视频| 色诱亚洲精品久久久久久| 可以在线观看av的网站| 亚洲成人av中文| 久久久久久蜜桃| 亚洲综合在线五月| 欧美日韩大片在线观看| 亚洲欧美日韩国产另类专区| 成人18视频免费69| 国产精品久久777777| 精品人体无码一区二区三区| 国产女人水真多18毛片18精品视频| 大又大又粗又硬又爽少妇毛片| 99精品欧美一区二区三区小说| 少妇极品熟妇人妻无码| 国产成人精品网址| 韩国黄色一级片| 成人听书哪个软件好| 岛国av免费观看| av影院午夜一区| 午夜一区二区三区免费| 91麻豆国产在线观看| 色婷婷在线影院| 国产欧美精品一区| 欧美一区免费观看| 亚洲女与黑人做爰| 久久网一区二区| 日韩欧美国产骚| 亚洲男人天堂网址| 欧美日韩国产首页| 99精品视频在线播放免费| 日韩女优av电影| 深夜福利免费在线观看| 亚洲人高潮女人毛茸茸| 香蕉视频在线看| 欧美大片免费观看| 周于希免费高清在线观看| 国产精品成人aaaaa网站| 久久精品超碰| 97久久天天综合色天天综合色hd| 成人线上播放| 欧美久久久久久一卡四| 日韩一区亚洲二区| 日本黄色片一级片| 久久久久综合| 国内av一区二区| av资源网一区| 亚洲一级片在线播放| 亚洲精品美腿丝袜| 国产无遮挡呻吟娇喘视频| 欧美午夜一区二区三区免费大片| 国产女人高潮的av毛片| 亚洲国产三级网| 91在线免费看| 久久久久久网站| 电影亚洲一区| 国产手机精品在线| 青青一区二区三区| 日韩一级片免费视频| 日日夜夜免费精品| 无码人妻丰满熟妇区毛片蜜桃精品 | 中文字幕av网址| 亚洲欧美激情在线| 波多野结衣国产| 欧美日韩日日夜夜| 午夜视频www| 久久伊人91精品综合网站| 密臀av在线播放| 成人午夜在线影院| 天天躁日日躁狠狠躁欧美巨大小说| 亚洲国产欧美日韩| 亚洲激情国产| 欧美日韩久久婷婷| 久久精品网站免费观看| 久久精品www人人爽人人| 欧美主播一区二区三区| 无码精品人妻一区二区| 久久久精品视频在线观看| 美女福利一区二区三区| 国产 高清 精品 在线 a| 手机亚洲手机国产手机日韩| 六月丁香婷婷激情| 国产**成人网毛片九色| 亚洲综合图片一区| 一本高清dvd不卡在线观看| 性欧美videos另类hd| 日日噜噜噜夜夜爽亚洲精品| 中文字幕在线视频网站| 国产精品久久久对白| 五月精品视频| 浓精h攵女乱爱av| 久久综合久久鬼色中文字| 九九九久久久久| 日韩午夜在线观看| 男人和女人做事情在线视频网站免费观看| 欧美亚洲在线视频| 日本成人7777| 国产av麻豆mag剧集| 国产福利一区在线| 99自拍视频在线| 欧美日韩国产系列| 免费网站成人| 91精品美女在线| 色爱综合网欧美| 天堂视频免费看| 国产精品全国免费观看高清| 国产一级片一区二区| 亚洲片国产一区一级在线观看| 欧美久久天堂| 久久精品中文字幕一区二区三区 | 日本a口亚洲| 91网址在线播放| 日本一区二区视频在线观看| 波多野结衣av无码| 国产亚洲精品久久久久久牛牛| 亚洲天堂电影| 日韩av一区二区三区在线| 久久久久国产精品一区二区| 国产毛片久久久久久久| 一本色道久久综合狠狠躁的推荐| 青青操在线视频| 国产成人一区三区| 欧美伦理影院| 亚洲a级黄色片| 亚洲色图在线看| 亚洲精品国产av| 国内伊人久久久久久网站视频 | 亚洲精品videossex少妇| 第一福利在线视频| 欧美精品二区三区四区免费看视频| 亚洲欧美久久久| 天天躁日日躁aaaa视频| 欧美性受xxxx黑人xyx性爽| 自拍视频在线| 亚洲aa在线观看| 亚洲成人在线| 亚洲精品国产精品国自产网站| 欧美色视频一区| av毛片在线免费| 国产日韩一区二区三区| 鲁大师成人一区二区三区| 国精产品一区一区| 日韩免费视频一区| 天堂av在线| 香蕉精品视频在线| 成人激情动漫在线观看| 黄色av网站免费| 久久国产精彩视频| 欧美理伦片在线播放| 欧美一级特黄a| 一区二区三区不卡视频在线观看 | 中文字幕日韩av电影| 日韩激情精品| 波多野结衣家庭教师视频| 欧美激情一区二区三区蜜桃视频| 国产露脸国语对白在线| 国内精品久久久久影院 日本资源| 日本午夜精品| 在线视频一二区| 午夜欧美2019年伦理| 1024视频在线| 国产在线欧美日韩| 久久精品国产一区二区三| 日韩av一二三区| 最新国产成人av网站网址麻豆| 亚洲精品v亚洲精品v日韩精品| 日日摸日日碰夜夜爽av| 亚洲精品欧美专区| 国产午夜视频在线观看| 成人免费看片网站| 麻豆精品国产传媒mv男同|