Vant2零基础入门:第一个组件这样写

快速体验

  1. 打开 InsCode(快马)平台 https://www.inscode.net
  2. 输入框内输入如下内容:
    编写一个面向新手的Vant2教学示例,从零开始创建一个简单的按钮组件。分步骤展示:1)Vue环境搭建;2)Vant2安装配置;3)基础按钮引入;4)添加不同类型(primary/warning/danger);5)添加不同尺寸(large/normal/small);6)添加禁用状态;7)添加加载状态。每个步骤需有详细注释和效果预览,避免使用复杂概念。
  3. 点击'项目生成'按钮,等待项目生成完整后预览效果

示例图片

最近在学Vue的组件库Vant2,发现它特别适合移动端开发。作为新手,我从最基础的按钮组件开始摸索,记录下这个学习过程,希望能帮到同样刚入门的同学。

  1. 准备Vue环境 首先需要一个干净的Vue项目。推荐使用Vue CLI创建(Vue 2.x版本),运行命令行工具初始化项目后,进入项目目录。这一步就像搭积木前先准备好底板,后续操作都在这个基础上进行。

  2. 安装Vant2 在项目根目录下通过npm或yarn添加vant依赖。安装完成后需要在main.js中全局引入Vant的样式文件和组件,这里注意要同时安装vant的配套插件vant/lib/button。安装过程就像给工具箱添加新工具,后续就能随时调用。

  3. 基础按钮实现 在App.vue中,使用vant提供的van-button标签即可创建默认按钮。首次使用时建议先写最简版本,只保留type="default"的基础样式,确认组件能正常渲染。这一步能快速获得正反馈,看到浏览器里出现第一个Vant按钮时会很有成就感。

  4. 类型扩展 Vant2按钮有primary(蓝)、warning(黄)、danger(红)等多种类型。在同一个页面并列添加这三种按钮,观察不同色彩带来的视觉差异。类型切换就像给按钮换皮肤,通过修改type属性就能实现,这是组件库最实用的特性之一。

  5. 尺寸调整 通过size属性设置large/normal/small三种规格。建议实际对比这三种尺寸在移动端页面的显示效果,normal适合大多数场景,large适合重要操作,small则用于紧凑布局。这里能体会到组件库标准化尺寸的好处。

  6. 禁用状态 添加disabled属性即可禁用按钮,变成灰色不可点击状态。这个功能在表单提交时特别有用,可以防止重复提交。测试时可以写个@click事件,观察禁用状态下是否还会触发。

  7. 加载状态 通过loading属性实现按钮加载动画,通常配合异步操作使用。可以模拟网络请求:点击后开启loading,2秒后自动关闭。这个动效能让用户明确感知到操作已被响应,是提升体验的小细节。

整个过程就像在组装乐高,Vant2提供标准化的零件,我们只需要按需组合。示例图片

最近发现InsCode(快马)平台特别适合练手这类前端demo,不用配置本地环境,浏览器里就能直接编写和预览Vue组件。他们的在线编辑器响应很快,写完代码右侧立即显示效果,还能一键部署成可访问的网页。我试着把这次练习的按钮项目放上去,从编码到上线只用了10分钟,对新手特别友好。

快速体验

  1. 打开 InsCode(快马)平台 https://www.inscode.net
  2. 输入框内输入如下内容:
    编写一个面向新手的Vant2教学示例,从零开始创建一个简单的按钮组件。分步骤展示:1)Vue环境搭建;2)Vant2安装配置;3)基础按钮引入;4)添加不同类型(primary/warning/danger);5)添加不同尺寸(large/normal/small);6)添加禁用状态;7)添加加载状态。每个步骤需有详细注释和效果预览,避免使用复杂概念。
  3. 点击'项目生成'按钮,等待项目生成完整后预览效果

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

