手机/移动端的UI框架-Vant和NutUI

2023-05-16

下面推荐2款手机/移动端的UI框架。

其实还有很多的框架,各个大厂都有UI框架。目前,找来找去,只有腾讯的移动端是setup语法写的TDesign,其他大厂,虽然都是VUE3写的,但是都还未改成setup的语法,而且,腾讯的版本也比较新,所以暂时不做案例了。我们使用成熟的UI框架Vant和NutUI来演示。其中京东的NutUI组件,还有小程序组件。

目录

一、Vant

二、NutUI


一、Vant

官网,Vant 4 - A lightweight, customizable Vue UI library for mobile web apps.,多的不说了,可以看官网介绍,下面我们直接创建程序。

1. 我们使用HBuilder X创建一个正常的程序

2.命令安装

npm i vant

安装完成标志

3.这里的mian.js不需要修改,和很多其他组件不一样

import { createApp } from 'vue'
import App from './App.vue'

createApp(App).mount('#app')

4.因为用的是vite创建的项目,所以修改vite.config.js

import vue from '@vitejs/plugin-vue'
import Components from 'unplugin-vue-components/vite'
import {
	VantResolver
} from 'unplugin-vue-components/resolvers'

export default {
	plugins: [
		vue(),
		Components({
			resolvers: [VantResolver()]
		})
	]
}

5.命令安装插件,否则报错

npm i unplugin-vue-components -D
npm i less

成功标志

6.HelloWorld.vue中引用组件的功能

<template>
	<van-form @submit="onSubmit">
		<van-cell-group inset>
			<van-field v-model="username" name="用户名" label="用户名" placeholder="用户名"
				:rules="[{ required: true, message: '请填写用户名' }]" />
			<van-field v-model="password" type="password" name="密码" label="密码" placeholder="密码"
				:rules="[{ required: true, message: '请填写密码' }]" />
		</van-cell-group>
		<div style="margin: 16px;">
			<van-button round block type="primary" native-type="submit">
				提交
			</van-button>
		</div>
	</van-form>
	<van-form @submit="onSubmit">
		<van-cell-group inset>
			<van-field v-model="username" name="用户名" label="用户名" placeholder="用户名"
				:rules="[{ required: true, message: '请填写用户名' }]" />
			<van-field v-model="password" type="password" name="密码" label="密码" placeholder="密码"
				:rules="[{ required: true, message: '请填写密码' }]" />
		</van-cell-group>
		<div style="margin: 16px;">
			<van-button round block type="primary" native-type="submit">
				提交
			</van-button>
		</div>
	</van-form>
	<van-form @submit="onSubmit">
		<van-cell-group inset>
			<van-field v-model="username" name="用户名" label="用户名" placeholder="用户名"
				:rules="[{ required: true, message: '请填写用户名' }]" />
			<van-field v-model="password" type="password" name="密码" label="密码" placeholder="密码"
				:rules="[{ required: true, message: '请填写密码' }]" />
		</van-cell-group>
		<div style="margin: 16px;">
			<van-button round block type="primary" native-type="submit">
				提交
			</van-button>
		</div>
	</van-form>
	<van-form @submit="onSubmit">
		<van-cell-group inset>
			<van-field v-model="username" name="用户名" label="用户名" placeholder="用户名"
				:rules="[{ required: true, message: '请填写用户名' }]" />
			<van-field v-model="password" type="password" name="密码" label="密码" placeholder="密码"
				:rules="[{ required: true, message: '请填写密码' }]" />
		</van-cell-group>
		<div style="margin: 16px;">
			<van-button round block type="primary" native-type="submit">
				提交
			</van-button>
		</div>
	</van-form>
	<van-form @submit="onSubmit">
		<van-cell-group inset>
			<van-field v-model="username" name="用户名" label="用户名" placeholder="用户名"
				:rules="[{ required: true, message: '请填写用户名' }]" />
			<van-field v-model="password" type="password" name="密码" label="密码" placeholder="密码"
				:rules="[{ required: true, message: '请填写密码' }]" />
		</van-cell-group>
		<div style="margin: 16px;">
			<van-button round block type="primary" native-type="submit">
				提交
			</van-button>
		</div>
	</van-form>
	<van-form @submit="onSubmit">
		<van-cell-group inset>
			<van-field v-model="username" name="用户名" label="用户名" placeholder="用户名"
				:rules="[{ required: true, message: '请填写用户名' }]" />
			<van-field v-model="password" type="password" name="密码" label="密码" placeholder="密码"
				:rules="[{ required: true, message: '请填写密码' }]" />
		</van-cell-group>
		<div style="margin: 16px;">
			<van-button round block type="primary" native-type="submit">
				提交
			</van-button>
		</div>
	</van-form>
	<van-form @submit="onSubmit">
		<van-cell-group inset>
			<van-field v-model="username" name="用户名" label="用户名" placeholder="用户名"
				:rules="[{ required: true, message: '请填写用户名' }]" />
			<van-field v-model="password" type="password" name="密码" label="密码" placeholder="密码"
				:rules="[{ required: true, message: '请填写密码' }]" />
		</van-cell-group>
		<div style="margin: 16px;">
			<van-button round block type="primary" native-type="submit">
				提交
			</van-button>
		</div>
	</van-form>
	<van-form @submit="onSubmit">
		<van-cell-group inset>
			<van-field v-model="username" name="用户名" label="用户名" placeholder="用户名"
				:rules="[{ required: true, message: '请填写用户名' }]" />
			<van-field v-model="password" type="password" name="密码" label="密码" placeholder="密码"
				:rules="[{ required: true, message: '请填写密码' }]" />
		</van-cell-group>
		<div style="margin: 16px;">
			<van-button round block type="primary" native-type="submit">
				提交
			</van-button>
		</div>
	</van-form>
	<van-tabbar v-model="active">
		<van-tabbar-item icon="home-o">标签</van-tabbar-item>
		<van-tabbar-item icon="search">标签</van-tabbar-item>
		<van-tabbar-item icon="friends-o">标签</van-tabbar-item>
		<van-tabbar-item icon="setting-o">标签</van-tabbar-item>
	</van-tabbar>

