YggJS RButton 按鈕組件 v1.0.0 使用教程

📋 目錄

  • 簡介
  • 核心特性
  • 快速開始
  • 安裝指南
  • 基礎使用
  • 主題系統
  • 高級功能
  • API 參考
  • 最佳實踐
  • 性能優化
  • 故障排除
  • 總結

🚀 簡介

YggJS RButton 是一個專門為 React 應用程序設計的高性能按鈕組件庫。它提供了兩套完整的設計主題:科技風主題極簡主題,滿足不同項目的設計需求。

設計理念

  • 🎨 雙主題設計:科技風主題展現現代感和科技感,極簡主題追求純凈簡潔的美學
  • ? 高性能:基于 CSS-in-JS 的動態樣式系統,支持主題熱切換
  • 🔧 TypeScript 原生支持:完整的類型定義,提供最佳的開發體驗
  • ? 可訪問性優先:遵循 WCAG 2.1 標準,支持鍵盤導航和屏幕閱讀器
  • 📱 響應式設計:完美適配各種屏幕尺寸和設備類型

? 核心特性

🎯 多主題支持

  • 科技風主題:藍色基調、霓虹發光效果、科技感邊框
  • 極簡主題:灰度色彩、微妙陰影、優雅過渡動畫

🎨 豐富的樣式配置

  • 5種顏色變體:primary、secondary、success、danger、warning
  • 3種尺寸規格:small、medium、large
  • 4種填充模式:solid、outline、ghost、link
  • 4種形狀樣式:default、rounded、circle、square

? 狀態管理

  • 交互狀態:normal、hover、active、focus、disabled
  • 加載狀態:支持異步操作的加載指示器
  • 自定義狀態:可擴展的狀態系統

🔧 開發者體驗

  • TypeScript 支持:完整的類型定義和 IntelliSense
  • Tree Shaking:按需導入,減小打包體積
  • 熱模塊替換:開發時支持樣式熱更新

🏁 快速開始

30秒快速體驗

import React from 'react';
import { TechButton } from 'yggjs_rbutton';function App() {return (<div><TechButton variant="primary" size="medium">點擊我</TechButton></div>);
}export default App;

📦 安裝指南

NPM 安裝

npm install yggjs_rbutton

Yarn 安裝

yarn add yggjs_rbutton

依賴要求

{"peerDependencies": {"react": "^19.1.1"}
}

TypeScript 配置

如果您使用 TypeScript,請確保在 tsconfig.json 中包含以下配置:

{"compilerOptions": {"jsx": "react-jsx","moduleResolution": "node","allowSyntheticDefaultImports": true,"esModuleInterop": true}
}

🎯 基礎使用

導入方式

完整導入
import { TechButton, MinimalButton } from 'yggjs_rbutton';
按需導入(推薦)
// 導入科技風主題
import { TechButton } from 'yggjs_rbutton/tech';// 導入極簡主題
import { MinimalButton } from 'yggjs_rbutton/minimal';

基礎示例

科技風按鈕
import React from 'react';
import { TechButton } from 'yggjs_rbutton/tech';export default function BasicExample() {return (<div style={{ display: 'flex', gap: '16px', padding: '20px' }}>{/* 基礎按鈕 */}<TechButton>默認按鈕</TechButton>{/* 不同變體 */}<TechButton variant="primary">主要按鈕</TechButton><TechButton variant="secondary">次要按鈕</TechButton><TechButton variant="success">成功按鈕</TechButton><TechButton variant="danger">危險按鈕</TechButton>{/* 不同尺寸 */}<TechButton size="small">小按鈕</TechButton><TechButton size="medium">中等按鈕</TechButton><TechButton size="large">大按鈕</TechButton></div>);
}
極簡主題按鈕
import React from 'react';
import { MinimalButton } from 'yggjs_rbutton/minimal';export default function MinimalExample() {return (<div style={{ display: 'flex', gap: '16px', padding: '20px' }}>{/* 極簡風格按鈕 */}<MinimalButton variant="primary">極簡主要</MinimalButton><MinimalButton variant="outline">輪廓按鈕</MinimalButton><MinimalButton variant="ghost">幽靈按鈕</MinimalButton></div>);
}

事件處理

