Naive UI 入门实战:安装、全局注册与按需引入完整指南
前端UI组件【免费下载链接】naive-uiA Vue 3 Component Library. Fairly Complete. Theme Customizable. Uses TypeScript. Fast.项目地址https://gitcode.com/gh_mirrors/na/naive-ui点击查看免费下载本指南以 naive-ui 仓库中 build/loaders/test/test.md 的 Get Started 文档为核心骨架系统讲解从零接入 Naive UI 的标准流程npm 安装、在入口文件中全局注册插件、以及面向生产构建的按需引入与 Tree Shaking 方案。读完本文你将掌握 Naive UI 的最小可运行接入方式、其install插件的底层注册机制src/create.ts并了解 Vue 3 下完整可用、主题可定制、TypeScript 友好的工程化用法。一、环境前提Naive UI 仅支持 Vue 3在动手安装之前先明确版本边界。官方安装文档demo/pages/docs/installation/enUS/index.md明确指出naive-ui 只支持 Vue 3。如果你正在使用 Vue 2 项目需要另寻其他组件库。这一点在仓库的工程声明中同样可以验证package.json 的peerDependencies声明为vue: ^3.0.0即安装时要求宿主项目提供 Vue 3 运行时engines字段要求node 20这是仓库当前版本v2.45.2的开发与构建基线项目描述为 A Vue 3 Component Library. Fairly Complete. Theme Customizable. Uses TypeScript. Fastpackage.json。仓库的源码全部使用 TypeScript 编写入口 src/index.ts 汇出了组件、组合式 APIcomposables、create工厂、主题系统darkTheme/lightTheme/createTheme、多语言locales等全部公共 API。这也是后文按需引入可以逐模块import的前提。二、安装一条命令引入 naive-ui原文档的第一步是安装npm install --save-dev naive-ui需要说明的是--save-dev并非必需。若使用 npm 的默认行为直接执行官方推荐命令即可npm i naive-ui安装完成后你可以在package.json的dependencies中看到naive-ui及其版本号当前仓库版本为 2.45.2。仓库本身使用 pnpm 管理依赖packageManager: pnpm11.10.0因此如果你的项目同样使用 pnpm也可以pnpm add naive-ui可选配套字体与图标为了让界面呈现与文档一致的效果官方还推荐两个配套依赖字体npm i vfontsnaive-ui 默认字体方案图标推荐使用 xicons 图标库如vicons/ionicons5、vicons/fluent仓库 demo 中即大量使用vicons/fluent的图标见 demo/pages/docs/installation/enUS/index.md 的组件示例。这两个是可选依赖不影响 Naive UI 本身运行。三、全局注册入口文件的经典三行接入原文档给出的最小使用方式是在入口 JS 文件中加入三行代码import naive from naive-ui import naive-ui/dist/lib/index.css Vue.use(naive)其中import naive from naive-ui导入默认导出对象——它同时是一个插件带有install方法import naive-ui/dist/lib/index.css引入组件库的全局样式Vue.use(naive)触发 Vue 插件的install将全部组件注册为全局组件。3.1 Vue 3 语法提醒Vue.use(naive)是 Vue 2 时代的插件挂载写法。在 Vue 3 中全局插件的挂载统一使用app.use因此入口文件的实际写法通常是import { createApp } from vue import naive from naive-ui import naive-ui/dist/lib/index.css const app createApp(App) app.use(naive) app.mount(#app)在script setup的 SFC 中全局注册后的组件可以直接以模板形式使用无需手动import与components声明例如n-button、n-input。3.2 底层机制install 到底注册了什么从源码看import naive from naive-ui的默认导出定义在 src/preset.tsimport * as components from ./components import create from ./create const naive create({ components: Object.keys(components).map( key components[key as keyof typeof components] ) }) export default naive export const install naive.install它把 src/components.ts 中汇出的全部组件收集起来交给create工厂生成一个插件实例。create的实现位于 src/create.ts关键逻辑如下function create({ componentPrefix N, components [] }: NUiCreateOptions {}): NUiInstance { const installTargets: App[] [] function registerComponent(app, name, component) { const registered app.component(componentPrefix name) if (!registered) { app.component(componentPrefix name, component) } } function install(app: App): void { if (installTargets.includes(app)) return installTargets.push(app) components.forEach((component) { const { name, alias } component registerComponent(app, name, component) if (alias) { alias.forEach((aliasName) registerComponent(app, aliasName, component)) } }) } return { version, componentPrefix, install } }从中可以读出三条重要事实注册规则所有组件默认以N为前缀注册为全局组件如NButton、NInput对应模板中的n-button、n-input组件自身声明的alias也会一并注册幂等保护installTargets数组记录已安装的 App 实例同一 App 重复app.use(naive)会被直接跳过不会重复注册前缀可定制create接受componentPrefix选项因此你也可以通过create({ componentPrefix: X })生成自定义前缀的插件实例。3.3 CSS 引入的必要性与免 CSS说明import naive-ui/dist/lib/index.css这行在旧版本中用于引入全量样式。需要注意当前版本v2.45.2的 README 已经声明you dont need to import any CSS to use the components——Naive UI 的样式体系基于 css-render 在运行时按需注入仓库使用css-render与css-render/plugin-bem见 src/_utils/cssr/index.ts这也是其无需 webpack loader、无需预处理器变量的主题定制方案的基础。因此在实际接入时全量注册 运行时样式注入通常只需app.use(naive)即可样式由组件在挂载时自动生成若你的构建链确实需要显式样式文件也可以按构建产物引入dist、es、lib目录均会被发布见 package.json 的files字段。四、从全量到按需Tree Shaking 与直接引入全量app.use(naive)会把 90 个组件全部注册进应用。对于追求包体积的线上项目官方更推荐按需引入。官方文档demo/pages/docs/import-on-demand/enUS/index.md说明了 Naive UI 对组件、多语言、主题三者的 Tree Shaking 支持Naive UI supports tree shaking for components, locales and themes. By default the component theme is light, locale is enUS, and no extra imports are needed.4.1 组件直接引入SFC 中在script setup中逐个引入所需组件script setup import { NConfigProvider, NInput, NDatePicker, NSpace } from naive-ui // 主题按需组合 import { createTheme, inputDark, datePickerDark } from naive-ui // 语言与日期语言 import { zhCN, dateZhCN } from naive-ui /script template n-config-provider :themedarkTheme :localezhCN :date-localedateZhCN n-space vertical n-input / n-date-picker / /n-space /n-config-provider /template对应地各组件模块均从各自目录的 index.ts 汇出xxxProps、组件本体与类型例如 src/button/index.ts 导出NButton、buttonProps与ButtonProps/ButtonSlots类型。这意味着类型提示完整ButtonProps、ButtonSlots等公共类型均从 src/button/index.ts 汇出见 src/button/index.ts 中的export type * from ./src/public-types未引入的组件不会进入最终 bundle实现 Tree Shaking。4.2 自动按需引入推荐工程方案对于 SFC 开发官方推荐两个 unpluginunplugin-auto-import自动引入 API如useMessage、useDialog等unplugin-vue-components自动解析模板中使用的组件并逐个引入。在 Vite 的vite.config.ts中配置摘自 demo/pages/docs/import-on-demand/enUS/index.md 的示例import vue from vitejs/plugin-vue // 按需引入组件与 API import Components from unplugin-vue-components/vite import AutoImport from unplugin-auto-import/vite // 解析器 import { NaiveUiResolver } from unplugin-vue-components/resolvers export default defineConfig({ plugins: [ vue(), AutoImport({ resolvers: [NaiveUiResolver()] }), Components({ resolvers: [NaiveUiResolver()] }) ] })这样模板中写n-button即可自动完成引入与注册无需手动import同时保持 Tree Shaking 收益。4.3 面向命令式 API 的 discrete 引入Naive UI 的message、dialog、notification、loadingBar等组件支持脱离模板的命令式调用为此提供了createDiscreteApi见 src/discrete/index.ts。它支持按需传入组件集合例如import { createDiscreteApi } from naive-ui const { message } createDiscreteApi([message]) message.success(Hello Naive UI)DiscreteApi与DiscreteApiOptions类型定义在 src/discrete/src/interface.ts。这种方式尤其适合在非组件上下文如工具模块中调用 UI 反馈。五、验证与扩展阅读接入完成后可以这样验证是否成功在任意页面使用n-button typeprimaryHello Naive UI/n-button页面出现带 Naive UI 默认主题的按钮即表示注册成功打开 Vue DevtoolsApp组件树上应能看到以N前缀注册的组件检查构建产物体积全量注册 vs 按需引入的差异可以在vite build的产物报告中直观对比。如需继续深入推荐阅读仓库中的以下内容src/create.ts插件工厂与组件注册的完整实现含componentPrefix定制src/preset.ts默认全量插件的组装方式demo/pages/docs/installation/enUS/index.md官方安装文档含 UMD、字体、图标、设计资源demo/pages/docs/import-on-demand/enUS/index.md按需引入与自动导入的完整示例demo/pages/docs/customize-theme主题定制createTheme、darkTheme等主题相关源码位于 src/themes 与 src/stylesdemo/pages/docs/ssr服务端渲染接入指南仓库在 playground/ssr 提供了可运行的 SSR 示例工程。六、常见问题速查问题说明Vue.use报错说明你在 Vue 3 环境使用了 Vue 2 写法应改为app.use(naive)组件无样式确认未依赖旧版全量 CSS 方式时的样式注入是否正常若显式引入样式请使用与构建产物匹配的路径想要自定义组件前缀使用create({ componentPrefix: X })生成自定义插件见 src/create.ts包体积敏感使用按需引入Tree Shaking或 unplugin 自动导入方案而不是全量app.use(naive)组件未生效命令式 API检查是否使用了createDiscreteApi而非模板组件七、小结围绕build/loaders/test/test.md这份极简 Get Started本文把它扩展为一条完整的接入链路安装 → 全局注册附底层install机制剖析→ 按需引入Tree Shaking / unplugin 自动导入→ 命令式 APIdiscrete→ 验证与排错。无论你是快速原型还是大型生产项目都可以依据 src/create.ts、src/preset.ts、demo/pages/docs/import-on-demand/enUS/index.md 等仓库证据选择适合自己的注册策略并在 Vue 3 TypeScript 的工程中获得完整的类型支持与主题定制能力。赞分享前端UI组件【免费下载链接】naive-uiA Vue 3 Component Library. Fairly Complete. Theme Customizable. Uses TypeScript. Fast.项目地址https://gitcode.com/gh_mirrors/na/naive-ui点击查看免费下载相关推荐Element UIVue 2快速上手指南完整引入、按需加载与全局配置实战Element UIVue 2快速上手指南完整引入、按需加载与全局配置实战 本文基于 element ui 仓库Vue 2.x 组件库当前仓库版本 2前端UI组件设计系统Element UI 快速上手Vue 2 项目完整引入、按需加载与全局配置实战指南Element UI 快速上手Vue 2 项目完整引入、按需加载与全局配置实战指南 本文以 Element仓库包名 element ui 版本 2.15.前端UI组件设计系统Ant Design Vue 4.x 入门指南项目创建、组件注册与按需引入全解析Ant Design Vue 4.x 入门指南项目创建、组件注册与按需引入全解析 本篇基于 ant design vue 仓库的官方入门文档 getting前端UI组件设计系统创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

