前端组件库——NutUI知识点大全(二)

简介: 教程来源 https://htnus.cn/ NutUI提供按钮、单元格、输入框、选择器、Toast/Dialog等核心移动端组件,支持丰富样式、状态与交互;基于Taro实现H5、微信/京东/支付宝/百度小程序“一码五端”跨平台运行,兼顾高性能与高一致性。

三、核心组件详解

3.1 按钮组件 Button
按钮是用户交互中最基础的组件,NutUI提供了丰富的按钮样式和状态。

<template>
  <!-- 按钮类型 -->
  <nut-button type="primary">主要按钮</nut-button>
  <nut-button type="success">成功按钮</nut-button>
  <nut-button type="danger">危险按钮</nut-button>
  <nut-button type="warning">警告按钮</nut-button>
  <nut-button type="default">默认按钮</nut-button>

  <!-- 按钮尺寸 -->
  <nut-button type="primary" size="large">大号按钮</nut-button>
  <nut-button type="primary" size="normal">普通按钮</nut-button>
  <nut-button type="primary" size="small">小型按钮</nut-button>
  <nut-button type="primary" size="mini">迷你按钮</nut-button>

  <!-- 块级按钮 -->
  <nut-button type="primary" block>块级按钮</nut-button>

  <!-- 镂空按钮 -->
  <nut-button type="primary" plain>镂空按钮</nut-button>

  <!-- 禁用状态 -->
  <nut-button type="primary" disabled>禁用按钮</nut-button>

  <!-- 加载状态 -->
  <nut-button type="primary" loading>加载中</nut-button>

  <!-- 图标按钮 -->
  <nut-button type="primary" icon="star">收藏</nut-button>
</template>

Button组件属性说明:
image.png
3.2 单元格组件 Cell
单元格是移动端列表布局的核心组件,常用于信息展示和导航。

<template>
  <!-- 基础单元格 -->
  <nut-cell title="单元格标题" value="内容" />
  <nut-cell title="单元格标题" sub-title="描述信息" value="内容" />

  <!-- 带图标的单元格 -->
  <nut-cell title="单元格" icon="location" />

  <!-- 带右侧箭头的单元格 -->
  <nut-cell title="单元格" is-link />

  <!-- 自定义内容 -->
  <nut-cell title="单元格">
    <template #value>
      <nut-tag type="primary">标签</nut-tag>
    </template>
  </nut-cell>

  <!-- 单元格组 -->
  <nut-cell-group title="分组标题">
    <nut-cell title="单元格1" value="内容1" />
    <nut-cell title="单元格2" value="内容2" />
    <nut-cell title="单元格3" value="内容3" />
  </nut-cell-group>
</template>

3.3 表单输入组件 Input
NutUI提供了功能完善的表单输入组件。

<template>
  <nut-cell-group title="基础用法">
    <!-- 基础输入框 -->
    <nut-cell>
      <nut-input 
        v-model="state.text" 
        placeholder="请输入文本" 
      />
    </nut-cell>

    <!-- 密码输入框 -->
    <nut-cell>
      <nut-input 
        v-model="state.password" 
        type="password" 
        placeholder="请输入密码" 
      />
    </nut-cell>

    <!-- 禁用状态 -->
    <nut-cell>
      <nut-input 
        v-model="state.disabled" 
        disabled 
        placeholder="禁用状态" 
      />
    </nut-cell>

    <!-- 只读状态 -->
    <nut-cell>
      <nut-input 
        v-model="state.readonly" 
        readonly 
        placeholder="只读状态" 
      />
    </nut-cell>
  </nut-cell-group>
</template>

<script setup>
import { reactive } from 'vue';

const state = reactive({
  text: '',
  password: '',
  disabled: '禁用',
  readonly: '只读'
});
</script>

Input组件属性说明:
image.png
3.4 选择器组件 Picker
Picker选择器是移动端常用的数据选择组件。

<template>
  <nut-cell 
    title="请选择城市" 
    :desc="cityValue || '请选择'" 
    @click="showPicker = true" 
  />

  <nut-picker
    v-model:visible="showPicker"
    title="请选择城市"
    :columns="cityColumns"
    @confirm="handleConfirm"
  />
</template>

<script setup>
import { ref } from 'vue';

const showPicker = ref(false);
const cityValue = ref('');

const cityColumns = [
  { text: '北京', value: 'beijing' },
  { text: '上海', value: 'shanghai' },
  { text: '广州', value: 'guangzhou' },
  { text: '深圳', value: 'shenzhen' }
];

const handleConfirm = ({ selectedValue }) => {
  cityValue.value = selectedValue[0].text;
};
</script>

3.5 反馈组件
3.5.1 轻提示 Toast
Toast用于显示轻量级提示信息。

<template>
  <nut-button type="primary" @click="showToast">显示Toast</nut-button>
</template>

<script setup>
import { showToast } from '@nutui/nutui';

const showToast = () => {
  showToast.text('操作成功', {
    duration: 2000
  });
};
</script>

Toast属性说明:
image.png
3.5.2 对话框 Dialog
Dialog用于显示重要信息或需要用户确认的操作。

<template>
  <nut-button type="primary" @click="showDialog">显示对话框</nut-button>

  <nut-dialog
    v-model:visible="dialogVisible"
    title="温馨提示"
    content="确定要删除这条数据吗?"
    @confirm="handleConfirm"
    @cancel="handleCancel"
  />
</template>

<script setup>
import { ref } from 'vue';
import { showToast } from '@nutui/nutui';

const dialogVisible = ref(false);

const showDialog = () => {
  dialogVisible.value = true;
};

