TinyVue v3.22.0 正式發布:深色模式上線!集成 UnoCSS 圖標庫!TypeScript 類型支持全面升級!

我們非常高興地宣布,2025年4月7日,TinyVue發布了v3.22.0🎉。

本次 3.22.0 版本主要有以下重大變更:

  • 支持深色模式
  • 增加基于 UnoCSS 的圖標庫
  • 更豐富的 TypeScript 類型聲明
  • 支持 XSS 配置

詳細的 Release Notes 請參考:https://github.com/opentiny/tiny-vue/releases/tag/v3.22.0

本次版本共有 18 位貢獻者參與開發,其中hashiqi12138/hu-qi/tsinghua-lauDarkingtail/lcy0620/discreted66是新朋友,歡迎新朋友的加入👏

  1. hashiqi12138- 新增貢獻者?
  2. hu-qi- 新增貢獻者?
  3. tsinghua-lau- 新增貢獻者?
  4. Darkingtail- 新增貢獻者?
  5. lcy0620- 新增貢獻者?
  6. discreted66- 新增貢獻者?
  7. shenjunjian
  8. kagol
  9. zzcr
  10. gimmyhehe
  11. Davont
  12. betavs
  13. wuyiping0628
  14. Youyou-smiles
  15. James-9696
  16. chenxi-20
  17. MomoPoppy
  18. gweesin

感謝新老朋友們對 TinyVue 的辛苦付出👏

你可以更新@opentiny/vue@3.22.0進行體驗!

npm i @opentiny/vue@3.22.0

我們一起來看看都有哪些更新吧!

1 支持深色模式

TinyVue 開源以來,陸續有小伙伴提出要支持深色模式。

在這里插入圖片描述

本次 v3.22.0 版本全面支持了深色模式。

效果如下:

在這里插入圖片描述

使用方式也非常簡單,只需要引入深色模式樣式文件,在 html 標簽配置class="dark"即可。

假設我們已經有了一個 Vite + Vue3 的工程。

先安裝 TinyVue 3.22.0 版本。

npm i @opentiny/vue@3.22.0

然后在 src/style.css 文件中寫入以下代碼,引入深色模式樣式文件。

@import '@opentiny/vue-theme/dark-theme-index.css';

接著在 index.html 的 HTML 根元素添加 dark 類名。

<html class="dark">
...
</html>

我們嘗試在 App.vue 中引入 TinyVue 的 Button 組件。

<template><tiny-button type="primary">主要按鈕</tiny-button><tiny-button>次要按鈕</tiny-button>
</template><script setup>
import { TinyButton } from '@opentiny/vue'
</script>

具體代碼可以拷貝 Button 組件的 demo 代碼:https://opentiny.design/tiny-vue/zh-CN/os-theme/components/button

效果如下:

在這里插入圖片描述

2 增加基于 UnoCSS 的圖標庫

之前 TinyVue 的圖標庫圖標整體不夠統一,存在一些重復圖標,并且是通過封裝 Vue 組件方式提供的,性能欠佳。

本次我們的設計師小姐姐和開發小哥哥攜手推出了一款更加現代、更美觀、性能更優異的圖標庫,而且是框架無關的。

  • 源碼:https://github.com/opentiny/icons(歡迎 Star ?)
  • 官網:https://opentiny.github.io/icons/
  • 圖標預覽:https://opentiny.github.io/icons/browser-icons-base

OpenTiny Icons 是 OpenTiny 團隊推出的一款純 CSS 圖標庫,單色圖標以線型圖標為主的設計風格,圖標統一為16*16的大小,擁有安全邊距,保證了一致的視覺大小。

該圖標庫主要有以下亮點特色:

  • CSS 圖標庫:純 CSS 圖標,支持 Vue / React 等所有的前端框架
  • 按需引用:支持@iconify-json導出方式,配合@unocss/preset-icons插件, 實現按需引用
  • 圖標美觀/豐富:300+ 基礎單色圖標,精致美觀,風格統一,大小&顏色隨心變,可滿足大部分日常開發需要
  • 支持多色圖標:支持 330+ 的多色圖標,覆蓋常見的空數據、請求狀態、應用權限等場景
  • 適用場景多:支持組件庫的開發,日常應用開發