</template>

<script>
	export default {
		data() {
			return {
				goods: {
					title: "美国伽力果213(约680g/3个)",
					price: 2680,
					express: "免运费",
					remain: 19,
					thumb: [
						"https://img.yzcdn.cn/public_files/2017/10/24/e5a5a02309a41f9f5def56684808d9ae.jpeg",
						"https://img.yzcdn.cn/public_files/2017/10/24/1791ba14088f9c2be8c610d0a6cc0f93.jpeg",
					],
				},
			};
		},

		methods: {
			formatPrice() {
				return "¥" + (this.goods.price / 100).toFixed(2);
			},

			onClickCart() {
				this.$router.push("cart");
			},

			sorry() {
				Toast("暂无后续逻辑~");
			},
		},
	};
</script>

<style lang="less">
	body {
		font-size: 16px;
		background-color: #f8f8f8;
		-webkit-font-smoothing: antialiased;
	}

	.goods {
		padding-bottom: 50px;

		&-swipe {
			img {
				width: 100%;
				display: block;
			}
		}

		&-title {
			font-size: 16px;
		}

		&-price {
			color: #f44;
		}

		&-express {
			color: #999;
			font-size: 12px;
			padding: 5px 15px;
		}

		&-cell-group {
			margin: 15px 0;
		}

		&-tag {
			margin-left: 5px;
		}
	}
</style>

7.运行效果

PC端

手机端

二、NutUI

官网,NutUI - 移动端组件库,多的不说了,可以看官网介绍,下面我们直接创建程序。

1. 我们使用HBuilder X创建一个正常的程序

2. 使用命令安装

npm i @nutui/nutui

安装完成标志

 

3.main.js中,我们使用全局引入,实际开发中,为了更小的程序包,可以按需引入

import {
	createApp
} from "vue";
import App from "./App.vue";
import NutUI from "@nutui/nutui";
import "@nutui/nutui/dist/style.css";
createApp(App).use(NutUI).mount("#app");

