2026/4/19 3:31:42
网站建设
项目流程
微网站建设计划书,做网站和app哪个简单,做视频网站违法吗,福州百度seo本文由TinyPro贡献者王晨光同学原创。
一、背景#xff1a;让 TinyPro 真正“走到掌心里”
TinyPro 是一套基于 TinyVue 打造的前后端分离后台管理系统#xff0c;支持菜单配置、国际化、多页签、权限管理等丰富特性。 TinyPro 在桌面端具备良好的体验和模块化架构#xf…本文由TinyPro贡献者王晨光同学原创。一、背景让 TinyPro 真正“走到掌心里”TinyPro 是一套基于TinyVue打造的前后端分离后台管理系统支持菜单配置、国际化、多页签、权限管理等丰富特性。TinyPro 在桌面端具备良好的体验和模块化架构但随着移动办公、平板展示等场景增多移动端体验的短板逐渐显现页面缩放不均衡布局出现溢出或错位模态框在小屏上遮挡内容图表和表格在横屏与竖屏间切换时无法自适应操作区过于密集不符合触控习惯。为此启动了TinyPro 移动端适配项目目标是在不破坏现有结构的前提下实现“一次开发跨端流畅”的体验。二、技术选型与总体架构本次移动端适配要求在复杂的中后台系统中实现「一次开发多端自适应」既要保证样式灵活又要维持可维护性和构建性能。在技术选型阶段综合评估了三种常见方案方案优点缺点纯 CSS 媒体查询简单直接、依赖少样式分散、逻辑重复、维护困难TailwindCSS 响应式类社区成熟、类名直观、生态完善样式表体积大、断点固定、不够灵活UnoCSS 原子化方案按需生成、性能极轻、断点与变体完全可定制需要自行配置规范与规则体系最终选择了UnoCSS Less 的混合架构UnoCSS负责通用布局、间距、排版等高频样式原子化写法提升开发效率Less 媒体查询用于模态框、导航栏等复杂场景的精细控制统一断点配置集中管理屏幕尺寸分级保持视觉一致性自定义变体max-bp支持“桌面端优先”策略通过 max-width 实现移动端自适应样式逻辑更直观。UnoCSS轻量、灵活、即时生成UnoCSS 是一个按需生成的原子化 CSS 引擎最大的特点是零冗余与高度可定制。不同于 TailwindCSS 的预编译方式UnoCSS 会在构建阶段根据实际使用的类名即时生成样式规则从而显著提升构建性能与灵活性.在配置中通过presetMini()与presetAttributify()组合使用使开发者既可以写div classp-4 text-center bg-gray-100 max-md:p-2/div也可以使用属性化语法div p4 textcenter bggray-100 max-md:p2/divpresetMini提供轻量原子类体系presetAttributify则允许以声明式方式书写样式更直观、组件化友好。断点配置与响应式策略TinyPro 的适配核心之一是在uno.config.ts中建立统一的断点体系并通过自定义max-bp前缀实现“桌面端优先”的响应式策略。constbreakpoints{sm:641px,// 手机小屏md:769px,// 平板竖屏lg:1025px,// 平板横屏 / 小型笔电xl:1367px,// 常规笔电2xl:1441px,// 高清笔电3xl:1921px,// 桌面大屏}并通过自定义variants扩展max-bp前缀:variants:[(matcher){constmatchmatcher.match(/^max-([a-z0-9]):/)if(match){constbpmatch[1]constvaluebreakpoints[bp]if(!value)returnreturn{matcher:matcher.replace(max-${bp}:,),parent:media (max-width:${value}),}}},]让开发者能自然地书写div classw-1/2 max-md:w-full/div含义默认宽度为 50%在宽度小于 769px 的设备上改为 100%。TinyPro 采用「桌面端优先max-width」的布局策略默认以桌面端布局为基础在移动设备上再进行针对性优化。相比常见的「移动端优先min-width」方式这种做法更符合中后台系统的特性同时让 UnoCSS 的断点逻辑更直观并确保主屏体验的稳定性。三、样式与编码策略优先级简单场景使用 UnoCSS 原子类。复杂样式使用 Less 媒体查询。布局与滚动首页及核心业务模块完成适配小屏模式下侧边栏默认收起、导航栏折叠确保主要内容可见。页面主要容器避免横向滚动必要时在小屏下开启局部横向滚动。表格与大区块在不同断点下自动调整宽度、栅格与间距小屏下支持横向滚动分页与密度支持响应式控制。图表自适应图表组件接入resize监听在侧边栏展开/收起、窗口缩放、语言切换等场景下保持自适应。小屏下使用vw宽度与较小字号保证图表展示效果与可读性。表单与模态框接入useResponsiveSize()控制弹窗在小屏下铺满显示大屏保持固定宽度。表单项在不同断点下动态调整排布与间距优化触控体验。导航与交互小屏下隐藏导航栏非关键元素操作聚合到折叠菜单。移动端默认收起侧边菜单栏提升主要内容展示区域。性能优化在responsive.ts中对resize事件处理增加节流机制避免窗口缩放等场景下的频繁无效渲染。四、常用代码片段基于栅格系统 响应式断点工具类通过为 tiny-row 和 tiny-col 添加不同屏幕宽度下的样式规则实现自适应布局tiny-layout tiny-row classflex justify-center max-md:flex-wrap tiny-col classw-1/4 max-md:w-1/2 max-sm:w-full max-md:mb-4···/tiny-col ··· tiny-col classw-1/4 max-md:w-1/2 max-sm:w-full max-md:mb-4···/tiny-col /tiny-row /tiny-layoutdiv classtheme-line flex max-sm:grid max-sm:grid-cols-4 max-sm:gap-2 div··· /div /div基于 响应式工具类 自定义响应式 Hook,解决(1)对话框宽度自适应;(2)表格尺寸和密度自适应;(3)逻辑层响应式控制template section classp-4 sm:p-6 lg:p-8 max-sm:text-center tiny-dialog :widthmodalSize.../tiny-dialog /section /template script setup langts import { useResponsiveSize } from /hooks/responsive const { modalSize } useResponsiveSize() // 小屏 100%大屏 768px /scripttemplate div classcontainer tiny-grid refgrid :fetch-datafetchDataOption :pagerpagerConfig :sizegridSize :auto-resizetrue aligncenter ··· /tiny-grid /div /template script setup langts import { useResponsiveSize } from /hooks/responsive const { gridSize } useResponsiveSize() // 小屏为mini grid大屏为medium grid /script通过useResponsive获取屏幕断点状态sm/md/lg如在模板中结合v-if!lg控制分隔线的渲染从而实现了小屏下纵向菜单才显示分隔线的效果template ul classright-side :class{ open: menuOpen } !-- 小屏下才显示分隔线 -- li v-if!lg div classdivider/div /li ··· /ul /template script langts setup import { useResponsive } from /hooks/responsive const { lg } useResponsive() /script五、结语通过本次移动端适配 TinyPro 实现了“从桌面到掌心”的统一体验开发者可以继续沿用熟悉的组件体系与布局方式同时享受 UnoCSS 带来的原子化灵活性与性能优势。在不改变核心架构的前提下TinyPro 变得更轻盈、更顺滑也更符合移动时代的使用场景。关于OpenTiny欢迎加入 OpenTiny 开源社区。添加微信小助手opentiny-official 一起参与交流前端技术OpenTiny 官网https://opentiny.designOpenTiny 代码仓库https://github.com/opentinyTinyPro源码https://github.com/opentiny/tiny-pro欢迎进入代码仓库 StarTinyPro、TinyEngine、TinyVue、TinyNG、TinyCLI、TinyEditor如果你也想要共建可以进入代码仓库找到 good first issue标签一起参与开源贡献~