BrewUI:macOS上Homebrew的图形化包管理神器,让命令操作可视化

BrewUI:macOS上Homebrew的图形化包管理神器,让命令操作可视化

如果你平时在 macOS 上装软件,大概率离不开 Homebrew 这个命令行工具。但说实话,看到一长串brew install xxx --with-xxx的指令,或者每次升级都要盯着终端里滚动的日志发呆,大多数人内心是拒绝的。BrewUI 就是为解决这个痛点出现的…

2026/11/11 6:32:32 阅读更多 →
FlashKDA 16×16 fp16 Neumann求逆逐行讲解:寄存器级矩阵乘法终极指南

FlashKDA 16×16 fp16 Neumann求逆逐行讲解:寄存器级矩阵乘法终极指南

FlashKDA 1616 fp16 Neumann求逆逐行讲解:寄存器级矩阵乘法终极指南 【免费下载链接】FlashKDA FlashKDA: high-performance Kimi Delta Attention kernels 项目地址: https://gitcode.com/GitHub_Trending/fl/FlashKDA FlashKDA 是基于 CUTLASS 构建的 Kimi…

2026/10/15 21:51:36 阅读更多 →
X5R与X7R陶瓷电容选型本质:温度特性、材料差异与场景适配

X5R与X7R陶瓷电容选型本质:温度特性、材料差异与场景适配

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/31 8:22:17 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/12 5:00:00 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/12 5:13:20 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/12 5:13:20 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/11 17:16:37 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/11 17:16:37 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/12 5:13:20 阅读更多 →

日新闻

周新闻

月新闻