4.因为用的是vite创建的项目,所以修改vite.config.js

import {
	defineConfig
} from 'vite'
import vue from '@vitejs/plugin-vue'
import Components from 'unplugin-vue-components/vite'
import NutUIResolver from '@nutui/nutui/dist/resolver'

// https://vitejs.dev/config/
export default defineConfig({
	plugins: [
		vue(),
		// 开启 unplugin 插件,自动引入 NutUI 组件
		Components({
			resolvers: [NutUIResolver()]
		})
	],
	// 配置全局样式变量
	css: {
		preprocessorOptions: {
			scss: {
				additionalData: '@import "@nutui/nutui/dist/styles/variables.scss";'
			}
		}
	}
})

5.HelloWorld.vue中引用组件的功能

<template>
	<nut-form>
		<nut-form-item label="姓名">
			<nut-input v-model="basicData.name" class="nut-input-text" placeholder="请输入姓名" type="text" />
		</nut-form-item>
		<nut-form-item label="年龄">
			<nut-input v-model="basicData.age" class="nut-input-text" placeholder="请输入年龄" type="text" />
		</nut-form-item>
		<nut-form-item label="联系电话">
			<nut-input v-model="basicData.tel" class="nut-input-text" placeholder="请输入联系电话" type="text" />
		</nut-form-item>
		<nut-form-item v-model="basicData.address" label="地址">
			<nut-input class="nut-input-text" placeholder="请输入地址" type="text" />
		</nut-form-item>
		<nut-form-item label="备注">
			<nut-textarea placeholder="请输入备注" type="text" />
		</nut-form-item>
	</nut-form>
	<nut-tabbar bottom safe-area-inset-bottom placeholder>
		<nut-tabbar-item v-for="(item,index) in List" :tab-title="item.title" :icon="item.icon"> </nut-tabbar-item>
	</nut-tabbar>
</template>
<script lang="ts">
	import {
		h,
		ref,
		reactive
	} from 'vue';
	import {
		Home,
		Category,
		Find,
		Cart,
		My
	} from '@nutui/icons-vue';
	export default {
		components: {
			Home,
			Category,
			Find,
			Cart,
			My
		},
		setup() {
			const basicData = reactive({
				name: '',
				age: '',
				tel: '',
				address: ''
			})
			const List = [{
					title: '标签',
					icon: h(Home),
				},
				{
					title: '标签',
					icon: h(Category),
				},
				{
					title: '标签',
					icon: h(Find),

				},
				{
					title: '标签',
					icon: h(Cart),
				},
				{
					title: '标签',
					icon: h(My),
				}
			]
			return {
				List,
				basicData
			};
		},
	}
</script>

6.运行效果

PC端

手机端

 源码地址:

Demo-NutUI: Demo-NutUI

https://gitee.com/602874946/demo-vant-d

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