歡迎有需要的朋友使用!

使用方式也非常簡單,我們以一個普通的 vite 工程 為例,執行以下命令安裝@opentiny/icons圖標庫。

npm install @opentiny/icons

在 style.css 中加入以下內容,就可以放心使用圖標庫了

@import "@opentiny/icons/style/all.css";

圖標庫可以通過 CSS 去完全控制樣式,其中單色圖標支持通過字體大小和顏色去自定義樣式,而彩色圖標僅支持自定義大小。

<i class="ci-home" style="font-size:14px; color:#000;"></i>
<i class="ci-email" style="font-size:16px; color:#d32222;"></i>
<i class="ci-news" style="font-size:18x; color:#4822d3;"></i>
<i class="ci-date" style="font-size:20px; color:#40d322;"></i>
<hr />
<i class="ci-svc-ecs" style="font-size:72px;"></i>
<i class="ci-svc-obs" style="font-size:72px;"></i>
<i class="ci-svc-cbr" style="font-size:72px;"></i>
<i class="ci-svc-live" style="font-size:72px;"></i>
<hr />

效果如下:

在這里插入圖片描述

更多使用方式,請參考文檔:https://opentiny.github.io/icons/

3 更豐富的 TypeScript 類型聲明

TinyVue 組件庫很早就支持 TypeScript 類型提示,不過有些函數式組件(比如 Modal、Loading 等)的 TypeScript 支持不是特別友好,本次版本完善了這部分組件的 TypeScript 類型聲明,給 Modal、Notify、Loading、Message 等函數式組件增加了 TypeScript 類型聲明。

使用效果如下:

在這里插入圖片描述

4 支持 XSS 配置

為了盡可能防止 XSS 攻擊,TinyVue 內置的 XSS 過濾規則比較嚴格,會對所有包含 XSS 風險的代碼片段進行過濾處理。若開發者需要放開部分規則(比如富文本場景下放開 img 標簽的 src 屬性)的需求場景,可以手動配置 xss 白名單。

使用 @opentiny/utils 中的 setXssOption 方法傳入自定義的 xss 白名單,示例:

import { xss } from'@opentiny/utils'const options = {
enableAttrs: true,
enableHtml: true,
enableUrl: true,html: {whiteList: {a: ['class', 'style', 'contenteditable', 'data-id', 'data-title', 'data-size', 'href', 'data-last-modified'],img: ['class', 'style', 'src']}}
}xss.setXssOption(options)

同時歡迎大家一起參與OpenTiny開源共建:朋友你好,一起加入OpenTiny社區吧~

關于OpenTiny

歡迎加入 OpenTiny 開源社區。添加微信小助手:opentiny-official 一起參與交流前端技術~
OpenTiny 官網:https://opentiny.design
OpenTiny 代碼倉庫:https://github.com/opentiny
TinyVue 源碼:https://github.com/opentiny/tiny-vue
TinyEngine 源碼:https://github.com/opentiny/tiny-engine
歡迎進入代碼倉庫 Star🌟TinyEngine、TinyVue、TinyNG、TinyCLI、TinyEditor~ 如果你也想要共建,可以進入代碼倉庫,找到 good first issue標簽,一起參與開源貢獻~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/78457.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/78457.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/78457.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

超級創新思路:基于CBAM-Transformer的強化學習時間序列預測模型(Python\matlab實現)

首先聲明,該模型為原創!原創!原創!且該思路還未有成果發表,感興趣的小伙伴可以借鑒!需要完整代碼可私信或評論! 本方案可用于醫療、金融、交通、零售、光伏功率預測、估計預測、天氣預測、流量預測、故障檢測等領域! 目錄 首先聲明,該模型為原創!原創!原創!且該思…

Apache Sqoop數據采集問題

