Naive UI:一个 Vue 3 组件库,比较完整,主题可调,使用 TypeScript,快有点意思。

在当今的前端开发领域,Vue 3已成为中后台应用的首选框架。为了满足开发者的需求,各种组件库如雨后春笋般涌现。其中,Naive UI以其独特的优势,成为了Vue 3开发者的得力助手。本文将深入探讨Naive UI的特性、优势以及如何使用它来提高开发效率。

图片

图片

图片

一、Naive UI的特性

  1. 组件丰富:Naive UI提供了超过80个组件,覆盖了表格、表单、弹窗、图表等多个方面。这些组件不仅功能强大,而且高度可定制化,满足了各种业务需求。

  2. 主题可调:Naive UI提供了一个先进的类型安全主题系统。通过简单的样式覆盖,开发者可以轻松定制应用的主题,实现品牌统一和个性化定制。无需使用less、sass、css变量或webpack的loaders,简化了主题定制的过程。

  3. 使用TypeScript编写:Naive UI是第一个全量使用TypeScript编写的Vue 3组件库。TypeScript的静态类型检查和面向对象编程能力,使得开发者可以更好地编写高质量的代码,减少错误,提高开发效率。与您的TypeScript项目无缝衔接,无需导入任何CSS,让组件工作更顺利。

  4. 高效的开发体验:Naive UI的每个组件都是独立的模块,支持代码拆分和Tree Shaking。这有助于减少最终打包的文件体积,提高应用程序的性能。同时,通过使用Naive UI的组件,开发者可以快速构建应用,减少重复的代码编写工作。

二、如何使用Naive UI

要开始使用Naive UI,首先需要将其安装到您的Vue 3项目中。您可以使用npm或yarn进行安装。在项目根目录下打开终端,输入以下命令:

安装

注意,naive-ui 仅支持 Vue3。如果你在使用 Vue2,可以去看看别的库。

npm

使用 npm 安装。

npm i -D naive-ui

UMD

参考 使用 UMD。

字体

npm i -D vfonts

图标

naive-ui 建议使用 xicons 作为图标库。


如果你想使用单文件组件风格(SFC - Single File Component),可以选择直接引入或全局安装在 Vue App 中。

直接引入(推荐)

你可以直接导入组件并使用它。这种情况下,只有导入的组件才会被打包。

如果你想知道如何按需引入主题和语言包,请参考按需引入。

<template>
  <n-button>naive-ui</n-button>
</template>

<script>
  import { defineComponent } from 'vue'
  import { NButton } from 'naive-ui'

  export default defineComponent({
    components: {
      NButton
    }
  })
</script>

如果你可以使用 setup script,你可以用下面的方式使用组件。

<template>
  <n-button>naive-ui</n-button>
</template>

<script setup>
  import { NButton } from 'naive-ui'
</script>

全局安装(不推荐)

安装全部组件

失去 tree-shaking 的能力,打包有冗余代码。

如果你想全局安装但是不想安装全部组件,请参考按需引入。

import { createApp } from 'vue'
import naive from 'naive-ui'

const app = createApp(App)
app.use(naive)

安装后,你可以这样在 SFC 中使用全部组件。

<template>
  <n-button>naive-ui</n-button>
</template>

Volar 支持(2.24.2)

如果你在使用 Volar,那么可以在 tsconfig.json 中配置 compilerOptions.types 来指定全局组件类型。

// tsconfig.json
{
  "compilerOptions": {
    // ...
    "types": ["naive-ui/volar"]
  }
}

配置字体

Naive UI 可以和 vfonts 配合,你可以简单的引入 vfonts 中的字体,包含常规字体和等宽字体。

只需要在你 App 的入口文件导入字体,即可调整 Naive UI 的字体。

// 你 App 的入口 js 文件
// ...

// 通用字体
import 'vfonts/Lato.css'
// 等宽字体
import 'vfonts/FiraCode.css'

const app = createApp()
app.use(naive)

// ...

注意:不同 vfonts 字体提供的字重不同,在使用 Lato、OpenSans 的时候你需要全局调整 naive-ui 的字重配置。

<!-- 调整 naive-ui 的字重配置 -->
<n-config-provider :theme-overrides="{ common: { fontWeightStrong: '600' } }">
  <app />
</n-config-provider>

通过定制主题修改全局字体

如果你不打算使用 vfonts 并且想要通过主题调整修改其为别的字体,你需要使用 n-global-style 来做到这一点。在不使用 n-global-style 的情况下组件不会响应 theme-overrides 中的字体变更。

题外话:不使用 n-global-style 就能让 vfonts 直接生效是一个设计上的妥协,在下个大的版本默认的全局 reset 样式将不再带有字体相关的样式,而是全部置于 n-global-style 组件中。

支持的平台

