现代化企业级H5模板:Vite + Vue 3 + TypeScript 开箱即用
作为一名前端开发者,你是否厌倦了每次开始新项目时都要重新配置繁琐的工程化环境?是否希望有一个开箱即用、集成现代前端最佳实践的 H5 模板?今天给大家推荐一个非常棒的开源项目——vite-vue3-h5-template,它能帮你快速搭建高质量的移动端 H5 项目。
项目简介vite-vue3-h5-template 是一个基于 Vue 3、Vite、TypeScript 和 Pinia 构建的现代化企业级移动端 H5 模板。该项目采用了前沿的技术栈和工程化方案,专为追求高性能、可扩展性和可维护性的移动 Web 应用开发而设计。
无论你是独立开发者还是团队协作,这个模板都能为你提供强大的支撑和便利的开发体验。
核心特性一览🚀 现代化技术栈项目集成了当前最热门的前端技术:
Vue 3 Composition API - 更灵活的组件组织方式
Vite 7 - 极速的构建工具,开发体验飞一般
TypeScript - 强类型支持,提高代码质量和开发效率
Pinia - Vue 官方推荐的状态管理方案
UnoCSS - 高性能原子化 CSS 引擎
🏗️ Monorepo 架构采用 Mo ...
从“Prompt 搬运工”到“架构兜底人”:会用 AI 不算本事,会兜底才算
这两年刷技术社区,最常见的几个关键词就是「AI 提效」「十分钟上线一个营销页」「用 Prompt 写完一个项目」。
作为一个干了 8 年的前端,我当然承认 AI 带来的效率红利——我自己也在用 Cursor、Copilot、各种 LLM 写代码、补测试、查文档。但这两年下来,我越来越强烈地意识到一件事:
“会用 AI” 本身不是本事,能为 AI 产出的代码兜底,才是。
以前我们写代码,脑子里有清晰的模块边界、职责划分。现在有了 AI,很多人习惯的是先喂一段 Prompt,看 AI 回什么,再想办法塞进项目里。如果你只是这样用 AI,你得到的不是“提效”,而是更快地把项目写成一坨谁也不想维护的屎山。
下面我就从一个 8 年前端的视角,讲讲我自己是怎么看待「从 Prompt 搬运工到架构兜底人」这件事的。
要警惕 AI 只“跑通”不“善后”我现在几乎天天用 AI 写代码,但有一个前提:AI 给我的东西,默认是不可信的草稿。
我在日常工作里真切踩到、或者在别人代码里见过的几个典型坑,大概是这些:
副作用和资源释放
在 useEffect / 各种响应式监听里,AI 很喜欢 ...
OpenSpec:把“凭感觉写代码”变成“按规格交付”(Spec Coding 实战指南)
当你对 AI 说一句「帮我加个用户管理功能」时,它脑子里浮现的是“通用互联网公司 Demo”;你脑子里浮现的是“本公司 3 年沉淀 + 一堆历史债务”。—— 这就是 Vibe Coding 的鸿沟。
Vibe Coding:当“凭感觉写代码”遇上 AI先还原一个大家都心照不宣的场景。
你打开 Cursor / Claude Code / Copilot Chat,敲下:
1帮我实现一个用户管理模块,包含增删改查和权限控制。
几秒钟后,AI 秒回一坨代码:
User 只有 id/name/email
权限就是一个 role === 'admin' 的 if 判断
没有审计日志、没有状态机、也没考虑你项目里的那套 RBAC 体系
你只好接着聊:
「再加上用户状态:激活 / 禁用 / 删除。」
「权限别乱写,我们是 RBAC,不是简单 role 判断。」
「要有批量操作,还要事务,还有限流……」
三轮下来,你发现:
需求理解:AI 是按“常识”猜,而不是按你项目的“现实世界”来写;
设计方案:它永远倾向“最简单能跑”的实 ...
用一条哨兵线优雅实现 UniApp/Vue3 的 Tab 吸顶(告别 scroll 监听)
前言:吸顶交互为什么总是写得又复杂又不稳?在移动端(尤其是 UniApp 多端)做 Tab 吸顶,经常会遇到这些痛点:
状态判断难:什么时候进入吸顶?什么时候退出?临界点经常抖动或算不准
临界值难算:导航栏高度、状态栏安全区、不同机型差异,导致 scrollTop 阈值到处写魔法数
性能与维护差:onPageScroll / scroll 高频触发,回调里反复计算元素位置,逻辑越写越“重”
更好的思路是:不用监听滚动,不用自己算临界点,让浏览器/小程序引擎帮我们判断“某个元素是否越过了一条线”。
核心思路:一条 1px 的“哨兵线”在 Tab(或需要吸顶的内容)附近放一个几乎不可见的节点(例如 1px 高),把它当成“哨兵”。
然后做两件事:
用 IntersectionObserver 监听哨兵是否还“在观察区域内”,从而判断是否吸顶
通过 rootMargin(UniApp 对应 relativeToViewport/relativeTo 的 top 参数)把“顶部触发线”下移到 offsetTop(通常是导航栏 + 安全区高度)
你可以把它理解成这样(示意):
...
支付宝小程序弹层滚动锁定的 CSS 自救方案
背景支付宝小程序提供了 my.setPageScrollable(false) 来阻止底层页面滚动,但由于系统实现层面的差异,安卓与 iOS 对于滚动禁止的层级控制存在区别:
安卓端:采用 Webview 级滚动限制(全页面锁定),生效时界面及所有弹层均不可滚动,导致弹层内的 scroll-view 也无法滚动;
iOS 端:采用组件级滚动限制(局部锁定),当弹层激活时会智能区分层级,仅限制底层页面滚动而保持弹层可滚动。
这种平台差异会导致安卓端弹层内容无法滚动,而 iOS 端正常,体验不一致。为了保证遮罩弹层的沉浸体验,需要一套跨端一致的“纯 CSS”兜底方案。
my.setPageScrollable 介绍my.setPageScrollable 是支付宝小程序提供的全局滚动控制 API,可在当前页面维度禁止或恢复底层滚动。当传入 false 时页面不再跟随手势上下滚动,传入 true 则恢复默认行为。更多参数说明、平台差异和返回值请参考 官方文档。
最小 Demo1234567891011121314151617<template> <view cla ...
什么是Cursor Rules
在 Cursor 中,Cursor Rules 是一套由开发者编写的指令集合,用来告诉 AI 助手在项目里该如何工作。通过编写规则,我们可以把协作偏好、代码风格、依赖约束、测试要求全部提前说明,让后续的自动化协作更加稳定、可控、贴合团队习惯。当一条规则被触发后,规则中的内容会被附加到提示词中,为 AI 提供参考,无论是在自动补全、代码生成、重构还是错误修复时都能遵循这些规范。
Cursor Rules 的核心作用
统一规范:把代码格式、提交规范、文件命名等约束写进规则,让团队成员和 AI 助手都有章可循。
减少沟通成本:常用的注意事项(例如“生产环境配置不要提交”、“测试跑通后再提交”)写进规则后,AI 会自动遵守,不必反复提醒。
保护敏感操作:可以明确禁止删除某些目录、覆盖配置文件或访问外部网络。
提升上下文记忆:当项目有特殊依赖或约定(如自研脚本、部署流程),可以预先写入规则,避免 AI“摸索”浪费时间。
Cursor Rules 和 常规提示词的区别常规提示词:临时指令
功能:告诉 AI 当前任务要做什么。
示例:在对话框里说“帮我写一个 React 组件,记得加类型定义”。 ...
前端Vibe Coding探索
前言在前端开发领域,”效率” 与 “沉浸感” 始终是我们开发者追求的核心目标。随着 AI 工具与工作流协同技术的发展,一种全新的开发模式 —— Vibe Coding(氛围编码) 逐渐兴起。它不再局限于单一工具的效率提升,而是通过与 AI 的对话,去除程序员对于代码的介入,构建符合个人开发节奏、降低认知负荷的沉浸式开发环境。
传统的开发模式中,开发者需要花费大量时间在代码实现、调试、优化等繁琐工作上。而 Vibe Coding 的核心思想是让开发者能够通过自然语言表达编程意图,指导 AI 编写、测试、优化代码,从而专注于设计产品和思考创意,而非繁琐的代码实现。
其中,AI 编辑器 Cursor 与 MCP(Model Context Protocol,模型上下文协议) 的组合,成为前端 Vibe Coding 的核心实践方案。本文将深入探索这一开发模式,从概念解析到实际应用,帮助开发者构建更高效的开发工作流。
核心概念解析1. Vibe CodingVibe Coding 直译是 “氛围编码”,它作为一种新兴的编程范式,由 OpenAI 联合创始人、前特斯拉 AI 部门总监 Andre ...
使用 requestAnimationFrame 优化首页白屏问题
前言在前端开发中,白屏问题是影响用户体验的重要因素之一。特别是在首页加载大量内容时,用户可能会遇到长时间的白屏等待。本文将介绍如何使用 requestAnimationFrame 结合分帧渲染策略来优化首页白屏问题,提升用户访问体验。
什么是白屏问题?白屏问题是指用户访问网页时,在页面内容完全加载和渲染之前,浏览器显示空白页面的现象。这通常发生在:
页面需要渲染大量 DOM 节点
JavaScript 执行时间过长
CSS 样式计算复杂
网络请求阻塞页面渲染
白屏时间过长会严重影响用户体验,甚至导致用户流失。
requestAnimationFrame 简介requestAnimationFrame(简称 rAF)是浏览器提供的一个 API,用于在下次重绘之前执行动画或更新 DOM。它根据屏幕刷新率来执行回调函数,一般屏幕是 60Hz,也就是一秒执行 60 次回调函数。
与 setTimeout 的区别与 setTimeout 相比,requestAnimationFrame 有以下优势:
系统调度:由系统决定回调函数的执行时机,确保与屏幕刷新率同步
性能更好:不会在后台标签页中 ...
使用 defer 优化页面加载性能,告别白屏,实现秒加载!!!
前言在现代 Web 开发中,页面加载速度对用户体验至关重要。白屏时间过长是影响用户体验的重要因素之一。本文将介绍如何通过使用 defer 属性来优化页面加载性能,减少白屏时间,实现秒级加载效果。
什么是 defer 属性?defer 是 HTML 中 <script> 标签的一个布尔属性,它告诉浏览器在下载和执行脚本时不会阻塞 HTML 文档的解析。带有 defer 属性的脚本会在整个页面解析完成后,DOMContentLoaded 事件触发之前执行。
1<script src="script.js" defer></script>
defer 与其他脚本加载方式的对比1. 普通 script 标签1<script src="script.js"></script>
这种方式会阻塞 HTML 解析,直到脚本下载并执行完毕才会继续解析文档,容易造成白屏。
2. async 属性1<script src="script.js" async></scr ...
Vite 和 Webpack 对比:新一代构建工具为何更快?
核心区别:构建理念的根本不同最核心的区别可以概括为一句话:
Webpack:先打包,再启动开发服务器。
Vite:先启动开发服务器,再按需编译。
这个根本性的理念差异,导致了它们在开发体验上的巨大不同。下面我们通过一个流程图来直观感受:
flowchart TD
A[开发者执行启动命令] --> B{使用哪个工具?}
B -->|Webpack| C[开始打包]
C --> D[递归构建依赖图<br>包含所有模块]
D --> E[打包成 Bundle<br>内存/磁盘]
E --> F[启动 Dev Server]
F --> G[服务 Bundle 给浏览器]
G --> H[页面加载完成]
B -->|Vite| I[立即启动 Dev Server]
I --> J{浏览器请求页面}
J --> K[请求 HTML]
K --> L[返回 HTML]
L --> M[请求入口文件 ...







