精品欧美一区二区三区在线观看 _久久久久国色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片| 久久野战av| 一区二区三区免费看视频| 欧美一卡2卡3卡4卡无卡免费观看水多多 | 中文欧美在线视频| 亚洲v在线观看| 成人国产网站| 日韩欧美a级成人黄色| 欧美一级免费在线观看| 噜噜噜在线观看播放视频| 国产成人99久久亚洲综合精品| 国产精品久久久久久久久久久不卡 | 国产熟女高潮一区二区三区| 999精品嫩草久久久久久99| 精品日韩美女的视频高清 | 亚洲美女啪啪| 不卡av电影院| 国产又黄又粗的视频| 久久99偷拍| 日韩一区二区在线看片| 亚洲老女人av| 日本.亚洲电影| 精品久久久久久久大神国产| 欧美极品少妇无套实战| 男人天堂久久久| 国产午夜精品一区二区三区四区| 鬼打鬼之黄金道士1992林正英| 亚洲中文一区二区三区| 丝袜美腿成人在线| 91国产美女视频| 精品少妇一二三区| 女人色偷偷aa久久天堂| 日韩有码视频在线| 国产精品一区二区亚洲| 成人激情在线| 一区二区三区高清国产| 成人午夜福利一区二区| 天天躁日日躁狠狠躁欧美巨大小说 | 日本人妻丰满熟妇久久久久久| 国产精品一区二区在线看| 成人福利网站在线观看11| 中文字幕一二三四| 久久99久久精品| 国产精品永久在线| 91丨九色丨丰满| 久国产精品韩国三级视频| 国产精品视频永久免费播放| 中文字幕 国产| 日韩成人dvd| 国产欧美久久一区二区| 7777久久亚洲中文字幕| 韩国三级中文字幕hd久久精品| 成人av番号网| 国产成人精品无码高潮| 成人av网站在线观看| 久久久精品动漫| 蜜芽tv福利在线视频| 中文字幕精品在线不卡| 中文字幕日韩精品久久| 性xxxfreexxxx性欧美| 亚洲国产欧美一区二区三区丁香婷| 久久亚洲国产成人精品无码区| 国内在线视频| 日韩欧美亚洲成人| 邪恶网站在线观看| 欧美二区观看| 亚洲精品二三区| 欧美丰满老妇熟乱xxxxyyy| 成人看的羞羞网站| 欧美精品在线视频观看| 国产第一页在线播放| 鲁大师成人一区二区三区| 国产自摸综合网| 亚洲女同志亚洲女同女播放| 99国产精品99久久久久久| 日本在线一区| 污污影院在线观看| 岛国av一区二区| 自拍偷拍一区二区三区四区| 97久久综合精品久久久综合| 国产视频精品va久久久久久| 精品在线观看一区| 亚洲高清激情| 国产裸体写真av一区二区 | 自拍偷拍精品视频| 国产91精品一区二区麻豆亚洲| 欧美午夜精品理论片a级大开眼界| av网站在线播放| 亚洲www啪成人一区二区麻豆| 久久久精品麻豆| 成人精品毛片| 久久天天躁狠狠躁夜夜爽蜜月 | 国产精品社区| 成人免费福利视频| 日韩偷拍自拍| 亚洲一区二区三区在线看 | 国产激情偷乱视频一区二区三区| 另类欧美小说| 男女视频在线| 欧美人狂配大交3d怪物一区| 久久久久久久久免费看无码| 图片区亚洲欧美小说区| 奇米影视亚洲狠狠色| 精品久久久无码中文字幕| 国产清纯在线一区二区www| 日韩精品在线视频免费观看| 欧美成人xxxx| 亚洲日本成人女熟在线观看| 久久午夜无码鲁丝片| 蜜桃传媒麻豆第一区在线观看| 国产专区一区二区| 欧美性猛片xxxxx免费中国| 欧美视频在线观看一区二区| 亚洲最大免费视频| 伊人成年综合电影网| 91精品国产综合久久香蕉的用户体验 | 日韩av电影免费观看| 678在线观看视频| 欧美一卡二卡三卡| 三级黄色片在线观看| 丝袜亚洲另类欧美| 精品免费二区三区三区高中清不卡 | 国产二区视频在线播放| 国产精品黄网站| 欧美黄色小视频| 国产福利小视频| 亚洲人成网站精品片在线观看| 天天操天天爱天天爽| 九九在线高清精品视频| 欧美影院久久久| 神马久久久久| 日韩欧美在线第一页| 给我看免费高清在线观看| 海角社区69精品视频| 91视频婷婷| 麻豆av在线免费观看| 日韩欧美一级二级三级久久久| 亚洲波多野结衣| 久久99精品久久只有精品| 亚洲欧美精品| 亚洲视频资源| 久久综合五月天| 国产不卡av在线播放| 亚洲激情男女视频| 亚洲一区二区三区四区av| 99国内精品| 欧美日韩精品久久| 福利精品在线| 久久久精品美女| xxxx18国产| 午夜亚洲福利老司机| 北岛玲一区二区| 久久久久国内| 伊人久久99| 婷婷综合国产| 91超碰中文字幕久久精品| 欧美精品a∨在线观看不卡| 91久久精品一区二区三| www.涩涩爱| 国产成人av电影免费在线观看| 欧美精品卡一卡二| 亚洲资源网站| 国产精品久久一区主播| 麻豆最新免费在线视频| 欧美成人一区二区三区片免费 | 欧美成人aaa片一区国产精品| 国产91精品欧美| 亚洲中文字幕无码不卡电影| 日韩精品一区二区三区免费观影| 91香蕉亚洲精品| 成人一级福利| 色哟哟亚洲精品一区二区| 国产精品色综合| 五月天视频一区| 农村老熟妇乱子伦视频| 国产精品亚洲一区二区三区妖精 | 亚洲精品aaa| 久久久久久美女| 成人在线播放视频| 精品久久久久久久久久久院品网| 黄色片视频免费| 国产精品无人区| 亚洲欧美日韩色| 蜜桃视频一区二区三区在线观看| 屁屁影院ccyy国产第一页| 九九亚洲精品| 成人三级在线| 成人国产精选| 欧美有码在线观看视频| 成人免费看片| 亚洲欧美中文字幕| 亚洲精品无遮挡| 欧美性大战久久| 日产电影一区二区三区| 国产精品剧情在线亚洲| 黄色免费看视频| 国产一区二区日韩精品| 久久久久久久久久久久久久国产| 欧美一区在线看| 日本中文不卡| 青青一区二区| 成人免费看片网址| 亚洲精品aa| 国产精品久久久久久一区二区| wwww亚洲| 欧美精品生活片| 青青青青在线| 这里只有精品视频| 免费成人av电影| 日韩高清a**址| 精品毛片一区二区三区| 欧美日韩一区二区电影| 无码人妻久久一区二区三区| 婷婷久久综合九色国产成人 | 成人久久18免费网站图片| 日本免费一区二区三区四区| 欧美极品少妇xxxxⅹ裸体艺术 | 中日韩av在线播放| 久久亚洲电影| www一区二区www免费| 伊人久久久大香线蕉综合直播| 一区二区不卡在线| 欧美日韩第一| 日韩欧美亚洲区| 亚洲图区在线| 欧美另类视频在线| 欧美福利在线播放网址导航| 超碰在线观看97| 亚洲不卡视频| 国产精品久久久久久久久久直播| www欧美在线观看| 成人av资源在线播放| 激情欧美一区二区三区黑长吊| 国产精品美女无圣光视频| 极品美女一区| 国产精品精品久久久久久| 日产精品一区| 国产精品色悠悠| 国产精品66| 成人羞羞国产免费| 国产一区二区三区黄网站| 亚洲xxxxx电影| 日韩免费成人| 精品国产中文字幕| 猛男gaygay欧美视频| 日本免费一区二区三区| 日本精品黄色| 国产美女视频免费| 午夜亚洲福利| 国产真人做爰毛片视频直播| 亚洲在线日韩| 九热视频在线观看| 激情图片小说一区| 国产精品果冻传媒| 91美女蜜桃在线| 亚洲欧洲综合网| 一区二区三区四区国产精品| 日韩成人av毛片| 91福利精品第一导航| 在线免费观看日韩视频| 这里只有精品视频在线观看| 精品人妻无码一区二区| 日韩精品欧美国产精品忘忧草| 可以在线观看的av| 久久中文精品视频| 九九色在线视频| 日本国产精品视频| 亚洲精品第一| 国产手机精品在线| 日韩成人综合| 成人黄色大片网站| 视频在线在亚洲| 国产精欧美一区二区三区白种人| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 欧美午夜精品久久久久免费视| 天天影视欧美综合在线观看| 日韩 欧美 视频| 青青青爽久久午夜综合久久午夜| 两性午夜免费视频| 91热门视频在线观看| 91视频最新网址| 欧美日韩一区免费| 国产精品一区二区人人爽| 欧美精品一区二区三区四区| 成人在线二区| 国语自产在线不卡| 香蕉久久一区| 欧美精品在线一区| 欧美~级网站不卡| 国产精品免费成人| 国产a级毛片一区| 国产白丝一区二区三区| 午夜精品久久久久久久久久| 中文字幕一区二区在线视频 | 成人免费黄色网页| 欧美精品电影在线| 国产成人午夜性a一级毛片| 国产伦理一区二区三区| 日韩免费高清| 国产91在线视频观看| 国产成人免费视频网站高清观看视频| www..com.cn蕾丝视频在线观看免费版 | 亚洲av无一区二区三区| 日韩欧美在线视频免费观看| 国产视频在线观看免费| 国产亚洲欧洲在线| 欧美激情护士| 91久久爱成人| av资源久久| 国产精品免费观看久久| 岛国精品在线播放| 一区二区三区四区五区| 一本一道综合狠狠老| 无码精品在线观看| 国内免费久久久久久久久久久 | 国产一区免费在线观看| 国产精品久久久久无码av| 97公开免费视频| 久久影音资源网| 中文字字幕在线中文| 精品国产一区二区三区忘忧草| www红色一片_亚洲成a人片在线观看_| 国产精品久久一区主播| 国产一区二区三区四区大秀| 一本大道熟女人妻中文字幕在线 | 久久 天天综合| 91无套直看片红桃在线观看| 欧美亚洲一区三区| jizzjizz在线观看| 国产精品www网站| 久久99国产精品视频| 妞干网在线免费视频| 久久久青草青青国产亚洲免观| 狠狠躁夜夜躁人人爽天天高潮| 亚洲国产成人爱av在线播放| caoprom在线| 国产日韩欧美亚洲一区| av不卡在线看| 18禁裸乳无遮挡啪啪无码免费| 精品福利一区二区| 天天色棕合合合合合合合| 97精品视频在线| 一道本一区二区三区| 日本三级免费观看| 国产情人综合久久777777| 亚洲综合成人av| 一区二区三区美女xx视频| 欧美韩国亚洲| 亚洲制服中文| 国产精品系列在线观看| 青青操国产视频| 日韩欧美亚洲国产另类| h片在线观看下载| 精品国产乱码久久久久久久软件 | 国产高清999| 一区二区三区欧美| 亚洲三级中文字幕| 国产精品久久久久久久9999| 亚洲91久久| 少妇一级淫片免费放播放| 日本高清成人免费播放| 日本最黄一级片免费在线| 91传媒视频免费| 国产欧美丝祙| 丁香六月激情综合| 精品第一国产综合精品aⅴ| 欧美成人免费电影| 一区二区冒白浆视频| 国产盗摄精品一区二区三区在线 | 久久青青草综合| 人人超碰91尤物精品国产| 国产美女久久久久久| 精品国产免费久久| 亚洲精品国产嫩草在线观看| 亚洲自拍偷拍一区二区三区| 成人精品视频.| 中国女人一级一次看片| 欧美日韩高清在线观看| 制服丝袜日韩| 成人做爰69片免费| 在线一区二区三区四区| 污视频网站在线免费| 日韩精品大片| 成人免费视频免费观看| 中文字幕永久在线观看| 97精品国产91久久久久久| 久久在线播放| 成年人免费观看视频网站| 日韩一区二区免费视频| 欧美free嫩15| 久久精品国产sm调教网站演员|