你已经确认了关键信息: ``` ✅ Vue 加载结果: object 📦 Vue 版本: 3.5.24 ✅ Vant 加载结果: undefined Uncaught ReferenceError: Vant is not defined ``` --- ## ✅ 结论:`vant.min.js` 文件 **没有正确暴露全局变量 `Vant`** 虽然文件被加载了,但它 **不是适用于 `<script>` 标签的 UMD 全局构建版本**。 > 🔥 问题出在:你下载的 `vant.min.js` 是「模块化构建」或「错误内容」,无法在浏览器全局创建 `window.Vant` --- ## 🚨 常见错误原因(你现在正踩中) | 错误 | 说明 | |------|------| | ❌ 右键“另存为”下载 `vant.min.js` | 浏览器可能缓存了 HTML 页面(如 GitHub Pages 的 404) | | ❌ 下载的是 ESM 构建版 | 不支持直接 `<script src>` 使用 | | ❌ CDN 返回重定向页面 | 某些网络环境下会返回 HTML 而不是 JS | | ❌ 文件路径对但内容是空的 | 看起来像 JS,其实是空白 | --- ## ✅ 终极解决方案:手动复制 + 正确来源 ### ✅ 第一步:打开官方可靠 URL 👉 在浏览器中访问: ``` https://fastly.jsdelivr.net/npm/vant@4/lib/vant.min.js ``` > ⚠️ 必须能看到 JavaScript 代码(以 `var Vant = (function(...)` 开头),而不是网页! --- ### ✅ 第二步:正确保存文件(不能右键另存为!) #### ✅ 正确操作流程: 1. 打开上面链接后: - 按 `Ctrl+A` 全选 - 按 `Ctrl+C` 复制 2. 打开 VS Code / 记事本 / Sublime Text 3. 新建文件 → 粘贴 4. 保存为:`assets/vant.min.js` 5. 编码选择:**UTF-8**(不要带 BOM) 6. 关闭再重新打开,搜索 `"Vant"` 和 `"Calendar"` 是否存在 ✅ 成功标志:你能看到类似代码: ```js var Vant = (function (exports, vue) { 'use strict'; ... var Calendar = { name: 'van-calendar', setup: function() { ... } }; exports.Calendar = Calendar; ... return exports; })({}, Vue); ``` 📌 注意最后一行用了 `{}, Vue`,表示它依赖全局 `Vue` --- ### ✅ 第三步:验证是否真的加载成功 在引入之后加一段调试脚本: ```html <script src="assets/vue.global.js"></script> <script> console.log("✅ Vue loaded:", typeof Vue !== 'undefined'); </script> <script src="assets/vant.min.js"></script> <script> console.log("🔍 Checking window.Vant..."); console.log("typeof Vant =", typeof Vant); // 应该输出 "object" if (typeof Vant === 'undefined') { alert("❌ Vant 未定义!\n\n请检查:\n1. vant.min.js 是否是从 https://fastly.jsdelivr.net/npm/vant@4/lib/vant.min.js 手动复制粘贴的\n2. 文件内容是不是真正的 JS 而不是 HTML"); } else { console.log("🎉 Vant loaded! Components:", Object.keys(Vant)); } </script> ``` --- ### ✅ 第四步:确保使用 HTTP 服务运行(不是双击打开) ⚠️ 浏览器安全策略限制:本地 `file://` 协议下某些行为异常。 ✅ 正确启动方式: #### 方法 1:Python(最简单) ```bash cd 你的项目目录 python -m http.server 8000 ``` 然后访问:[http://localhost:8000](http://localhost:8000) #### 方法 2:Node.js(推荐) ```bash npx serve ``` --- ### ✅ 第五步:替换为你当前的资源引用(建议用在线测试先) 临时改成 CDN 测试,确认逻辑没问题: ```html <!-- 替换本地文件进行测试 --> <script src="https://cdn.jsdelivr.net/npm/vue@3/dist/vue.global.js"></script> <script src="https://fastly.jsdelivr.net/npm/vant@4/lib/vant.min.js"></script> <link rel="stylesheet" href="https://fastly.jsdelivr.net/npm/vant@4/lib/index.css" /> ``` ✅ 如果这时页面正常显示日历 → 说明是你本地 `vant.min.js` 文件的问题! --- ## ✅ 补充:如何判断 `vant.min.js` 内容是否有效? 打开你本地的 `assets/vant.min.js` 文件,查找以下内容: | 查找关键词 | 应该出现的位置 | |-----------|----------------| | `var Vant = (` | 文件开头附近 | | `.padStart` 或 `.includes` | 表示有现代 JS 方法 | | `exports.Calendar` | 表示包含日历组件 | | `{}),Vue` 或 `{},{},Vue` | 表示依赖全局 Vue | ❌ 如果你看到这些内容,说明文件不对: - `<html>`、`<!DOCTYPE>` → 是 HTML 页面! - `404`、`Not Found` → 请求失败 - 空白或只有几行 → 文件损坏 --- ## ✅ 最终建议:提供一个“防错版”下载方案 你可以把这个 JS 内容直接硬编码进 HTML(仅用于测试): ```html <!-- ⚠️ 仅用于测试!正式环境不要这样做 --> <script> // 手动注入 Vant(替代 vant.min.js) fetch('https://fastly.jsdelivr.net/npm/vant@4/lib/vant.min.js') .then(r => r.text()) .then(code => { eval(code); // 动态执行 JS(危险!仅测试用) console.log("✅ Vant 已通过 fetch 注入", typeof Vant); }) .catch(err => { console.error("Failed to load Vant via fetch", err); }); </script> ``` 但这只是临时绕过问题,根本解法还是 **正确保存 `vant.min.js`** --- ## ✅ 总结:你现在要做的是 | 步骤 | 操作 | |------|------| | 1 | 打开 [https://fastly.jsdelivr.net/npm/vant@4/lib/vant.min.js](https://fastly.jsdelivr.net/npm/vant@4/lib/vant.min.js) | | 2 | `Ctrl+A` 全选 → `Ctrl+C` 复制 | | 3 | 打开编辑器 → 新建文件 → `Ctrl+V` 粘贴 | | 4 | 保存为 `assets/vant.min.js`(UTF-8) | | 5 | 启动 HTTP 服务(`python -m http.server`) | | 6 | 刷新页面,看控制台是否输出 `typeof Vant = object` | ➡️ 只要这一步完成,你的代码就能跑起来! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

StarfallRaven13

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值