浏览器

不支持 IE 浏览器。

Edge、Firefox、Chrome、Safari 等现代浏览器的最新的 2 个版本确保会被支持。

对于这些浏览器的其他版本中,由于开发资源的限制并没有做过严格的测试。但是我们预期 naive-ui 应该在这些浏览器不算太老的版本上能正常的运行(比如 2 年之内的版本)。如果你发现了任何问题欢迎来提 issue。

Vue

只支持 Vue 3(>3.0.5)。

TypeScript

需要版本 > 4.1。

通过以上步骤,您就可以开始使用Naive UI提供的丰富组件来构建您的Vue 3应用了。无论是表格、表单还是弹窗、图表,Naive UI都为您提供了强大的支持和灵活的定制选项。

三、总结与展望
Naive UI作为Vue 3的强大TypeScript组件库,为开发者提供了丰富的组件、可调主题以及高效的开发体验。通过使用Naive UI,开发者可以快速构建高质量的中后台应用,减少代码量并提高开发效率。随着Vue 3和TypeScript的普及,我们相信Naive UI将会成为越来越多开发者的首选组件库。未来,我们期待Naive UI继续保持其领先地位,为开发者带来更多创新和便利的功能。

附组件官方文档地址:

https://www.naiveui.com/zh-CN/os-theme

欢迎关注我的微信技术公众号: 前端组件开发

d848d5658a07453c843277846948c608.png

欢迎加入“前端组件开发学习”交流群,一起学习成长!可关注  “前端组件开发” 公众号后,私信后申请入群。

图片

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Auth Proxy】为你的 Web 服务上把锁

Auth Proxy 一个极简的用于 Web 服务鉴权的反向代理服务 Demo&#xff08;密码为&#xff1a;whoami&#xff09;&#xff1a;https://auth-proxy.wengcx.top/ 极其简约的 UI对你的真实服务无任何侵入性支持容器部署&#xff0c;Docker Image 优化到不能再小&#xff08;不到…

DevEco Profiler性能调优工具简介

一、概述 应用或服务运行期间可能出现响应速度慢、动画播放不流畅、列表拖动卡顿、应用崩溃或耗电量过高、发烫、交互延迟等现象,这些现象表明应用或服务可能存在性能问题。造成性能问题的原因可能是业务逻辑、应用代码对系统API的误用、对ArkTS对象的不合理持有导致内存泄露…

智慧公厕:跨界融合,打造智慧城市新名片

随着城市化进程的不断加快&#xff0c;公共厕所建设成为一个亟待解决的问题。传统的公厕存在着管理繁琐、卫生差、服务不到位等一系列问题&#xff0c;与城市发展的节奏不协调。为此&#xff0c;推进新型智慧公厕建设成为了一个重要的解决方案。智慧公厕的建设需要推进技术融合…

【创作纪念日】1024回忆录

不知不觉中&#xff0c;从创作第一篇文章到现在&#xff0c;已经1024天了&#xff0c;两年多的时间里&#xff0c;已经从硕士到博士了&#xff0c;1024&#xff0c;对于程序员来说&#xff0c;是个特别的数字吧&#xff0c;在此回忆与记录一下这些美好的经历吧。 缘起 很早以前…

YOLOv8-ROS-noetic+USB-CAM目标检测

环境介绍 Ubuntu20.04 Ros1-noetic Anaconda-yolov8虚拟环境 本文假设ROS和anaconda虚拟环境都已经配备&#xff0c;如果不知道怎么配备可以参考&#xff1a; https://blog.csdn.net/weixin_45231460/article/details/132906916 创建工作空间 mkdir -p ~/catkin_ws/srccd ~/ca…

Linux内核-网络代码-关键的数据结构(struct sk_buff、struct net_device)

1、struct sk_buff结构体解析 struct sk_buff&#xff1a;一个封包就存储在这里。所有网络分层都会使用这个结构来储存其报头、有关用户数据的信息&#xff08;有效载荷&#xff09;&#xff0c;以及用来协调其工作的其他内部信息。 struct net_device&#xff1a;在Linux内核…

力扣-python-合并两个有序链表

题解&#xff1a; 这段代码是用于合并两个有序列表的递归函数&#xff0c;函数的输入是两个链表l1和l2&#xff0c;返回合并后的有序列表。具体操作是比较两个链表的头结点&#xff0c;将较小的头结点作为合并后的链表的头结点&#xff0c;并递归的将剩余的部分与另一个链表进…

unity编辑器扩展高级用法

在PropertyDrawer中&#xff0c;您不能使用来自GUILayout或EditorGUILayout的自动布局API&#xff0c;而只能使用来自GUI和EditorGUI的绝对Rect API始终传递相应的起始位置和维度。 你需要 计算显示嵌套内容所需的总高度将此高度添加到public override float GetPropertyHeig…