const handleConfirm = () => {
  showToast.text('点击了确认');
  dialogVisible.value = false;
};

const handleCancel = () => {
  showToast.text('点击了取消');
};
</script>

四、跨端适配与多端开发

4.1 一码五端能力
NutUI最核心的竞争力之一是其强大的跨端能力。基于Taro框架,NutUI实现了真正意义上的"一套代码,多端运行",支持H5、微信小程序、京东小程序、支付宝小程序、百度小程序等多个平台。

组件库间的关系:

Taro作为跨端框架,提供了基础组件库@tarojs/components(包含View、ScrollView、Text等容器组件)。NutUI基于Taro框架实现跨端能力,@tarojs/components是整个NutUI组件库实现跨端的基座。

4.2 Taro版本配置
安装NutUI Taro版本

npm install @nutui/nutui-taro --save

配置Taro项目

// config/index.js
export default {
  // ...其他配置
  mini: {
    webpackChain(chain) {
      // 配置NutUI按需加载
      chain.resolve.alias.set('@nutui/nutui', '@nutui/nutui-taro');
    }
  },
  h5: {
    webpackChain(chain) {
      chain.resolve.alias.set('@nutui/nutui', '@nutui/nutui-taro');
    }
  }
};

4.3 多端适配注意事项
在实际跨端开发中,需要注意以下几点:

  1. 标签替换
    在鸿蒙和回跨到iOS/安卓的项目中,需要将原来的div、span等Web端标签改为Taro标签。

  2. 条件编译
    通过判断端来做不同的处理:

/* #ifdef harmony dynamic */
width: 80px;
/* #endif */
/* #ifndef harmony dynamic */
width: auto;
/* #endif */

3.API兼容
避免使用不支持的属性或API,如需要做兼容处理:

// 不建议
left: -var(--nut-spacing);
align-items: start;

// 建议
left: calc(-1 * var(--nut-spacing));
align-items: flex-start;

4.4 小程序分包加载
对于小程序项目,可以使用分包加载优化性能:

// app.json
{
  "subPackages": [
    {
      "root": "pages/sub",
      "pages": ["index"]
    }
  ]
}

来源:
https://unbgv.cn/

相关文章
|
14天前
|
人工智能 数据可视化 安全
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
本文详解如何用阿里云Lighthouse一键部署OpenClaw,结合飞书CLI等工具,让AI真正“动手”——自动群发、生成科研日报、整理知识库。核心理念:未来软件应为AI而生,CLI即AI的“手脚”,实现高效、安全、可控的智能自动化。
34762 38
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
|
8天前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
本文介绍了Claude Code终端AI助手的使用指南,主要内容包括:1)常用命令如版本查看、项目启动和更新;2)三种工作模式切换及界面说明;3)核心功能指令速查表,包含初始化、压缩对话、清除历史等操作;4)详细解析了/init、/help、/clear、/compact、/memory等关键命令的使用场景和语法。文章通过丰富的界面截图和场景示例,帮助开发者快速掌握如何通过命令行和交互界面高效使用Claude Code进行项目开发,特别强调了CLAUDE.md文件作为项目知识库的核心作用。
8784 26
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
|
3天前
|
人工智能 JavaScript Ubuntu
低成本搭建AIP自动化写作系统:Hermes保姆级使用教程,长文和逐步实操贴图
我带着怀疑的态度,深度使用了几天,聚焦微信公众号AIP自动化写作场景,写出来的几篇文章,几乎没有什么修改,至少合乎我本人的意愿,而且排版风格,也越来越完善,同样是起码过得了我自己这一关。 这个其实OpenClaw早可以实现了,但是目前我觉得最大的区别是,Hermes会自主总结提炼,并更新你的写作技能。 相信就冲这一点,就值得一试。 这篇帖子主要就Hermes部署使用,作一个非常详细的介绍,几乎一步一贴图。 关于Hermes,无论你赞成哪种声音,我希望都是你自己动手行动过,发自内心的选择!
1744 17
|
25天前
|
人工智能 JSON 机器人
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
本文带你零成本玩转OpenClaw:学生认证白嫖6个月阿里云服务器,手把手配置飞书机器人、接入免费/高性价比AI模型(NVIDIA/通义),并打造微信公众号“全自动分身”——实时抓热榜、AI选题拆解、一键发布草稿,5分钟完成热点→文章全流程!
45659 155
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
|
8天前
|
机器学习/深度学习 存储 人工智能
还在手写Skill?hermes-agent 让 Agent 自己进化能力
Hermes-agent 是 GitHub 23k+ Star 的开源项目,突破传统 Agent 依赖人工编写Aegnt Skill 的瓶颈,首创“自我进化”机制:通过失败→反思→自动生成技能→持续优化的闭环,让 Agent 在实践中自主构建、更新技能库,持续自我改进。
1549 5
|
15天前
|
人工智能 JSON 监控
Claude Code 源码泄露:一份价值亿元的 AI 工程公开课
我以为顶级 AI 产品的护城河是模型。读完这 51.2 万行泄露的源码,我发现自己错了。
5642 24
|
3天前
|
云安全 人工智能 供应链
|
5天前
|
IDE Java 编译器
【全网最详细】JDK17下载安装图文教程 | Java17编程环境搭建步骤详解
JDK 17是Java官方长期支持(LTS)版本,提供编译、调试、运行Java程序的完整工具链。具备高稳定性、强安全性及现代语言特性(如密封类、模式匹配),广泛用于企业开发、教学入门与生产环境,是学习和实践Java的首选基础工具。(239字)