Sqoop數據采集格式問題 一、Sqoop工作原理二、Sqoop命令格式三、Oracle數據采集格式問題四、Sqoop增量采集方案 Apache Sqoop是一款開源的工具&#xff0c;主要用于在Hadoop(Hive)與傳統的數據庫(mysql、postgresql…)間進行數據的傳遞&#xff0c;可以將一個關系型數據庫&…

Grok發布了Grok Studio 和 Workspaces兩個強大的功能。該如何使用?如何使用Grok3 API?

最近Grok又更新了幾個功能&#xff1a;Grok Studio 和 Workspaces。 其中 Grok Studio 主要功能包括&#xff1a; 代碼執行&#xff1a;在預覽標簽中運行 HTML 片段、Python、JavaScript 等。 Google Drive 集成&#xff1a;附加并處理 Docs、Sheets、Slides等文件。 協作工…

Vue選項式 API 與組合式 API

選項式 API 與組合式 API 選項式 API 選項式 API 是 Vue 2 中常用的開發方式&#xff0c;在 Vue 3 里依舊得到支持。它把組件邏輯劃分為不同的選項&#xff0c;像 data、methods、computed 等。 <template><div><p>Count: {{ count }}</p><button…

SiamMask中的分類分支、回歸分支與Mask分支,有何本質差異?

SiamMask中的分類分支、回歸分支與Mask分支&#xff0c;有何本質差異&#xff1f; 一、引言二、分支定位與任務目標三、網絡結構與感受野設計3.1 分類分支&#xff08;Classification Head&#xff09;3.2 回歸分支&#xff08;Regression Head&#xff09;3.3 Mask分支&#x…

threejs學習day02

場景、相機、渲染器 一、創建3D場景 // 引入threejs import * as THREE from three// 創建一個三維場景scene const scene new THREE.Scene();// 給三維場景添加物品 const geometry new THREE.BoxGeometry(100,100,100) // 形狀 const meterial new THREE.MeshBasicMat…

K8S Pod 常見數據存儲方案

假設有如下三個節點的 K8S 集群&#xff1a; k8s31master 是控制節點 k8s31node1、k8s31node2 是工作節點 容器運行時是 containerd 一、理論介紹 1.1、Volumes 卷 Kubernetes 的卷是 pod 的?個組成部分&#xff0c;因此像容器?樣在 pod 的規范&#xff08;pod.spec&#x…

【MySQL數據庫】函數操作

目錄 1&#xff0c;日期函數 2&#xff0c;字符串函數 3&#xff0c;數學函數 1&#xff0c;日期函數 樣例&#xff1a; 獲得年月日 select current_date(); 獲取時分秒 select current_time(); 獲得時間戳 select current_timestamp(); 在日期的基礎上加日期 在2025年4月27…

【每日隨筆】文化屬性 ① ( 天機 | 強勢文化與弱勢文化 | 文化屬性的形成與改變 | 強勢文化 具備的特點 )

文章目錄 一、文化屬性1、天機2、文化屬性的強勢文化與弱勢文化強勢文化弱勢文化 二、文化屬性的形成與改變1、文化屬性形成2、文化屬性改變3、文化知識的階層 三、強勢文化 具備的 特點 一、文化屬性 1、天機 如果想要 了解這個世界的 底層架構 , 就需要掌握 洞察事物本質 的能…

【Fifty Project - D18】

感覺自己就不是計劃星球人&#xff0c;雖然fifty project要求每天早上完成一天的計劃&#xff0c;但是對于一個p人腦子&#xff0c;強制自己按照計劃行事真的太難了。我也理解在早晨花費時間做好一天的計劃有很多好處&#xff0c;但是實際行動起來完成率極低。p人的世界里變動太…

Linux系統編程 day11 鎖 (兩天沒有更新了,中期完就休息了)

鎖的注意事項 1、盡量保證鎖的粒度&#xff0c;越小越好。(訪問共享數據前&#xff0c;加鎖&#xff0c;訪問結束后立即解鎖) 2、互斥鎖&#xff0c;本質是結構體&#xff0c;但是可以看成整數&#xff0c;初值為1。(pthread_mutex_init調用成功) 3、加鎖&#xff1a; --操作…