深入解析实时数仓Doris:介绍、架构剖析、应用场景与数据划分细节

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! Doris是一款高性能、开源的实时分析数据仓库&#xff0c;旨在为用户提供毫秒级查询响应、高并发、高可用以及易于扩展的OLAP解决方…

P1563 [NOIP2016 提高组] 玩具谜题

题目传送门 这道题实在是一道水题 话不多说&#xff0c;上代码 #include<iostream> #include<cstring> using namespace std; struct a{int io;//in朝里 out朝外 小人的朝向 string name;//小人的名字 int number;//角色编号 }a[100000]; int main(){int n, m…

连续子数组的最大和

问题描述&#xff1a; 输入一个整型数组&#xff0c;数组里有正数也有负数。求连续子数组中的最大和为多少。 举例&#xff1a; 数组&#xff1a;arry{1 , 2 &#xff0c;-5 , 4 , 1 &#xff0c;-2} 输出&#xff1a;5&#xff0c;数组中连续的位置相加最大值为5, 41 方法…

yolov8目标检测数据集制作——make sense

背景 在前几天我进行了录制视频以准备足够多的数据集&#xff0c;同时使用利用python自定义间隔帧数获取视频转存为图片&#xff0c;所以今天我准备对我要训练的数据集进行标注。我要做的是一个基于yolo的检测项目&#xff0c;在搜索资料后得知大家多是用labelme或者make sens…

文心一言 VS 讯飞星火 VS chatgpt (221)-- 算法导论16.3 3题

三、如下所示&#xff0c;8个字符对应的出现频率是斐波那契数列的前8个数&#xff0c;此频率集合的赫夫曼编码是怎样的? a:1 b:1 c:2 d:3 e:5 f:8 g:13 h:21 你能否推广你的结论&#xff0c;求频率集为前 n 个斐波那契数的最优前缀码? 文心一言&#xff1a; 首先&#xff0…

pytorch中tensor类型转换的几个函数

目录 IntTensor转FloatTensor FloatTensor转IntTensor Tensor类型变为python的常规类型 IntTensor转FloatTensor .float函数&#xff1a; FloatTensor转IntTensor .int函数 Tensor类型变为python的常规类型 item函数

Matlab 2024a版本在Linux系统上的安装配置

目录 前言一、​Matlab 2024a安装总结 前言 Matlab是一种高级技术计算和编程环境&#xff0c;广泛应用于科学、工程和金融等领域。它提供了丰富的工具和函数库&#xff0c;用于数据分析、可视化、模型建立、算法开发和应用部署等任务。注&#xff1a;文末附有下载链接&#xf…

一文告诉你如何用 Python 操作 ChatGPT

ChatGPT 相信大家都用过&#xff0c;你觉得它给你的工作带来了多少帮助呢&#xff1f; 对这块感兴趣的&#xff0c;可以群里聊聊 目前我们使用 ChatGPT 的方式是通过浏览器访问 chat.openai.com&#xff0c;然后输入问题&#xff0c;就像下面这样。 除了网页之外&#xff0…

Qt打开已有工程方法

在Qt中&#xff0c;对于一个已有工程如何进行打开&#xff1f; 1、首先打开Qt Creator 2、点击文件->打开文件或项目&#xff0c;找到对应文件夹下的.pro文件并打开 3、点击配置工程 这样就打开对应的Qt项目了&#xff0c;点击运行即可看到对应的效果 Qt开发涉及界面修饰…

2024-03-22 问AI: 介绍一下深度学习中的 sigmoid函数

文心一言 Sigmoid函数是深度学习中常用的一种激活函数&#xff0c;主要用于将神经元的输出值压缩到0和1之间。这种特性使得sigmoid函数在二分类问题中特别有用&#xff0c;因为输出值可以被解释为属于某个类别的概率。 sigmoid函数的数学表达式为&#xff1a; σ(x) 1 / (1…

CMake笔记之将任意官方库作为third_party完整地包含在工程项目中使用的通用模板

CMake笔记之将任意官方库作为third_party完整地包含在工程项目中使用的通用模板 —— 杭州 2024-03-20 凌晨1:06 code review! 文章目录 CMake笔记之将任意官方库作为third_party完整地包含在工程项目中使用的通用模板1.通用CMakeLists.txt模板2.GPT4给出的改进建议3.git clon…

kubernetes负载均衡-service

一、service的概念 1、什么是service 在Kubernetes中&#xff0c;pod是应用程序的载体&#xff0c;当我们需要访问这个应用时&#xff0c;可以通过Pod的IP进行访问&#xff0c;但是这里有两个问题:1、Pod的IP地址不固定&#xff0c;一旦Pod异常退出、节点故障&#xff0c;则会…