import React, { useState } from 'react';
import { TechButton } from 'yggjs_rbutton/tech';export default function InteractiveExample() {const [loading, setLoading] = useState(false);const [count, setCount] = useState(0);const handleAsyncClick = async () => {setLoading(true);try {// 模擬異步操作await new Promise(resolve => setTimeout(resolve, 2000));setCount(prev => prev + 1);} finally {setLoading(false);}};return (<div style={{ padding: '20px' }}><TechButtonvariant="primary"loading={loading}disabled={loading}onClick={handleAsyncClick}>{loading ? '處理中...' : `點擊次數: ${count}`}</TechButton></div>);
}

🎨 主題系統

主題對比

特性科技風主題極簡主題
色彩基調藍色科技感灰度純凈感
視覺效果霓虹發光、漸變微妙陰影、簡潔
動畫風格動感、科技感溫和、優雅
使用場景科技產品、游戲、創新應用商務應用、內容平臺、工具軟件

科技風主題特性

import React from 'react';
import { TechButton } from 'yggjs_rbutton/tech';export default function TechThemeDemo() {return (<div style={{ padding: '20px', backgroundColor: '#0a0a0a' }}>{/* 霓虹發光效果 */}<TechButton variant="primary" glow>霓虹發光按鈕</TechButton>{/* 漸變背景 */}<TechButton variant="primary" gradient>漸變背景按鈕</TechButton>{/* 全寬按鈕 */}<TechButton variant="primary" fullWidth>全寬度按鈕</TechButton>{/* 自定義顏色 */}<TechButton variant="primary" customColors={{primary: '#ff6b35',primaryHover: '#ff8c42'}}>自定義顏色</TechButton></div>);
}

極簡主題特性

import React from 'react';
import { MinimalButton } from 'yggjs_rbutton/minimal';export default function MinimalThemeDemo() {return (<div style={{ padding: '20px', backgroundColor: '#fafafa' }}>{/* 純凈模式 */}<MinimalButton variant="primary"minimalConfig={{ pureMode: true }}>純凈模式</MinimalButton>{/* 內容優先 */}<MinimalButton variant="outline"minimalConfig={{ contentFirst: true }}>內容優先</MinimalButton>{/* 呼吸空間優化 */}<MinimalButton variant="ghost"minimalConfig={{ breathingSpace: true }}>呼吸空間優化</MinimalButton></div>);
}

深色模式支持

import React, { useState } from 'react';
import { TechButton } from 'yggjs_rbutton/tech';export default function DarkModeExample() {const [darkMode, setDarkMode] = useState(false);return (<div style={{ padding: '20px',backgroundColor: darkMode ? '#1a1a1a' : '#ffffff',color: darkMode ? '#ffffff' : '#000000',minHeight: '200px',transition: 'all 0.3s ease'}}><TechButton variant="secondary" onClick={() => setDarkMode(!darkMode)}>切換 {darkMode ? '淺色' : '深色'} 模式</TechButton><div style={{ marginTop: '20px', display: 'flex', gap: '12px' }}><TechButton variant="primary">主要按鈕</TechButton><TechButton variant="secondary">次要按鈕</TechButton><TechButton variant="success">成功按鈕</TechButton></div></div>);
}

🔥 高級功能

自定義樣式

import React from 'react';
import { TechButton } from 'yggjs_rbutton/tech';export default function CustomStylesExample() {return (<div style={{ padding: '20px' }}>{/* 自定義CSS樣式 */}<TechButton variant="primary"style={{background: 'linear-gradient(45deg, #ff6b35, #f7931e)',border: 'none',boxShadow: '0 4px 15px rgba(255, 107, 53, 0.3)'}}>自定義漸變</TechButton>{/* 使用className */}<TechButton variant="secondary"className="my-custom-button">自定義類名</TechButton></div>);
}

異步操作處理

import React, { useState } from 'react';
import { TechButton } from 'yggjs_rbutton/tech';export default function AsyncOperationsExample() {const [status, setStatus] = useState<'idle' | 'loading' | 'success' | 'error'>('idle');const handleSubmit = async () => {setStatus('loading');try {// 模擬API調用const response = await fetch('/api/submit', {method: 'POST',headers: { 'Content-Type': 'application/json' },body: JSON.stringify({ data: 'example' })});if (response.ok) {setStatus('success');setTimeout(() => setStatus('idle'), 2000);} else {throw new Error('提交失敗');}} catch (error) {setStatus('error');setTimeout(() => setStatus('idle'), 2000);}};const getButtonProps = () => {switch (status) {case 'loading':return {loading: true,disabled: true,children: '提交中...'};case 'success':return {variant: 'success' as const,children: '? 提交成功'};case 'error':return {variant: 'danger' as const,children: '? 提交失敗'};default:return {variant: 'primary' as const,children: '提交數據'};}};return (<div style={{ padding: '20px' }}><TechButton {...getButtonProps()}onClick={handleSubmit}disabled={status !== 'idle'}/></div>);
}

表單集成

import React, { useState } from 'react';
import { TechButton, MinimalButton } from 'yggjs_rbutton';export default function FormIntegrationExample() {const [formData, setFormData] = useState({name: '',email: ''});const [errors, setErrors] = useState<Record<string, string>>({});const validateForm = () => {const newErrors: Record<string, string> = {};if (!formData.name.trim()) {newErrors.name = '姓名不能為空';}if (!formData.email.trim()) {newErrors.email = '郵箱不能為空';} else if (!/\S+@\S+\.\S+/.test(formData.email)) {newErrors.email = '郵箱格式不正確';}setErrors(newErrors);return Object.keys(newErrors).length === 0;};const handleSubmit = (e: React.FormEvent) => {e.preventDefault();if (validateForm()) {console.log('表單提交:', formData);// 處理表單提交}};const handleReset = () => {setFormData({ name: '', email: '' });setErrors({});};const isFormValid = formData.name.trim() && formData.email.trim();return (<form onSubmit={handleSubmit} style={{ padding: '20px', maxWidth: '400px' }}><div style={{ marginBottom: '16px' }}><label>姓名:</label><inputtype="text"value={formData.name}onChange={(e) => setFormData(prev => ({ ...prev, name: e.target.value }))}style={{width: '100%',padding: '8px',marginTop: '4px',border: errors.name ? '1px solid red' : '1px solid #ccc'}}/>{errors.name && <div style={{ color: 'red', fontSize: '12px' }}>{errors.name}</div>}</div><div style={{ marginBottom: '20px' }}><label>郵箱:</label><inputtype="email"value={formData.email}onChange={(e) => setFormData(prev => ({ ...prev, email: e.target.value }))}style={{width: '100%',padding: '8px',marginTop: '4px',border: errors.email ? '1px solid red' : '1px solid #ccc'}}/>{errors.email && <div style={{ color: 'red', fontSize: '12px' }}>{errors.email}</div>}</div><div style={{ display: 'flex', gap: '12px' }}><TechButton type="submit"variant="primary"disabled={!isFormValid}>提交</TechButton><MinimalButton type="button"variant="outline"onClick={handleReset}>重置</MinimalButton></div></form>);
}

📚 API 參考

TechButton API

Props
interface TechButtonProps {// 基礎屬性children?: React.ReactNode;variant?: 'primary' | 'secondary' | 'success' | 'danger' | 'warning';size?: 'small' | 'medium' | 'large';fill?: 'solid' | 'outline' | 'ghost' | 'link';shape?: 'default' | 'rounded' | 'circle' | 'square';// 狀態屬性disabled?: boolean;loading?: boolean;active?: boolean;// 樣式屬性fullWidth?: boolean;glow?: boolean;gradient?: boolean;customColors?: {primary?: string;primaryHover?: string;primaryActive?: string;};// 事件處理onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;onFocus?: (event: React.FocusEvent<HTMLButtonElement>) => void;onBlur?: (event: React.FocusEvent<HTMLButtonElement>) => void;// HTML 屬性type?: 'button' | 'submit' | 'reset';form?: string;name?: string;value?: string;tabIndex?: number;// 自定義屬性className?: string;style?: React.CSSProperties;id?: string;'data-testid'?: string;'aria-label'?: string;'aria-describedby'?: string;
}

MinimalButton API

interface MinimalButtonProps {// 基礎屬性children?: React.ReactNode;variant?: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'outline' | 'ghost';size?: 'small' | 'medium' | 'large';// 狀態屬性disabled?: boolean;loading?: boolean;active?: boolean;// 極簡主題特殊配置minimalConfig?: {pureMode?: boolean;        // 純凈模式contentFirst?: boolean;    // 內容優先breathingSpace?: boolean;  // 呼吸空間優化};// 主題配置colorMode?: 'light' | 'dark' | 'auto';density?: 'compact' | 'comfortable' | 'spacious';borderStyle?: 'none' | 'subtle' | 'visible';shadowIntensity?: 'none' | 'subtle' | 'visible';textStyle?: 'light' | 'normal' | 'medium';// 其他屬性與 TechButton 相同...
}

工具函數

// 主題工具
import { createTheme, mergeThemes } from 'yggjs_rbutton/utils';// 創建自定義主題
const customTheme = createTheme({colors: {primary: '#ff6b35',secondary: '#4ecdc4'},animations: {duration: {fast: '100ms',normal: '200ms'}}
});// 合并主題
const mergedTheme = mergeThemes(baseTheme, customTheme);

💡 最佳實踐

1. 性能優化

import React, { memo, useMemo, useCallback } from 'react';
import { TechButton } from 'yggjs_rbutton/tech';// 使用 memo 優化重渲染
const OptimizedButton = memo(({ onClick, children, ...props }) => {// 使用 useCallback 緩存事件處理器const handleClick = useCallback((e) => {onClick?.(e);}, [onClick]);// 使用 useMemo 緩存復雜計算const buttonStyle = useMemo(() => ({margin: '4px',transition: 'all 0.2s ease'}), []);return (<TechButton{...props}onClick={handleClick}style={buttonStyle}>{children}</TechButton>);
});

2. 可訪問性優化

import React from 'react';
import { TechButton } from 'yggjs_rbutton/tech';export default function AccessibleButtons() {return (<div>{/* 使用語義化標簽和ARIA屬性 */}<TechButtonvariant="primary"aria-label="保存用戶數據"aria-describedby="save-help-text"role="button">保存</TechButton><div id="save-help-text">點擊保存當前用戶信息</div>{/* 鍵盤導航支持 */}<TechButtonvariant="secondary"onKeyDown={(e) => {if (e.key === 'Enter' || e.key === ' ') {e.preventDefault();// 處理鍵盤激活}}}>鍵盤友好按鈕</TechButton>{/* 狀態通知 */}<TechButtonvariant="success"aria-live="polite"aria-atomic="true">操作成功</TechButton></div>);
}

3. 主題一致性

import React, { createContext, useContext } from 'react';
import { TechButton, MinimalButton } from 'yggjs_rbutton';// 創建主題上下文
const ThemeContext = createContext<{theme: 'tech' | 'minimal';toggleTheme: () => void;
}>({theme: 'tech',toggleTheme: () => {}
});// 統一按鈕組件
const UnifiedButton: React.FC<any> = (props) => {const { theme } = useContext(ThemeContext);return theme === 'tech' ? <TechButton {...props} />: <MinimalButton {...props} />;
};// 使用示例
export default function ThemedApp() {const [theme, setTheme] = useState<'tech' | 'minimal'>('tech');return (<ThemeContext.Provider value={{theme,toggleTheme: () => setTheme(prev => prev === 'tech' ? 'minimal' : 'tech')}}><div><UnifiedButton variant="primary">統一主題按鈕</UnifiedButton><UnifiedButton variant="secondary" onClick={() => toggleTheme()}>切換主題</UnifiedButton></div></ThemeContext.Provider>);
}

4. 類型安全

import React from 'react';
import { TechButton } from 'yggjs_rbutton/tech';
import type { TechButtonProps } from 'yggjs_rbutton/tech/types';// 定義強類型的按鈕配置
interface ButtonConfig {variant: TechButtonProps['variant'];size: TechButtonProps['size'];label: string;action: () => void;
}const buttonConfigs: ButtonConfig[] = [{variant: 'primary',size: 'medium',label: '主要操作',action: () => console.log('主要操作')},{variant: 'secondary',size: 'small',label: '次要操作',action: () => console.log('次要操作')}
];export default function TypeSafeButtons() {return (<div>{buttonConfigs.map((config, index) => (<TechButtonkey={index}variant={config.variant}size={config.size}onClick={config.action}>{config.label}</TechButton>))}</div>);
}

? 性能優化

Bundle 大小優化

// ? 避免完整導入
import { TechButton, MinimalButton } from 'yggjs_rbutton';// ? 推薦按需導入
import { TechButton } from 'yggjs_rbutton/tech';
import { MinimalButton } from 'yggjs_rbutton/minimal';

樣式緩存

import React, { useMemo } from 'react';
import { TechButton } from 'yggjs_rbutton/tech';export default function OptimizedButtonList({ items }) {// 緩存樣式計算const buttonStyles = useMemo(() => ({container: {display: 'grid',gridTemplateColumns: 'repeat(auto-fit, minmax(120px, 1fr))',gap: '8px',padding: '16px'}}), []);return (<div style={buttonStyles.container}>{items.map((item, index) => (<TechButtonkey={item.id || index}variant={item.variant}size="medium"onClick={item.onClick}>{item.label}</TechButton>))}</div>);
}

虛擬化長列表

import React, { memo } from 'react';
import { FixedSizeList as List } from 'react-window';
import { TechButton } from 'yggjs_rbutton/tech';const ButtonItem = memo(({ index, style, data }) => (<div style={style}><TechButtonvariant="primary"size="small"onClick={() => data.onItemClick(index)}>按鈕 {index + 1}</TechButton></div>
));export default function VirtualizedButtonList({ itemCount }) {const handleItemClick = (index) => {console.log(`點擊了按鈕 ${index + 1}`);};return (<Listheight={400}itemCount={itemCount}itemSize={40}itemData={{ onItemClick: handleItemClick }}>{ButtonItem}</List>);
}

🐛 故障排除

常見問題

1. 樣式不生效

問題: 按鈕樣式沒有正確應用

解決方案:

// 確保正確導入CSS(如果需要)
import 'yggjs_rbutton/dist/styles.css';// 或者使用CSS-in-JS方案(推薦)
import { TechButton } from 'yggjs_rbutton/tech';
2. TypeScript 類型錯誤

問題: TypeScript 報告類型錯誤

解決方案:

// 確保安裝了類型定義
npm install @types/react// 在組件中正確使用類型
import type { TechButtonProps } from 'yggjs_rbutton/tech/types';const MyButton: React.FC<TechButtonProps> = (props) => {return <TechButton {...props} />;
};
3. 主題切換不生效

問題: 主題切換沒有視覺變化

解決方案:

// 確保主題提供器正確包裝組件
import { ThemeProvider } from 'yggjs_rbutton';function App() {return (<ThemeProvider theme="tech"><YourComponent /></ThemeProvider>);
}
4. 性能問題

問題: 大量按鈕渲染導致性能下降

解決方案:

import React, { memo } from 'react';
import { TechButton } from 'yggjs_rbutton/tech';// 使用 React.memo 優化
const OptimizedButton = memo(TechButton);// 或者使用虛擬化
import { FixedSizeList } from 'react-window';

調試技巧

開啟開發模式
// 在開發環境中啟用詳細日志
import { setDebugMode } from 'yggjs_rbutton/utils';if (process.env.NODE_ENV === 'development') {setDebugMode(true);
}
樣式調試
import { TechButton } from 'yggjs_rbutton/tech';// 使用 data-testid 便于調試和測試
<TechButton data-testid="submit-button" variant="primary">提交
</TechButton>

🎓 總結

YggJS RButton 是一個功能強大、設計精美的 React 按鈕組件庫,它為現代 Web 應用提供了完整的按鈕解決方案。

🎯 核心價值

  1. 雙主題設計:科技風和極簡風兩套完整主題,滿足不同項目需求
  2. TypeScript 原生支持:完整的類型定義,提供卓越的開發體驗
  3. 高性能架構:基于 CSS-in-JS 的動態樣式系統,支持主題熱切換
  4. 可訪問性優先:遵循 WCAG 標準,確保所有用戶都能正常使用
  5. 企業級品質:經過嚴格測試,適用于生產環境

🚀 適用場景

  • 科技產品:使用科技風主題展現創新和現代感
  • 商務應用:使用極簡主題保持專業和簡潔
  • 企業級應用:利用完整的類型支持和高性能架構
  • 設計系統:作為設計系統的基礎組件進行擴展

📈 發展路線

未來版本計劃:

  • 更多主題變體和自定義選項
  • 動畫效果增強和微交互優化
  • 更好的性能優化和 Bundle 大小控制
  • 更豐富的無障礙訪問功能

🤝 社區支持

  • 問題反饋:GitHub Issues
  • 功能建議:GitHub Discussions
  • 貢獻代碼:貢獻指南

感謝使用 YggJS RButton!

如果這個組件庫對您有幫助,請考慮給我們一個 ? Star!

📖 更多文檔 |
🐛 問題反饋 |
💡 功能建議


📝 文檔版本: v1.0.0
📅 更新日期: 2025年8月26日
👨?💻 作者: 源滾滾AI編程團隊

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

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

相關文章

Linux(二十)——SELinux 概述與狀態切換

文章目錄前言一、SELinux 概述1.1 SELinux 簡介1.2 SELinux 特點1.2.1 MAC&#xff08;Mandatory Access Control&#xff09;1.2.2 RBAC&#xff08;Role-Based Access Control&#xff09;1.2.3 TE&#xff08;Type Enforcement&#xff09;1.3 SELinux 的執行模式1.4 SELinu…

Linux學習-TCP網絡協議(補充)

一、TCP 頭部標志位 TCP 頭部包含多種標志位&#xff0c;用于控制連接建立、數據傳輸、連接斷開等過程&#xff0c;核心標志位及作用如下&#xff1a;標志位英文全稱作用SYNSynchronize Sequence Numbers請求建立連接&#xff0c;三次握手第一步發送 SYN 包ACKAcknowledgment響…

Go編寫的輕量文件監控器. 可以監控終端上指定文件夾內的變化, 阻止刪除,修改,新增操作. 可以用于AWD比賽或者終端應急響應

工具介紹 0RAYS-AWD-Filechecker一個用Golang編寫的, 輕量級的文件監控器, 會監控指定文件夾內文件刪除, 修改, 新增操作, 然后立刻告警并復原. 一開始是為AWD比賽寫的, 主要是為了防止靶機的web目錄被上馬. 但也可以用到藍隊等場景上. 由于使用的Linux的系統調用, 僅支持Linux…

【6】MySQL 數據庫基礎操作

MySQL 數據庫基礎操作數據庫操作查看數據庫創建數據庫刪除數據庫修改數據庫數據表操作創建表修改表刪除表數據庫操作 查看數據庫 查看有哪些數據庫&#xff1f; 示例&#xff1a; [rootlocalhost][(none)]> show databases; -------------------- | Database |…

Android 探索APP/應用啟動模式、Intent的Flag啟動標志位

寫在前面&#xff1a;Android APP有四種啟動模式——》標準模式(Standard)、棧頂復用模式(SingleTop)、棧內復用模式(SingleTask)、單例模式(SingleInstance)&#xff0c;默認就是標準模式。啟動模式決定了Activity在任務棧內的存在方式&#xff0c;影響了Back返回鍵Activity返…

Y9000P部署開源模型

環境信息&#xff1a; 設備&#xff1a;Y9000P GPU&#xff1a;RTX 3060 6G 系統版本&#xff1a;Ubuntu 24.04 一、下載模型 1、環境準備 1、安裝工具 apt-get -y install git-lfs git lfs install apt-get install python3 python-is-python3 pip3.12 config set global.inde…

大模型入門實戰 | 基于 YOLO 數據集微調 Qwen2.5-VL-3B-Instruct 的目標檢測任務

大模型入門實戰 | 基于 YOLO 數據集微調 Qwen2.5-VL-3B-Instruct 的目標檢測任務這篇就是新手向的“保姆級”實操文。你將把 YOLO 檢測數據 轉成 對話式 Grounding 數據&#xff0c;用 ms-swift 做 LoRA 微調&#xff0c;再用腳本 推理 可視化。 但值得注意的是&#xff0c;一…

基于Python+MySQL實現物聯網引論課程一個火警報警及應急處理系統

物聯網引論課程大作業設計報告一、選題、內容及功能說明我們大作業選擇的是題目三&#xff1a;一個火警報警及應急處理系統。主要需要實現四個功能&#xff1a;感知環境溫度&#xff0c;當環境溫度超過閾值&#xff0c;自動觸發報警&#xff1a;終端 led 以固定頻率閃爍&#x…

基于印染數據的可視化系統設計與實現

標題:基于印染數據的可視化系統設計與實現內容:1.摘要 隨著印染行業的快速發展&#xff0c;印染數據呈現爆發式增長。為了更好地管理和分析這些數據&#xff0c;提高印染生產的效率和質量&#xff0c;本研究旨在設計并實現一個基于印染數據的可視化系統。通過收集印染生產過程中…

實驗1 第一個微信小程序

實驗1 第一個微信小程序一、實驗目標二、實驗步驟1. 自動生成小程序2. 手動創建小程序三、程序運行結果四、問題總結與體會chunk的博客地址一、實驗目標 1、學習使用快速啟動模板創建小程序的方法&#xff1b; 2、學習不使用模板手動創建小程序的方法。 二、實驗步驟 1. 自…

(計算機網絡)JWT三部分及 Signature 作用

JWT&#xff08;JSON Web Token&#xff09;是一種用于 無狀態認證 的輕量級令牌&#xff0c;廣泛用于分布式系統、單頁應用&#xff08;SPA&#xff09;和移動端登錄。JWT 結構概覽JWT 由 三部分組成&#xff0c;用 . 分隔&#xff1a;xxxxx.yyyyy.zzzzz Header&#xff08;頭…

LangGraph

LangGraph 是由 LangChain 團隊開發的開源框架&#xff0c;專為構建??復雜、有狀態、多主體&#xff08;Multi-Agent&#xff09;的 LLM 應用??而設計。它通過??圖結構&#xff08;Graph&#xff09;?? 組織工作流&#xff0c;支持循環邏輯、動態分支、狀態持久化和人工…

STM32物聯網項目---ESP8266微信小程序結合OneNET平臺MQTT實現STM32單片機遠程智能控制---MQTT篇(三)

一、前言本篇文章通過發送AT指令&#xff0c;與云平臺建立通訊&#xff1a;1.創建云平臺2.燒錄AT固件3.MQTT訂閱&#xff08;本篇&#xff09;4.單片機代碼編寫5.微信小程序&#xff08;下載微信開發者工具即可使用&#xff09;二、AT指令集介紹AT指令是一種文本序列&#xff0…

Apache Ozone 2.0.0集群部署

單機部署參考&#xff1a;Apache Ozone 介紹與部署使用(最新版2.0.0)-CSDN博客 安裝部署 官方參考&#xff1a;Documentation for Apache Ozone 準備環境 環境準備參考&#xff1a;Linux環境下Hadoop3.4.0集群部署-CSDN博客 1->4-b 參考&#xff1a;Apache Ozone 介紹與部…

【計算機網絡 | 第9篇】信道的極限容量

文章目錄探秘信道的極限容量&#xff1a;從奈氏準則到香農定理一、信道極限容量的基本概念&#x1f914;二、奈氏準則&#xff1a;無噪聲情況下的碼元速率限制&#x1f426;?&#x1f525;&#xff08;一&#xff09;帶寬與信號傳輸的關系&#xff08;二&#xff09;碼間串擾問…

深入理解Linux iptables防火墻:從核心概念到實戰應用

一、概述&#xff1a;什么是iptables&#xff1f; 在Linux系統中&#xff0c;網絡安全防護的核心工具之一便是iptables。它絕非一個簡單的命令&#xff0c;而是一個功能強大的用戶態工具&#xff0c;與Linux內核中的netfilter框架協同工作&#xff0c;共同構建了Linux的防火墻體…

WebRTC音頻QoS方法一.1(NetEQ之音頻網絡延時DelayManager計算補充)

一、整體簡介 NetEQ計算的網絡延時&#xff0c;直接影響變速算法的決策。在變速算法里面啟動關鍵的作用。 網絡延時計算需要考慮兩種情況&#xff1a; 1、單純抖動的網絡延時計算&#xff0c;在UnderrunOptimizer類中實現&#xff1b; 2、在丟包亂序場景下的網絡延時計算。…

實時操作系統FreeRTOS移植到STM32VGT6

一、前言 下載平臺:STM32F407VGT6 代碼使用平臺:VSCode 編譯器:arm-none-aebi-gcc 程序下載工具:STlink 批處理工具:make 移植的FreeRTOS版本:V11.2.0 其實此方法并不局限在arm-none-aebi-gcc中&#xff0c;此方法對于Keil5也是可以使用的&#xff0c; 只不過復制的一些文件不同…

從線到機:AI 與多模態交互如何重塑 B 端與 App 界面設計

當下&#xff0c;界面設計已經不再是單純的“畫屏幕”。AI 的快速發展讓我們不得不重新審視&#xff1a;交互和視覺究竟會走向什么樣的未來&#xff1f;無論是移動端 App&#xff0c;還是復雜的 B 端產品&#xff0c;設計的核心都在于讓界面更懂用戶。本文嘗試從三個角度切入&a…

【智能化解決方案】大模型智能推薦選型系統方案設計

大模型智能推薦選型系統方案設計0 背景1 問題分析與定義2 模型假設與簡化3 核心模型構建3.1 決策變量與參數定義3.2 目標函數3.3 約束條件4 模型求解與驗證4.1 求解策略4.2 驗證方法4.3 模型迭代優化5 方案實施與系統設計5.1 系統架構設計5.2 工作流程5.3 關鍵算法實現5.4 時序…