手机/移动端的UI框架-Vant和NutUI 的相关文章

  • Ubuntu配置xrdp实现windows远程桌面访问Ubuntu(不插显示器情况下)

    宿舍配置了一台Ubuntu服务器 xff0c 有时候需要在图形界面进行一些操作 xff0c 但是没有配备显示器 所以考虑使用远程进行控制 在网上查找了一系列资料后发现 xff0c 使用vnc有一定的局限性 xff0c 最主要的就是在没有接显
  • Windows下编译VTK 9.1的Python安装包(Python 3.10.4,CUDA 11.6)

    不写过程了 xff0c CMake一路绿灯 xff0c 没有遇到任何报错 xff08 Visual Studio 2022 xff09 xff0c 直接贴安装包 pip安装包 xff1a vtk 9 1 0 dev0 cp310 cp310
  • Matlab和C#的数据传递

    C 向Matlab传递数据 C 向Matlab传递数字型数据 xff1a 不分数字类型 MWNumericArray num 61 1 double a 61 0 123412 MWNumericArray num 61 a C 向Matl
  • 关于编译MPFR遇到的GMP版本问题

    起因 今天买了一台DigtalOcean的服务器 xff0c 准备自己折腾玩儿 之前做一个项目时也买过 xff0c 但是赶时间 xff0c 就用apt get直接装的GCC xff0c 版本并不是最新的 如今GCC 6 0都快出稳定版了 x
  • Windows下使用任务计划程序实现宽带开机自动拨号和断线自动重连

    由于学校网络改造 xff0c 我们告别了客户端登录的锐捷 xff0c 迎来了PPPoE拨号的深澜 xff0c 本以为新的认证计费系统能带来更好的体验 xff0c 结果偏偏在很基础的功能上出问题 xff0c 诸如macOS下拨号没有IPv6地
  • git stash的妙用:去除git 多余的merge信息

    何谓多余的merge信息 所谓多余的merge信息 xff0c 指的是当自己提交代码时 xff0c 发现远端代码有更新 xff0c 这时虽然自己的代码成功push xff0c 但会多一条merge信息 xff0c 像这样 xff1a mer
  • git 命令带用户名密码

    git使用用户名密码clone的方式 xff1a git clone http username password 64 remote eg username abc 64 qq com pwd test git地址为git 64 xxx
  • golang常用技巧

    目录 一 判断元素是否存在数组中 二 判断俩数组 xff08 slice xff09 是否相等 三 经典的Map xff0c 相同Key的对应值累加 四 保留小数点 五 int64 int string转换 六 去掉最后一个符号 七 切割大
  • 基于MQ的GeoServer集群搭建(负载均衡,Session共享,JMS消息同步)

    GeoServer 集群化部署方案 目前部署了三个节点 节点信息如下 内网IP用户名密码172 16 131 210rootxxxxx172 16 131 209rootxxxxx172 16 131 211rootxxxxx 总体设计 总
  • 模拟Http发送get、post、put、delete请求

    最近在公司要定义和实现Restful接口 xff0c 需要模拟Http请求来验证请求是否能进入接口 xff0c 现在把学习的东西记录下来以备以后查询 首先说一说模拟get请求 xff0c get请求最简单的方式是通过地址栏输入地址和参数 这
  • ubuntu 上vscode gdb可视化源码调试live555

    目录 1 ubuntu 下载安装vscode 2 vscode 添加插件 3 下载live555源码 4 live555 生成makefile 5 vscode 打开目录 开始编译 6 0 添加修改调试配置 7 0 打断点 xff0c 愉快
  • linux运行jar文件Invalid or corrupt jarfile错误

    今天在项目中遇到一个很坑爹的问题 xff0c 用eclipse导出来的jar文件 xff0c 在window系统下可以正常使用 xff0c 但是讲jar传到linux环境就不能正常使用了 总是提示Invalid or corrupt jar
  • 【Linux应用】mdadm失败:RUN_ARRAY fail:Invalid argument

    1 简介 mdadm xff0c lvm工具提供强大的动态磁盘管理功能 xff0c 只是操作RAID的用户态工具而已 xff0c 两者都需要内核md的支持 xff0c 故使用前需查看内核是否支持md xff0c 如果不支持需重新编译内核 如
  • VMware虚拟机安装黑群晖7.0教程

    教程仅供参考 xff0c 不当之处多多理解 本篇教程主要讲解黑群晖 xff08 DS918 43 xff09 的详细安装教程 Tip 本教程本教程只用 学习使用 xff0c 有条件 xff0c 长期使用的朋友推荐从正规官方渠道入手 1 首先
  • Windows11 安装WSA(Android)教程

    Ps 安装WSA必要条件 电脑系统已经更新为Windows11 22000正式版系统开启处理器虚拟化支持 安装步骤 1 右键开始 运行 control exe 程序和功能 启用关闭windows功能 2 开启或关闭 Windows 功能 勾
  • 群晖修改默认使用root权限登录SSH教程

    群辉默认不允许SSH默认使用ROOT登陆 xff0c 只能用admin登陆 xff0c 从而使权限得到一定限制 xff0c 导致使用WINSCP时部分文件夹无法显示或提示权限不够 xff0c 那么应该怎么修改呢 xff1f 方法如下 xff
  • VMware虚拟机安装黑群晖7.1

    之前发布了7 0的版本群辉引导 xff0c 用的人还挺多的 xff0c 这次官网又出了7 1新版本 xff0c 我也是快马加鞭的给更新出来了 使用方法 xff1a 1 首先解压安装包 xff0c 双击解压出来的DSM918或者是3615 v
  • ESXi8.0 虚拟机安装黑群晖7.1.1

    ESXi虚拟机安装群辉7 1 一 准备工作 xff1a ESXi虚拟机一台 xff0c 版本任意 群辉VMDk引导文件 xff08 文章末尾有提供下载 xff09 群辉系统安装 xff08 pat xff09 文件 支持兼容情况 xff1a
  • 零刻 SEi12 Pro,ALL IN ONE搭建教程

    一台mini的NUC能做什么 xff1f 当然每个人的心里都会有着不同的答案 xff0c 既然是一台Mini主机那就肯定少不了部署一个All In One来榨干他的性能 今天我就大家带来一个部署All In One的详细教程 xff0c 希
  • [零刻]EQ12 N100 迷你主机:从开箱到安装ESXi+虚拟机

    开箱先上图 xff1a 配置详情 xff1a EQ12采用了Intel最新推出的N100系列的处理 xff0c 超低的功耗 xff0c 以及出色的CPU性能用来做软路由或者是All in one 相当不错 x

