基于Nuxt 4与Shadcn/ui的现代全栈仪表板开发实战

news2026/5/15 16:13:52
1. 项目概述一个现代全栈仪表板的技术栈选择最近在做一个内部管理后台需要快速搭建一个既美观又功能齐全的仪表板。我的核心需求很明确开发要快、代码质量要高、用户体验要好并且要能轻松应对多语言场景。在评估了市面上各种方案后我最终选择基于Shoyers/nuxt-shadcn-tailwind-i18n-dashboard这个模板进行二次开发。这不仅仅是一个简单的“启动模板”它更像是一个经过深思熟虑的、面向生产环境的现代全栈应用架构最佳实践集合。这个模板的核心价值在于它精准地整合了当前 Vue/Nuxt 生态中最前沿、最实用的几项技术Nuxt 4作为全栈框架基石Shadcn/ui提供了一套可定制、可访问的高质量组件Tailwind CSS 4负责原子化样式而i18n则解决了国际化这个在后台系统中越来越普遍的需求。此外它还预置了 TypeScript、ESLint、Prettier、Zod 甚至 Sentry 等工具开箱即用省去了大量繁琐的配置时间。对于使用 Cursor 或 Claude Code 这类 AI 辅助编程工具的开发者来说这样一个结构清晰、类型完备的项目能让 AI 更好地理解上下文生成更准确的代码极大提升开发效率。接下来我会详细拆解这个模板的每一部分分享我是如何理解并运用这套技术栈的以及在实战中遇到的一些坑和解决方案。无论你是想快速启动一个新项目还是想学习如何将这些流行的工具优雅地组合在一起相信这篇分享都能给你带来一些启发。2. 核心架构与工具链深度解析2.1 为什么是 Nuxt 4全栈开发的新范式选择 Nuxt 4 作为基础框架是我做这个决定时最没有犹豫的一点。在 Vue 3 和 Nitro 服务器的加持下Nuxt 4 带来了一种全新的全栈开发体验。它不再是传统的“前端框架”而是一个应用框架。这意味着你可以在同一个项目中用同一种语言TypeScript和心智模型同时处理前端页面渲染、API 路由、服务器逻辑甚至数据库操作。对于仪表板这类应用一个典型的场景是你需要一个页面展示用户数据表格。在 Nuxt 4 中你可以在/pages/users.vue中编写页面组件同时在/server/api/users.get.ts中编写获取用户数据的 API 逻辑。它们共享类型定义前端组件可以直接通过useFetch(‘/api/users’)调用类型安全且无需配置额外的代理。这种紧密的集成将开发流程极大地简化了。模板默认启用了 Nuxt 的“Nuxi”开发工具命令行体验非常流畅热更新速度也很快这对于需要频繁调整 UI 的仪表板开发来说至关重要。注意Nuxt 4 默认使用基于文件的路由。这意味着你的pages目录结构直接决定了路由。例如pages/dashboard/index.vue对应路由/dashboard而pages/users/[id].vue则对应动态路由/users/:id。理解并利用好这个约定能让你几乎不用手动配置路由。2.2 组件与样式Shadcn/ui 与 Tailwind CSS 4 的化学反应UI 部分是仪表板的脸面也是开发中耗时最多的部分之一。传统的组件库如 Element Plus 或 Ant Design Vue 虽然功能强大但往往风格固定、体积庞大深度定制起来比较麻烦。而Shadcn/ui的理念完全不同——它不是一个需要npm install的包而是一套可以复制粘贴到你项目中的高质量组件代码。这个模板已经集成了 Shadcn/ui for Vue。它的工作方式是通过一个 CLI 工具你可以将需要的组件比如Button,Card,DataTable“添加”到你的项目中。实际上CLI 会将组件的源代码Vue 单文件组件和相关的样式定义直接生成到你的项目目录里通常是/components/ui/。这样做的好处是完全可控你可以看到每一行代码并随意修改它来满足你的设计需求。按需使用只用引入你需要的组件没有多余的捆绑代码。样式统一所有组件都基于 Tailwind CSS 和vueuse/core等工具构建确保了行为和样式的一致性。而Tailwind CSS 4是这套样式的基石。第四代版本在性能和开发体验上都有提升。模板的配置非常干净主要在tailwind.config.ts中定义了主题色与 Shadcn/ui 的默认主题匹配、字体家族等。在开发仪表板时我大量使用了 Tailwind 的响应式工具如md:,lg:和状态工具如hover:,focus:快速构建出自适应且交互细腻的界面。Shadcn/ui 组件本身也是用 Tailwind 工具类编写的因此你可以在使用组件的同时无缝地使用 Tailwind 来调整细节这种体验非常统一和高效。2.3 国际化i18n与类型安全Zod 的优雅实践国际化是现代应用尤其是面向全球团队或客户的管理后台的标配。模板使用了nuxtjs/i18n模块这是 Nuxt 生态中功能最全面的国际化解决方案。它的配置直观支持路由前缀、语言检测、懒加载翻译文件等高级功能。在模板中语言文件被放置在/locales目录下例如en.json和zh-CN.json。在组件中你可以通过const { t } useI18n()来获取翻译函数。一个很棒的实践是模板将常见的仪表板词汇如“Dashboard”, “Users”, “Settings”提前定义好了这为快速开发奠定了基础。我个人的经验是在项目初期就规划好 i18n 的键名结构例如按模块分组dashboard.header.title,user.table.columns.name并在团队内达成一致能有效避免后期键名混乱的问题。Zod的引入则是为了将类型安全延伸到运行时和数据边界。在传统的 Vue 项目中我们可能用 TypeScript 接口定义了一个表单的数据结构但表单验证仍然需要另一套规则如 VeeValidate。Zod 允许你用一套语法同时定义 TypeScript 类型和运行时验证模式。例如你可以定义一个用户登录的 Schema// schemas/auth.ts import { z } from zod; export const loginSchema z.object({ email: z.string().email(请输入有效的邮箱地址), password: z.string().min(6, 密码至少6位), rememberMe: z.boolean().optional(), }); // 这会自动推断出以下类型 // type LoginInput z.infertypeof loginSchema;然后你可以在组件中直接使用这个loginSchema来验证表单数据同时LoginInput类型可以在整个 TypeScript 项目中复用确保了从前端表单到 API 请求体类型的一致性。模板中已经配置了nuxt-zod模块使得在 Nuxt 的 API 路由和组件中使用 Zod 更加方便。3. 开发环境与工程化配置实战3.1 从零开始项目初始化与核心依赖安装虽然可以直接克隆模板仓库但理解其初始化过程有助于你后续的定制。假设我们从一个空的 Nuxt 4 项目开始核心命令如下# 使用 Nuxt 官方脚手架初始化项目 npx nuxilatest init my-dashboard cd my-dashboard # 安装核心依赖 npm install -D tailwindcsslatest tailwindcss/vite npm install nuxtjs/i18n nuxtjs/color-mode vueuse/core vueuse/nuxt npm install zod nuxt-zod npm install nuxtjs/sentry接下来是关键的 Shadcn/ui 初始化。由于它不是一个 npm 包我们需要先安装其 CLI 工具然后在项目中进行配置# 安装 Shadcn/ui CLI npm install -D shadcn-vuelatest # 初始化配置这会在项目根目录生成 components.json 文件 npx shadcn-vuelatest init在执行init命令时CLI 会交互式地询问一些配置比如样式来源选择 Tailwind、是否使用 CSS 变量推荐开启以支持主题、组件目标目录等。模板中的components.json文件就是这次初始化的结果它定义了组件生成的规则。完成这些后你就可以开始添加具体的 UI 组件了。例如添加一个按钮和一张卡片npx shadcn-vuelatest add button npx shadcn-vuelatest add card这会在/components/ui下生成Button.vue、Card.vue等文件及其依赖的样式工具。至此项目的基础骨架就搭建完成了。3.2 代码质量守护神ESLint 与 Prettier 的协同配置模板预置了严格的代码规范工具这对于团队协作和长期维护至关重要。它使用了nuxt/eslint这个 Nuxt 官方维护的 ESLint 配置包它集成了针对 Vue 3、Nuxt 和 TypeScript 的最佳实践规则。配置文件.eslintrc.cjs通常很简单module.exports { root: true, extends: [nuxt/eslint] };Prettier则负责代码格式化。模板的.prettierrc配置与 ESLint 规则是兼容的避免了格式化与静态检查之间的冲突。一个高效的开发流程是结合编辑器的“保存时自动格式化”功能在 VSCode 或 Cursor 中安装 ESLint 和 Prettier 插件并启用这样每次保存文件代码都会自动被格式化和进行初步的语法检查。实操心得我强烈建议将npm run lint和npm run typecheck添加到你的 CI/CD 流水线中。在模板的package.json里这些脚本已经定义好了。npm run lint会检查代码风格并尝试自动修复npm run typecheck会运行 Nuxt 的 TypeScript 类型检查。在合并代码前强制执行这些检查可以避免许多低级错误进入代码库。3.3 错误监控Sentry 的集成与使用对于线上应用错误监控是不可或缺的。模板集成了 Sentry这是一个功能强大的应用监控平台。集成过程主要通过nuxtjs/sentry模块完成配置写在nuxt.config.ts中// nuxt.config.ts export default defineNuxtConfig({ modules: [nuxtjs/sentry], sentry: { dsn: process.env.SENTRY_DSN, // 从环境变量读取 DSN environment: process.env.NODE_ENV || development, // 其他配置如启用性能监控、设置采样率等 sourceMapUploadOptions: { org: your-org, project: your-project, authToken: process.env.SENTRY_AUTH_TOKEN, }, }, });集成后Nuxt 应用在客户端和服务器端发生的未捕获错误都会被自动捕获并上报到 Sentry 控制台。你还可以在代码中手动捕获错误或记录信息// 在组件或 composable 中 import * as Sentry from sentry/vue; try { // 一些可能出错的操作 } catch (err) { Sentry.captureException(err); // 同时进行用户友好的错误处理 }注意事项务必保护好你的SENTRY_DSN和SENTRY_AUTH_TOKEN不要将其提交到公开的代码仓库。应该使用.env文件管理并将.env添加到.gitignore中。模板通常已经包含了.env.example文件你需要复制一份为.env.local并填入自己的密钥。4. 仪表板核心功能模块实现4.1 布局系统与导航菜单构建一个典型的仪表板布局通常包含顶部导航栏、侧边栏和主内容区。模板提供了一个良好的起点。我们首先利用 Nuxt 的布局系统在/layouts/default.vue中定义整个应用的骨架。!-- layouts/default.vue -- template div classmin-h-screen bg-background !-- 顶部导航栏 -- AppHeader / div classflex !-- 侧边栏导航在移动端可能隐藏 -- AppSidebar classhidden lg:block / !-- 主内容区 -- main classflex-1 p-6 slot / !-- 页面内容将在这里渲染 -- /main /div /div /templateAppHeader和AppSidebar是放在/components目录下的全局组件。侧边栏的导航菜单项数据我推荐集中管理在一个配置文件中这样便于维护和配合 i18n// constants/navigation.ts export const mainNavItems [ { title: dashboard, // i18n 键名 icon: LayoutDashboard, to: /, }, { title: users, icon: Users, to: /users, }, { title: settings, icon: Settings, to: /settings, }, ] as const;在AppSidebar组件中遍历这个数组使用NuxtLink生成导航链接并使用useI18n().t()来翻译标题。图标可以使用lucide-vue-next库这是 Shadcn/ui 推荐的图标集风格统一且丰富。4.2 数据表格与图表集成实战仪表板的核心是数据展示。对于表格Shadcn/ui 提供了DataTable组件的基础但它需要配合tanstack/vue-table这个强大的表格库来使用。模板可能已经集成了相关示例。实现一个功能完整的数据表格通常包含以下步骤定义列使用createColumnHelper定义每一列的标题、数据键、单元格渲染方式等。获取数据在setup中使用useFetch从你的 API 端点获取数据。状态管理管理表格的分页、排序、过滤等状态。tanstack/vue-table提供了相应的 Hook。渲染将定义好的列、数据和状态传递给DataTable组件。对于图表我推荐使用vue-chartjs或apexcharts/vue3。以 ApexCharts 为例首先安装依赖npm install apexcharts vue3-apexcharts。然后在你的仪表板页面组件中引入并创建一个图表组件!-- components/ChartSales.vue -- template div VueApexCharts :optionschartOptions :seriesseries / /div /template script setup langts import VueApexCharts from vue3-apexcharts; const chartOptions ref({ chart: { type: line, height: 350 }, xaxis: { categories: [Jan, Feb, Mar, Apr, May] }, // ... 其他配置 }); const series ref([ { name: Sales, data: [30, 40, 35, 50, 49] } ]); /script将数据表格和图表组件组合在你的仪表板首页pages/index.vue一个数据丰富的仪表板界面就初具雏形了。4.3 表单处理与状态管理策略仪表板中充满了各种表单创建用户、编辑配置、筛选数据等。我采用的方法是组合式函数Composables Zod 验证 状态管理。首先为每个主要的表单创建一个对应的 Zod Schema如前文所示的loginSchema。然后创建一个可复用的组合式函数来处理表单的通用逻辑// composables/useForm.ts import type { Ref } from vue; import { z, type ZodSchema } from zod; export function useFormT extends ZodSchema(schema: T, initialValues?: z.inferT) { const form ref(initialValues || {}); const errors refRecordstring, string({}); const isSubmitting ref(false); const validate () { const result schema.safeParse(form.value); if (!result.success) { const errs: Recordstring, string {}; result.error.errors.forEach((err) { if (err.path[0]) { errs[err.path[0] as string] err.message; } }); errors.value errs; return false; } errors.value {}; return true; }; const submit async (onSubmit: (data: z.inferT) Promisevoid) { if (!validate()) return; isSubmitting.value true; try { await onSubmit(form.value as z.inferT); } catch (error) { // 处理提交错误可以上报到 Sentry console.error(Form submission error:, error); } finally { isSubmitting.value false; } }; return { form, errors, isSubmitting, validate, submit }; }在组件中你可以这样使用它!-- pages/users/create.vue -- template form submit.preventhandleSubmit div label foremail邮箱/label input idemail v-modelform.email typeemail / p v-iferrors.email classtext-red-500{{ errors.email }}/p /div !-- 其他字段 -- Button typesubmit :disabledisSubmitting创建用户/Button /form /template script setup langts import { userCreateSchema } from ~/schemas/user; const { form, errors, isSubmitting, submit } useForm(userCreateSchema); const handleSubmit () { submit(async (data) { // 调用 API 创建用户 await $fetch(/api/users, { method: POST, body: data }); // 成功后跳转或提示 navigateTo(/users); }); }; /script对于跨组件的状态共享比如用户登录状态、全局通知Nuxt 4 推荐使用 State Management 章节中提到的useState或useCookie等可组合项。对于更复杂的状态可以考虑Pinia但在这个模板架构下useState和服务器端可组合项通常已经足够。5. 部署优化与常见问题排查5.1 构建优化与性能调优Nuxt 4 默认的构建输出已经非常优化但对于生产环境我们还可以做一些事情。首先确保你的nuxt.config.ts中开启了必要的优化export default defineNuxtConfig({ // ... 其他配置 nitro: { // Nitro 服务器配置 preset: node-server, // 根据你的部署环境选择如 vercel, netlify 等 }, // 路由规则预渲染适用于静态内容 routeRules: { /dashboard: { prerender: true }, // 对不常变的内容进行预渲染 /api/**: { cors: true }, // API 路由配置 }, // 模块配置 modules: [nuxtjs/tailwindcss, nuxtjs/i18n, nuxtjs/sentry], });Tailwind CSS 4 的优化在生产构建时Tailwind 会通过 PurgeCSS或它自己的清除引擎来移除所有未使用的样式。确保你的tailwind.config.ts中的content配置正确包含了所有可能包含 Tailwind 类名的文件路径export default { content: [ ./components/**/*.{vue,js,ts}, ./layouts/**/*.vue, ./pages/**/*.vue, ./app.vue, // ... 其他你可能使用 Tailwind 的文件 ], }i18n 的优化nuxtjs/i18n支持懒加载语言包。在配置中设置lazy: true和langDir路径可以确保用户只加载当前需要的语言文件减少初始包体积。5.2 部署到常见平台指南这个模板可以部署到任何支持 Node.js 或静态托管的平台。Vercel / Netlify (推荐)这是最简单的部署方式。将你的代码推送到 GitHub/GitLab在 Vercel 或 Netlify 中导入项目。它们能自动识别 Nuxt 项目并配置好构建和部署命令。你需要设置环境变量如SENTRY_DSN在平台的控制台中。Node.js 服务器运行npm run build后会在.output目录生成一个独立的 Node.js 应用。你可以将这个目录复制到你的服务器上然后运行node .output/server/index.mjs来启动服务。使用 PM2 等进程管理工具来保持应用常驻。静态托管如果你的仪表板主要是静态内容或者你使用了 Nuxt 的generate命令npx nuxt generate来预渲染所有页面那么你可以将生成的dist目录部署到 GitHub Pages、Cloudflare Pages 等静态托管服务。5.3 常见问题与解决方案速查表在实际开发中你可能会遇到以下问题。这里是我遇到的一些典型情况及其解决方法问题现象可能原因解决方案Shadcn/ui 组件样式不生效Tailwind CSS 未正确编译或类名冲突。1. 检查tailwind.config.ts中的content路径是否包含了组件目录。2. 运行npm run dev后在浏览器开发者工具中检查该元素应用的样式确认 Tailwind 的样式文件是否被加载。i18n 切换语言后页面不刷新可能是组件内使用了非响应式的翻译方式。确保在setup中使用const { t, locale } useI18n()并在模板中使用t(‘key’)。使用locale.value来切换语言它是响应式的。对于路由标题等可以使用useI18n提供的setLocale方法。TypeScript 类型报错找不到模块/TypeScript 路径别名未配置。Nuxt 4 默认配置了~和别名指向项目根目录。确保你的tsconfig.json继承了 Nuxt 生成的配置。如果问题依旧检查导入语句是否正确或重启 TypeScript 语言服务器在编辑器中重启或运行npm run typecheck。Sentry 在开发环境上报了大量错误开发环境也启用了 Sentry且可能包含了本地错误。在nuxt.config.ts中根据环境变量process.env.NODE_ENV或process.env.SENTRY_ENVIRONMENT来条件性地配置 Sentry或者在 Sentry 控制台设置过滤规则忽略来自development环境的错误。构建后页面路由 404部署到静态托管时未配置重定向规则。对于 SPA 或预渲染站点你需要配置服务器将所有非文件请求重定向到index.html。在 Vercel/Netlify 上Nuxt 会自动生成正确的vercel.json或_redirects文件。如果是自托管需要配置 Nginx 或 Apache 的try_files或FallbackResource规则。使用useFetch在服务器端获取数据时报错可能尝试在服务器端访问了仅客户端的 API如localStorage。使用process.client或process.server进行环境判断。或者将数据获取逻辑放在onMounted生命周期钩子中确保其在客户端执行。对于需要在服务器端获取的数据确保 API 端点/server/api是可达的。5.4 个人经验与进阶技巧经过几个项目的实践我对这套技术栈有几点深刻的体会拥抱组合式函数将可复用的逻辑如表单处理、数据获取、工具函数封装成组合式函数放在/composables目录下。这能让你的组件保持简洁逻辑高度复用并且得益于 Vue 3 的响应式系统性能也很好。善用server/目录Nuxt 4 的server/目录是你的超级武器。不要把所有的后端逻辑都塞进 API 路由。可以创建server/utils/来存放数据库连接、业务逻辑函数创建server/middleware/来处理认证、日志等全局逻辑。这能让你的后端代码和前端一样结构清晰。类型安全贯穿始终从 Zod Schema 生成 TypeScript 类型在 API 路由的输入输出、前端useFetch的请求响应中复用这些类型。这能最大程度地减少运行时错误并提升开发体验。利用 AI 辅助编程正如模板关键词中提到的cursor和claude-code当你使用这套结构清晰、类型完备的模板时AI 助手能更好地理解你的项目上下文。你可以直接让 AI 帮你生成符合 Shadcn/ui 风格的组件代码或者根据 Zod Schema 生成表单组件效率提升非常明显。主题定制并不难Shadcn/ui 基于 CSS 变量和 Tailwind。如果你想定制一套全新的主题色不要去手动修改每个组件。只需在tailwind.config.ts的theme.extend.colors中覆盖原生的颜色变量如primary,secondary并在app.css中定义对应的 CSS 变量即可。所有组件都会自动适配新的主题。最后这个模板是一个优秀的起点但绝不是终点。随着项目复杂度的增加你可能会需要引入更专业的状态管理、测试框架如 Vitest、E2E 测试如 Playwright等。但无论如何由 Nuxt 4、Shadcn/ui、Tailwind CSS 和 TypeScript 构成的这个坚实核心足以支撑起一个从原型到成熟产品的完整开发生命周期。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2608959.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…