【Maven】特殊pom.xml配置文件 - BOM

文章目錄 特殊pom.xml配置文件 - BOM一、例子二、注意事項1.特殊的子pom.xml文件2.dependencyManagement 特殊pom.xml配置文件 - BOM 僅用于集中管理項目依賴版本 在 Maven 中&#xff0c;BOM 用于定義一個項目的依賴版本的集合&#xff0c;通常用于管理一組共享的依賴版本。這…

《代碼整潔之道》第5章 格式 - 筆記

你應該選擇一套管理代碼格式的簡單規則。如果是團隊&#xff0c;應該選擇一套團隊一致同意采用的簡單格式規則。 最重要的原則&#xff1a;一致性&#xff08;Consistency&#xff09;&#xff01; 沒有完美的格式規范&#xff0c;但有統一的規范。 整個團隊&#xff08;或者…

C++ 類與對象(中)—— 默認成員函數與運算符重載的深度解析:構造函數,析構函數,拷貝構造函數,賦值運算符重載,普通取地址重載,const取地址重載

在 C 中&#xff0c;類的默認成員函數是編譯器自動生成的重要機制&#xff0c;合理利用這些函數可以簡化代碼編寫&#xff0c;同時避免資源管理錯誤。本文將從構造函數、析構函數、拷貝構造函數、賦值運算符重載等核心內容展開&#xff0c;結合具體案例深入解析。 一、默認成員…

【KWDB創作者計劃】_企業級多模數據庫實戰:用KWDB實現時序+關系數據毫秒級融合(附代碼、性能優化與架構圖)

一、技術背景與行業痛點 1.1 多模數據融合挑戰 場景痛點&#xff1a; 工業物聯網設備每秒產生百萬級傳感器數據&#xff08;時序數據&#xff09;。需關聯設備檔案&#xff08;關系數據&#xff09;生成設備健康報告&#xff0c;傳統方案需多數據庫跳轉&#xff0c;延遲>5…

w~嵌入式C語言~合集4

我自己的原文哦~ https://blog.51cto.com/whaosoft/13870376 一、STM32怎么選型 什么是 STM32 STM32&#xff0c;從字面上來理解&#xff0c;ST是意法半導體&#xff0c;M是Microelectronics的縮寫&#xff0c;32表示32位&#xff0c;合起來理解&#xff0c;STM32就是指S…

Multisim使用教程詳盡版--(2025最新版)

一、Multisim14前言 1.1、主流電路仿真軟件 1. Multisim&#xff1a;NI開發的SPICE標準仿真工具&#xff0c;支持模擬/數字電路混合仿真&#xff0c;內置豐富的元件庫和虛擬儀器&#xff08;示波器、頻譜儀等&#xff09;&#xff0c;適合教學和競賽設計。官網&#xff1a;艾…

分布式理論和事務

微服務和分布式 微服務 是一種軟件架構風格&#xff0c;它將應用程序拆分成一系列小型、獨立的服務&#xff0c;每個服務專注于單一功能&#xff0c;彼此通過輕量級通信機制&#xff08;如 API&#xff09;進行交互。微服務通常是松耦合的&#xff0c;可以獨立開發、部署和擴展…

JAVA:紅黑樹應用的技術指南

&#x1f333; 1、簡述 紅黑樹是一種自平衡二叉查找樹&#xff08;Self-Balancing Binary Search Tree&#xff09;&#xff0c;被廣泛應用于操作系統調度、Java集合、數據庫索引等核心模塊中。本文將從 基本原理 入手&#xff0c;結合 實際應用場景與代碼實例&#xff0c;帶你…

【Pandas】pandas DataFrame rfloordiv

Pandas2.2 DataFrame Binary operator functions 方法描述DataFrame.add(other)用于執行 DataFrame 與另一個對象&#xff08;如 DataFrame、Series 或標量&#xff09;的逐元素加法操作DataFrame.add(other[, axis, level, fill_value])用于執行 DataFrame 與另一個對象&…