随机推荐

  • [零刻]EQ12迷你主机设置来电开机自启教程

    EQ12 来电自启需通过BIOS设置 断电前开机状态则来电后自动开机 xff0c 关机状态则不会自动开机 操作步骤 xff1a 1 首先关闭主机 xff0c 按下电源后 xff0c 当屏幕出现logo后 xff0c 迅速按下键盘上的Del键
  • C语言习题:字符串操作函数练习题目

    1 将包含字符数字的字符串分开 使得分开后的字符串前一部分是数字后一部分是字母 例如 h1ell2o3 gt 123hello span class token macro property span class token directi
  • Java单元测试实践-08.Stub、Replace、Suppress静态方法

    Java单元测试实践 00 目录 xff08 9万多字文档 43 700多测试示例 xff09 https blog csdn net a82514921 article details 107969340 1 Stub Replace S
  • [零刻]EQ12安装PVE虚拟机教程

    PVE虚拟机简介 Proxmox VE是一个运行虚拟机和容器的平台 基于Debian Linux xff0c 完全开源 为了获得最大的灵活性 xff0c 实现了两种虚拟化技术 基于内核的虚拟机 KVM 和基于容器的虚拟化 LXC 一个主要的
  • [零刻]EQ12&EQ12Pro安装OpenWRT软路由教程

    OpenWRT系统安装 安装前准备 1 U盘一个 2 WePE写盘工具 3 Openwrt固件 4 Img镜像写盘工具 安装步骤 xff1a 1 首先下载WePE写盘工具 xff0c 制作一个PE系统安装环境 xff0c 启动软件后 xff
  • [零刻]EQ12&EQ12Pro安装原厂系统教程

    有些小伙伴购买的准系统的版本因为不带内存和硬盘 xff0c 需要自己进行安装系统 xff0c 对于小白来说还是比较困难的 xff0c 在这里推荐大家使用原厂的系统 xff0c 里面自带驱动安装好后就可以直接使用 使用原厂系统包安装步骤 xf
  • Esxi8.0安装Ubuntu系统教程

    本篇教程主要教大家怎么在ESXi8 0虚拟机上安装Ubuntu系统 xff0c 首先安装Ubuntu需要准备一个ISO系统镜像文件 xff0c 我们可以去Ubuntu官网下载 Ubuntu官网 xff1a https ubuntu com
  • [零刻]EQ12&EQ12Pro调整风扇转速教程

    调整 CPU 风扇转速可以有不同的用途 xff0c 具体取决于您的计算机和使用情况 降低噪音 xff1a 如果您的风扇的噪音很大 xff0c 可以通过降低 CPU 风扇的转速来减少噪音 这可以通过在 BIOS 或中设置 CPU 风扇转速控制
  • [零刻]EQ12&EQ12Pro调整最低功耗教程

    在使用EQ12作为软路由的时候 xff0c 因为要不间断工作 xff0c 功耗就非常关键了 xff0c 所以并不需要太高的功耗 xff0c 所以接下来我教你怎么设置以最低功耗运行 具体操作步骤 xff1a 1 先关闭电脑 xff0c 按下电
  • 动态更新阿里云DDNS解析记录的IPv6地址,随时随地用域名远程访问自己的电脑【如何远程访问家里的电脑】

    远程访问电脑 日志简介要求1 IPv6网络1 1检查光猫是否支持IPv61 2检查路由器是否支持并开启IPv6 xff08 没有路由器的跳过这一步 xff09 1 3配置电脑防火墙1 3 1允许ICMPv6协议通过防火墙1 3 2文件共享S
  • 一个好用的js压缩加密网站

    js加密网站 我是vue的js xff0c 用了好几个加密网站得出的结果会有错 xff0c 这个挺好
  • alibaba pc safe service无法删除,一直在后台运行怎么办?

    对付流氓软件 xff0c 应当使用师夷长技以制夷的办法 xff0c 下载一个腾讯电脑管家 xff0c 然后下载里面的文件粉碎机 xff0c 在任务管理器找到对应的alibaba pc safe service服务 xff0c 点击进入具体的
  • APP流量变现之穿山甲广告平台接入

    1 首先百度搜索 穿山甲广告投放 xff0c 第一个出现的链接就是开发者官网 xff0c 截图如下 xff1a 2 进入之后点击注册 xff0c 然后登陆 xff08 这一步穿山甲超级简单 xff0c 如果不着急提现收益的话 xff0c 可
  • spss统计分析基础教程(上)--自学

    64 TOC 目录 xff09 第一章 四种窗口 数据窗口 输出窗口 语法窗口 脚本窗口 菜单 1 文件 xff1a 新建 打开 保存 另存为 将文件标记为只读 xff1a 如果之后保存文件 xff0c 则只能重命名并另存 重新命名数据集
  • OpenWrt 内的阿里云盘 WebDAV 做磁盘使用

    最近在玩OpenwWrt的时候 xff0c 在刷的固件里看到预装的阿里云盘 WebDAV xff0c 加上最近刚刚开始用阿里云 xff0c 不限速 xff0c 非常快 xff0c 通过这个服务 xff0c 可以直接把阿里云的文件架挂载在本地
  • VS2022中使用Copilot

    Copilot可以自动帮你写代码 1 打开vs2022 点击扩展 xff0c 在里面搜索copilot安装 2 安装完成后 xff0c 左下角有个小图标就是copilot 3 点击登录 会弹框 点击确定后 xff0c 跳转到网站 xff0c
  • CSS/SCSS/LESS和自适应布局/响应式布局详解

    在开发前端的时候 xff0c 界面布局尤为重要 xff0c 要布局的非常合理 xff0c 好看 xff0c css是必不可少的 xff0c 然后是各种布局 xff0c 使用这些布局 xff0c 进行混合搭配 xff0c 最终的目的都是开发一
  • 响应式布局之viewport-超级简单

    之前文章CSS布局之详解 故里2130的博客 CSDN博客 上面的文章可以实现响应式布局 xff0c 根据浏览器的大小变化而变化 xff0c 但是相对于viewport来说 xff0c 之前的还是有点复杂 xff0c 而使用viewport
  • .net6API使用AutoMapper和DTO

    AutoMapper xff0c 是一个转换工具 xff0c 说到AutoMapper时 xff0c 就不得不先说DTO xff0c 它叫做数据传输对象 Data Transfer Object 通俗的来说 xff0c DTO就是前端界面需
  • 手机/移动端的UI框架-Vant和NutUI

    下面推荐2款手机 移动端的UI框架 其实还有很多的框架 xff0c 各个大厂都有UI框架 目前 xff0c 找来找去 xff0c 只有腾讯的移动端是setup语法写的TDesign xff0c 其他大厂 xff0c 虽然都是VUE3写的 x