微信小程序基础组件实战指南

【愚公系列】《微信小程序与云开发从入门到实践》025-体验WeUl基础组件 随着微信小程序的普及,越来越多的开发者希望借助其强大的功能和便捷的用户体验,打造出更具吸引力的应用。而在小程序的开发过程中,UI设计则是提升用户体验的关键所在。WeUI,作为一套为微信场景设计的基础组件库,提供了丰富的UI组件和设计规范,帮助开发者快速构建符合微信风格的优雅界面。本篇文章将带你深入体验 WeUI 基础组件,介绍其核心功能和使用方法。我们将从 WeUI 的基本概念入手,逐步展示如何在微信小程序中集成和使用这些组件,包括按钮、表单、对话框、列表等常用元素。 阅读详情

1. 从零开始:认识微信小程序的“积木块”

刚接触微信小程序开发,你是不是感觉有点懵?看着官方文档里一堆组件,不知道从哪儿下手。别担心,我刚开始也这样。其实,你可以把小程序开发想象成搭乐高。那些基础组件,比如 view、text、image,就是一块块最基础、最核心的积木。官方给了你这些标准件,你的任务就是用它们拼出各种酷炫的页面和功能。这篇文章,我就来当你的“搭积木”教练,抛开那些复杂的理论,直接上手,用最实在的案例,带你把这些基础组件玩转。咱们的目标很简单:看完就能用,用了就有效。

为什么基础组件这么重要?因为它们构成了小程序页面的骨架和血肉。几乎你看到的每一个界面元素,背后都是这些组件在支撑。很多新手一上来就想搞复杂的功能,结果在最简单的布局上卡了半天,其实就是没吃透这些“积木”的特性。比如,你想做个简单的图文列表,用错了容器,可能就会导致样式错乱、点击失效。所以,磨刀不误砍柴工,咱们先把这些基础工具摸熟。

你可能听过 WXML 和 HTML 很像,但千万别把它们完全等同。小程序有自己的一套规则和组件体系。view 确实有点像 div,text 有点像 span,但它们的属性和行为有独特的“小程序风格”。理解这些差异,是你避开很多坑的关键。接下来,我会结合我实际开发中踩过的坑和总结的技巧,带你逐个拆解这些核心组件,保证你学得会、记得住、用得上。

2. 布局基石:view 视图容器的深度玩法

2.1 不只是 div:view 的独门秘籍

一说 view,老手都会告诉你:“它就是小程序的 div。” 这话对,但不全对。view 确实是块级容器,用来划分区域、实现布局,这是它和 div 相似的地方。但小程序为 view 注入了一些非常实用的交互能力,这正是它比普通 div 更香的地方。

最常用的就是 hover-class 属性。这玩意儿干嘛的?简单说,就是给你的视图块添加一个“按压态”效果。用户手指按上去的时候,可以变个色、加个阴影,给个明确的反馈。我做过一个按钮列表,一开始没加这个,上线后用户反馈说“不知道点没点到”,体验很糟糕。加上之后,立马感觉专业多了。用法超简单:

<view class="normal-view" hover-class="pressed-view">
  点我试试
</view>

然后在对应的 WXSS 文件里定义 .pressed-view 的样式,比如 background-color: #f0f0f0;。这里有个小坑我踩过:hover-class 指定的样式类,会覆盖原 class 的样式,而不是叠加。所以,你最好在 pressed-view 里写全按压时需要的所有样式,或者用更具体的选择器来管理。

另外三个属性是 hover-start-time、hover-stay-time 和 hover-stop-propagation。hover-start-time 是设置按住多久后才触发按压态,单位是毫秒。有时候为了防止误触,我会设成 50ms,这样轻轻碰一下不会有效果。hover-stay-time 是手指松开后,按压态保持多久,默认是400ms。如果你想要更迅捷的反馈,可以设短一点,比如200ms。hover-stop-propagation 这个属性挺有意思,它用来阻止事件冒泡。啥意思呢?如果你在一个大 view 里嵌套了小 view,两个都设置了 hover-class,点小 view 的时候,大 view 的按压态也会被触发。如果你不想要这个效果,在小 view 上设置 hover-stop-propagation=”true” 就行了。

2.2 实战:用 view 构建卡片式布局

光说不练假把式,咱们来用 view 搭一个现在特别流行的卡片式布局。这种布局干净清爽,信息层级分明,非常适合商品展示、内容列表等场景。

假设我们要做一个简单的文章摘要卡片,包含头像、作者名、文章标题和简短摘要。结构可以这样设计:

<!-- 最外层卡片容器,用于统一阴影、圆角和边距 -->
<view class="article-card">
  <!-- 卡片头部,放置作者信息 -->
  <view class="card-header">
    <image class="author-avatar" src="/images/avatar.png" mode="aspectFill"></image>
    <view class="author-info">
      <text class="author-name">技术老张</text>
      <text class="post-time">2小时前</text>
    </view>
  </view>
  <!-- 卡片主体,放置文章主要内容 -->
  <view class="card-body">
    <text class="article-title">小程序基础组件避坑指南</text>
    <text class="article-summary">本文总结了view、text、image等核心组件在实际开发中容易遇到的5个典型问题及解决方案...</text>
  </view>
  <!-- 卡片底部,放置操作按钮或标签 -->
  <view class="card-footer">
    <view class="tag">#前端</view>
    <view class="tag">#实战</view>
    <view class="read-count">阅读 1.2k</view>
  </view>
</view>

对应的样式(WXSS)可以这样写:

.article-card {
  margin: 20rpx;
  padding: 30rpx;
  background-color: #fff;
  border-radius: 16rpx;
  box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.08);
  /* 加上按压反馈 */
  hover-class: card-active;
}

.card-active {
  background-color: #fafafa;
  box-shadow: 0 6rpx 24rpx rgba(0, 0, 0, 0.12);
}

.card-header {
  display: flex;
  align-items: center;
  margin-bottom: 24rpx;
}

.author-avatar {
  width: 80rpx;
  height: 80rpx;
  border-radius: 50%;
  margin-right: 20rpx;
}

.author-info {
  display: flex;
  flex-direction: column;
}

.author-name {
  font-size: 32rpx;
  font-weight: bold;
  color: #333;
}

.post-time {
  font-size: 24rpx;
  color: #999;
  margin-top: 8rpx;
}

.card-body {
  margin-bottom: 24rpx;
}

.article-title {
  display: block;
  font-size: 36rpx;
  font-weight: bold;
  color: #1a1a1a;
  margin-bottom: 16rpx;
  line-height: 1.4;
}

.article-summary {
  display: block;
  font-size: 28rpx;
  color: #666;
  line-height: 1.5;
}

.card-footer {
  display: flex;
  align-items: center;
  padding-top: 20rpx;
  border-top: 1rpx solid #f0f0f0;
}

.tag {
  font-size: 22rpx;
  color: #007aff;
  background-color: #e6f2ff;
  padding: 6rpx 16rpx;
  border-radius: 20rpx;
  margin-right: 16rpx;
}

.read-count {
  font-size: 24rpx;
  color: #999;
  margin-left: auto; /* 利用flex布局的margin-left:auto实现右对齐 */
}

通过这个例子,你可以看到 view 是如何通过嵌套和样式组合,构建出复杂而精美的界面的。关键在于理解盒模型和 Flex 布局,这是用好 view 的基础。多练几次,你就能随心所欲地搭建各种页面结构了。

3. 文字与图片:text 和 image 的细节掌控

3.1 text:让文字听话的秘密

很多新手觉得 text 组件就是显示文字,没什么好讲的。那我问你:小程序里,用户能长按复制一段文字吗?一段文字里的连续空格能正常显示吗?如果你答不上来,那这部分就得好好看了。

text 组件有一个非常重要的属性:user-select。它的默认值是 false,也就是说,默认情况下,小程序里的文字是不能被用户选中复制的。如果你正在做一个显示代码片段、快递单号、订单号的页面,这个功能就至关重要。只需要设置 user-select=”true”,用户就可以长按文字进行复制了。实测下来,这个体验对用户非常友好。

另一个属性 space,是处理空格的。在 HTML 里,连续多个空格默认会被合并成一个,但在小程序里,你可以通过 space 属性控制。space=”ensp” 表示用中文字符空格的一半大小来显示空格,space=”emsp” 用中文字符空格大小,space=”nbsp” 则用根据字体设置的空格大小。这在排版诗歌、对齐文本时特别有用。

decode 属性可以解码 HTML 实体字符。比如你在数据里存了 &amp;(代表 & 符号),如果 decode=”true”,它就会正确显示为 &。这个在处理从后端接口获取的、可能包含特殊字符的文本时很实用。

我举个例子,一个显示用户协议和联系邮箱的场景:

<view class="legal-text">
  <text user-select=”true”>用户协议编号:XCX20240527001\n</text>
  <text space=”emsp”>请仔细阅读  以上条款(注意这里的空格)\n</text>
  <text decode=”true”>联系我们:support&amp;example.com</text>
</view>

这样,协议编号可以复制,空格清晰,邮箱地址也能正确显示。

3.2 image:图片加载优化与交互增强

图片是小程序里最吃性能的资源之一,处理不好,页面卡顿、加载慢的问题就全来了。image 组件的 mode 属性,就是你优化图片显示的第一道利器。

mode 有13种缩放模式,我最常用的是这几种:

  • scaleToFill:默认。不保持纵横比缩放图片,使图片的宽高完全拉伸至填满 image 元素。容易变形,慎用。
  • aspectFit:保持纵横比缩放图片,使图片的长边能完全显示出来。也就是说,图片会被完整显示,但可能会有留白。适合展示完整的、不可裁剪的图片,如证件照、产品全景图。
  • aspectFill:保持纵横比缩放图片,只保证图片的短边能完全显示出来。也就是说,图片会被裁剪,但能填满容器。非常适合做头像、背景图,保证显示区域被填满,且不变形。
  • widthFix:宽度不变,高度自动变化,保持原图宽高比不变。这是响应式布局的神器! 我几乎在做任何需要自适应宽度图片的地方都用它。你只需要设定一个宽度(比如100%),高度就会自动按比例计算,完美适配不同屏幕。
<!-- 商品列表中的缩略图,宽度固定,高度自适应 -->
<image src=”{{product.imageUrl}}” mode=”widthFix” style=”width: 100%;” />

<!-- 用户圆形头像,用aspectFill保证填满圆形区域 -->
<image src=”{{user.avatar}}” mode=”aspectFill” style=”width: 120rpx; height: 120rpx; border-radius: 50%;” />

另一个强大的属性是 show-menu-by-longpress。设置为 true 后,用户长按图片,可以调出微信的原生菜单,进行“发送给朋友”、“收藏”、“保存图片”、“搜一搜”等操作。如果你的图片里有二维码,还会出现“识别二维码”的选项。这个功能极大地增强了图片的交互性,几乎零成本提升了用户体验。但要注意,它需要用户长按,属于被动触发,不要把它作为核心功能路径。

图片加载的优化还有懒加载 lazy-load。在列表页中,对于屏幕外的图片,设置 lazy-load=”true” 可以延迟加载,显著提升页面初次渲染速度。不过要记得,它只在页面滚动时生效,对于 scroll-view 内的图片无效。

4. 实现跳转与滚动:navigator 和 scroll-view 的核心应用

4.1 navigator:小程序内的导航专家

页面跳转是小程序最基本的功能,navigator 组件就是实现这个功能的官方推荐方式。它比用 JS 的 wx.navigateTo API 更语义化,也更方便在 WXML 中直接使用。

navigator 的灵魂在于 open-type 属性,它决定了跳转的行为模式。新手最容易搞混的就是这几种:

  • navigate (默认):最常用的跳转。可以跳到新页面,新页面左上角有返回按钮,能回到原页面。但不能跳转到 tabBar 页面。相当于在页面栈里压入一个新页面。
  • redirect:关闭当前页面,跳转到新页面。当前页面会从页面栈里移除,所以你不能返回。同样不能跳转到 tabBar 页面。适合用在登录后跳转首页这种“一去不复返”的场景。
  • switchTab:专门用于跳转到 tabBar 页面,并且会关闭所有非 tabBar 页面。注意:这种模式下不能使用 url 传参(query 参数)。如果需要带参数,通常需要借助全局数据或者本地存储。
  • reLaunch:关闭所有页面,打开到应用内的某个页面。相当于清空页面栈,然后打开一个新页面。可以跳转到任何页面(包括 tabBar),也可以传参。常用于“回到首页”或“切换用户身份后重置应用状态”这种需要彻底重置导航栈的场景。

我画个简单的流程图帮你理解它们的区别:假设页面栈是 [A, B, C],当前在 C 页面。

  • navigate 到 D:栈变成 [A, B, C, D]。可以从 D 返回到 C。
  • redirect 到 D:栈变成 [A, B, D]。无法返回 C。
  • switchTab 到 Tab 页 E:栈变成 [E]。A, B, C 全没了。
  • reLaunch 到 F:栈变成 [F]。A, B, C 全没了。

传参是通过 url 属性后的 query 字符串实现的:

<navigator url=”/pages/detail/detail?id={{item.id}}&type=news” open-type=”navigate”>
  查看详情
</navigator>

在 detail 页面的 onLoad 生命周期函数里,可以通过 options.id 和 options.type 来获取这些参数。

4.2 scroll-view:打造可滚动的定制视图

小程序页面本身有垂直方向的滚动,但如果你想在页面内部做一个横向滚动的标签栏,或者一个固定高度的可滚动列表区域,就需要 scroll-view 了。

scroll-view 必须指定一个固定高度或宽度,才能触发滚动。这是第一个坑。比如做纵向滚动:

<scroll-view scroll-y style=”height: 500rpx;”>
  <!-- 很长很长的内容 -->
</scroll-view>

做横向滚动:

<scroll-view scroll-x style=”white-space: nowrap; width: 100%;”>
  <view style=”display: inline-block; width: 200rpx;”>标签1</view>
  <view style=”display: inline-block; width: 200rpx;”>标签2</view>
  <!-- 更多横向排列的项 -->
</scroll-view>

scroll-top 和 scroll-left 属性允许你动态设置滚动条的位置。这在一些场景下非常有用,比如用户点击一个“回到顶部”按钮,或者阅读文章时记录滚动位置,下次进来直接定位。你可以通过数据绑定,将这两个属性与 Page 的 data 关联,然后在 JS 中修改 data 的值来控制滚动位置。

<scroll-view scroll-y style=”height: 80vh;” scroll-top=”{{scrollTop}}” bindscroll=”onScroll”>
  <!-- 内容 -->
</scroll-view>
<button bindtap=”scrollToTop”>回到顶部</button>
Page({
  data: {
    scrollTop: 0
  },
  onScroll(e) {
    // 可以在这里记录滚动位置
    console.log(e.detail.scrollTop);
  },
  scrollToTop() {
    this.setData({
      scrollTop: 0
    })
  }
})

注意:scroll-view 内使用 text 组件时,text 必须嵌套在 view 内,否则会出现滚动异常。另外,在 scroll-view 里使用 textarea、map、canvas、video 等原生组件时,会有诸多限制,需要特别注意官方文档的说明。

5. 轮播与表单:swiper 和 button 的进阶技巧

5.1 swiper:不仅仅是轮播图

swiper 组件通常被用来做首页的轮播图,但它其实是一个强大的滑动容器。除了放图片,你完全可以放任何自定义组件,实现如卡片切换、教程引导页、tab内容滑动切换等效果。

它的几个核心属性决定了体验:

  • indicator-dots:是否显示面板指示点(那些小圆点)。
  • indicator-color / indicator-active-color:分别设置指示点的默认颜色和当前激活的颜色。好好搭配,能提升不少视觉质感。
  • autoplay:是否自动切换。做Banner图一般要开启。
  • interval:自动切换时间间隔,配合 autoplay 使用。
  • circular:是否采用衔接滑动。强烈建议开启! 开启后,滑动到最后一张时,继续滑动会看到第一张,体验是循环的,非常顺滑。关闭的话,到最后一张就滑不动了,很生硬。
  • vertical:滑动方向是否为纵向。可以做纵向的轮播。

一个常见的轮播图代码示例:

<swiper indicator-dots indicator-color=”rgba(255,255,255,.6)” indicator-active-color=”#fff” autoplay interval=”3000” circular>
  <swiper-item wx:for=”{{bannerList}}” wx:key=”id”>
    <image src=”{{item.imageUrl}}” mode=”aspectFill” style=”width:100%;height:100%;” bindtap=”goToLink” data-link=”{{item.link}}”/>
  </swiper-item>
</swiper>

这里用了 wx:for 循环渲染 swiper-item,每个 item 里放一个 image。图片的 mode 用了 aspectFill 来保证填充不变形,并绑定了点击事件 bindtap,通过 data-* 属性传递点击项对应的链接参数。

swiper 还提供了 bindchange 事件,在 current 改变时会触发。你可以用它来同步显示当前是第几页,或者做一些复杂的联动效果。

5.2 button:样式与开放能力的结合

小程序的 button 组件远不止一个可点击的方块。它深度集成了微信的许多开放能力,是连接用户与微信服务的桥梁。

首先看基础样式控制:

  • type:决定按钮的主色调。primary 是绿色,default 是白色,warn 是红色。我一般用 primary 表示主操作(如确定、提交),default 表示次要操作(如取消),warn 表示警示性操作(如删除)。
  • size:default 是默认大小,mini 是小尺寸。小尺寸适合放在狭小空间或作为辅助操作。
  • plain:镂空按钮。背景色透明,只有边框和文字有颜色,视觉上更轻量。
  • loading:显示加载中状态。在发起网络请求等待响应时,将其设为 true,可以防止用户重复点击,并给予等待反馈。

然后是重头戏 open-type,它赋予了按钮调用微信原生能力的力量:

  • contact:打开客服会话。如果用户是在小程序客服会话内点击此按钮,可以回复客服消息。这是实现用户沟通最便捷的方式。
  • getPhoneNumber:获取用户手机号。点击后,用户需要确认授权。授权后,可以通过 bindgetphonenumber 事件回调获取到加密数据,需在后台配合小程序 API 进行解密才能拿到真实手机号。这是敏感信息,必须谨慎处理。
  • getUserInfo(已调整):获取用户信息。现在更推荐使用 wx.getUserProfile API。
  • launchApp:打开APP。需要APP和小程序关联,且用户已安装该APP。
  • openSetting:打开授权设置页。当用户拒绝了某些权限(如位置、相册)后,可以引导用户点击此按钮去重新开启。
  • feedback:打开“意见反馈”页面,用户可以直接向开发者反馈问题。

一个调用客服的按钮示例:

<button open-type=”contact” session-from=”weapp”>联系客服</button>

一个获取用户手机号的按钮(需要企业主体小程序):

<button open-type=”getPhoneNumber” bindgetphonenumber=”getPhoneNumberHandler”>获取手机号</button>
Page({
  getPhoneNumberHandler(e) {
    if (e.detail.errMsg === ‘getPhoneNumber:ok’) {
      // e.detail 中包含加密数据 encryptedData 和初始向量 iv
      // 需要将 encryptedData 和 iv 发送到自己的服务器,用 session_key 和小程序的 appId 进行解密
      console.log(‘加密数据:’, e.detail.encryptedData);
      wx.request({
        url: ‘你的服务器接口地址’,
        method: ‘POST’,
        data: {
          encryptedData: e.detail.encryptedData,
          iv: e.detail.iv
        },
        success(res) {
          console.log(‘解密后的手机号:’, res.data.phoneNumber);
        }
      })
    } else {
      // 用户拒绝授权或其他错误
      console.log(‘用户拒绝或失败:’, e.detail.errMsg);
    }
  }
})

用好 button 的开放能力,能极大丰富你小程序的功能,但务必遵守微信的规范,尊重用户隐私。

6. 数据驱动视图:条件渲染与列表渲染实战

小程序是数据驱动的,WXML 里的动态内容全靠数据绑定、条件渲染和列表渲染来实现。这是让页面“活”起来的关键。

6.1 条件渲染:wx:if 与 hidden 的抉择

条件渲染就是根据条件来决定是否渲染某块视图。主要用 wx:if、wx:elif、wx:else 这一套指令。

<view wx:if=”{{score >= 90}}”>优秀</view>
<view wx:elif=”{{score >= 60}}”>及格</view>
<view wx:else>不及格</view>

这里有个重要的性能考量点:wx:if 和 hidden 的区别。

  • wx:if 是真正的条件渲染。当条件为 false 时,组件不会被渲染到页面结构里,就像它不存在一样。切换条件时,组件有销毁和重新创建的过程。适合在条件切换不频繁,或者初始渲染开销大的情况下使用。
  • hidden 只是简单的显示/隐藏控制。无论条件如何,组件始终会被渲染,只是通过样式 display: none 来控制是否显示。没有组件的销毁与创建过程。适合需要频繁切换显示状态的场景。

所以,如果你有一个很复杂的组件,比如包含大量子节点或复杂逻辑,但只是偶尔显示一下,用 wx:if 更好,因为它不显示时就完全不占资源。如果是一个需要频繁显示/隐藏的简单组件(比如加载中提示),用 hidden 性能更优,因为避免了反复创建销毁的开销。

6.2 列表渲染:wx:for 与 key 的重要性

列表渲染用 wx:for 指令,它可以遍历数组或对象,重复渲染其子组件。wx:for-item 可以指定当前元素的变量名,wx:for-index 指定当前下标的变量名。

<view wx:for=”{{fruitList}}” wx:for-item=”fruit” wx:for-index=”idx”>
  {{idx + 1}}. {{fruit.name}} - 价格:{{fruit.price}}元
</view>

wx:key 是列表渲染的性能关键! 它用来指定列表中项目的唯一标识符。当数据改变触发渲染层重新渲染时,框架会带有 key 的组件进行重新排序,而不是销毁和重新创建,从而提高渲染效率。key 的值可以有两种形式:

  1. 字符串,代表在 for 循环的 array 中 item 的某个 property,该 property 的值需要是列表中唯一的字符串或数字,且不能动态改变。比如 wx:key=”id”。
  2. 保留关键字 *this,代表 item 本身。这种表示需要 item 本身是一个唯一的字符串或者数字。

我强烈建议,只要你的列表数据有唯一标识字段(如 id),就一定要加上 wx:key。没有 key 的列表,在数据顺序改变时,可能会出现渲染错乱,性能也较差。

一个结合了条件渲染和列表渲染的实战案例:一个任务列表,显示任务项,并根据任务状态显示不同的操作按钮。

<!-- pages/todo/todo.wxml -->
<view class=”task-list”>
  <view wx:for=”{{tasks}}” wx:key=”id” class=”task-item {{item.completed ? ‘completed’ : ‘’}}”>
    <checkbox checked=”{{item.completed}}” bindtap=”toggleTask” data-id=”{{item.id}}” />
    <text class=”task-name”>{{item.name}}</text>
    <view wx:if=”{{!item.completed}}” class=”action-btns”>
      <button size=”mini” bindtap=”editTask” data-id=”{{item.id}}”>编辑</button>
      <button size=”mini” type=”warn” plain bindtap=”deleteTask” data-id=”{{item.id}}”>删除</button>
    </view>
    <text wx:else class=”completed-text”>已完成</text>
  </view>
</view>
// pages/todo/todo.js
Page({
  data: {
    tasks: [
      { id: 1, name: ‘学习小程序组件’, completed: false },
      { id: 2, name: ‘编写项目文档’, completed: true },
      { id: 3, name: ‘调试接口问题’, completed: false }
    ]
  },
  toggleTask(e) {
    const id = e.currentTarget.dataset.id;
    let tasks = this.data.tasks;
    const index = tasks.findIndex(task => task.id === id);
    tasks[index].completed = !tasks[index].completed;
    this.setData({ tasks });
  },
  editTask(e) {
    const id = e.currentTarget.dataset.id;
    // 跳转到编辑页面,传递id
    wx.navigateTo({
      url: `/pages/edit/edit?id=${id}`
    });
  },
  deleteTask(e) {
    const id = e.currentTarget.dataset.id;
    wx.showModal({
      title: ‘确认删除’,
      content: ‘删除后无法恢复’,
      success: (res) => {
        if (res.confirm) {
          let tasks = this.data.tasks.filter(task => task.id !== id);
          this.setData({ tasks });
        }
      }
    });
  }
})

这个例子综合运用了数据绑定、列表渲染、条件渲染和事件处理。wx:if 根据任务是否完成来控制显示操作按钮还是“已完成”文本。wx:key=”id” 确保了列表更新的高效。事件处理函数通过 data-* 属性获取具体是哪个任务项被操作。通过这样的组合,一个动态交互的任务列表就实现了。多写几次这样的综合案例,你对数据驱动视图的理解会深刻很多。

《微信小程序开发实战》课后题 1.微信小程序可以通过________方式打开。答案:扫描二维码2.微信开发者工具中的上传是指将代码上传到________。答案:小程序管理后台3.微信小程序的项目配置文件是________。答案:project.config.json4.微信小程序打开后的第一个页面在________文件中进行配置。答案:app.json5.微信开发者工具中Console面板的作用是________。答案:输出调试信息1.微信小程序有着无须下载安装,使用方便快捷的特点。( √ )2.微信小程序不仅可以完全取代原生APP,而 阅读详情

相关推荐

04-微信小程序常用组件-基础组件

04-微信小程序常用组件-基础组件。

感谢关注-最近在编写开源的自动化测试框架还没整理完 803

微信小程序入门教程+案例demo

原文网址:https://blog.youkuaiyun.com/qq137722697/article/details/52988719 认清微信小程序开发 其实,我觉得小程序就是将微信官方提供20+个基础组件(目前有26个)进行排列组合,然后加上一些css样式,对用户的操作进行反馈(调微信官方提供的60+个api)。26个基础组件+60个开放api=半天就搞定了吧?(认真跟着下面的教程走半天足够了) ...

爱分享的程序员 277

微信小程序元件库开发实战指南

微信小程序自推出以来,以其无需下载安装、用完即走的便捷性迅速占领市场,成为企业和开发者关注的焦点。它代表了一种全新的连接用户与服务的方式,通过微信平台强大的用户基数,为用户提供了丰富的应用场景和使用体验。微信小程序,通常指的是运行在微信内的应用程序。它们体积小巧,不需要用户进行安装,通过“扫一扫”或搜索即可快速打开使用。小程序结合了Web应用的便捷性与原生应用的流畅体验,能够提供消息通知、线下扫码、微信支付等微信生态内的服务。

weixin_35935514的博客 932

五.微信小程序 基础组件

微信小程序 基础组件 文章目录微信小程序 基础组件一.基础组件二.属性类型三.共同属性类型四.组件列表1. 视图容器( View Container):2. 基础内容(Basic Content):3. 表单(Form):4. 导航(Navigation):5. 多媒体(Media):6. 地图(Map):7. 画布(Canvas):8. 客服会话: 一.基础组件 组件是视图层的基本组成单位. ...

weixin_43167546的博客 785

微信小程序核心组件实战指南

微信小程序组件是构建小程序界面和交互的基础元素,它们如同传统应用程序中的控件,使得开发者能够通过预定义的接口快速实现丰富的界面和功能。组件不仅简化了开发流程,提高了开发效率,而且有助于保持代码的模块化和可维护性。在接下来的章节中,我们将深入探讨不同类型的微信小程序组件,包括它们的特性、使用场景以及如何进行性能优化,从而帮助开发者更好地理解和应用这些组件,设计出高效、美观、用户体验良好的小程序应用。

weixin_42348783的博客 381

利用Spm12进行fMRI数据分析:从预处理到结果解读的完整指南

本文提供了利用SPM12进行fMRI数据分析的完整流程指南,涵盖从数据预处理、统计建模到结果解读的全过程。详细介绍了在MATLAB环境下使用SPM12图形界面完成头动矫正、空间标准化等关键步骤的操作方法与避坑技巧,帮助神经科学研究者和心理学研究者高效处理功能磁共振成像数据并产出可靠结果。

weixin_29079671的博客 452

微信小程序之基础组件

框架为开发者提供了一系列基础组件,开发者可以通过组合这些基础组件进行快速开发。详细介绍请参考微信官方文档-基础组件。 注意:所有组件与属性都是小写,以连字符-连接 1、属性类型 类型 描述 注解 Boolean 布尔值 组件写上该属性,不管是什么值都被当作true;只有组件上没有该属性时,属性值才为false。 如果属性值为变量,变量的值会被转换为 Boolean 类型 Number 数字 1,2.5 String 字符串...

朗朗上口就行啦的博客 1492

基于 Quest 摄像头数据开发的原理介绍【Unity Meta Quest MR 开发教程】

比如想在识别到的现实物体上叠加虚拟物体,需要知道这个现实物体在 Unity 的世界坐标下的哪个位置,是带有 x,y,z 三个轴的数据的。而 WebCamTexture 捕捉到的图像只是个 2D 的平面,没有三维世界的深度信息,我们通过物体识别算法识别到的物体坐标只是在这个 2D 平面上的一个屏幕坐标,可以理解为 Quest 拍摄了一张照片,我们识别到这张照片上的某个像素点为需要识别的现实物体的中心。是不是看起来比较复杂?Quest 的相机访问功能是在安卓的。

qq_46044366的博客 2104

微信小程序基础组件全解析:从零开始掌握开发必备技能

微信小程序的基础组件是开发的基石,掌握它们能让你快速上手小程序开发。<view>是容器,所有组件都离不开它<text>比<view>更适合显示文本<image>的mode属性是关键<button><input><swiper>是交互的核心📌小贴士:不要试图记住所有属性,先掌握常用属性,再在实践中逐步探索更多功能。

lsp_kudang的博客 1242

STM32N6低功耗模式详解:从Sleep到VBAT的工程实践

低功耗模式是嵌入式系统能效设计的核心机制,其本质是通过动态调控CPU时钟、外设供电与电压域状态,在唤醒延迟、功能保留与静态电流之间实现最优平衡。基于Arm Cortex-M55内核的STM32N6采用多电压域架构(核心域/保持域/备份域/模拟域),支持Sleep、Stop、Standby及VBAT四级功耗分级,并深度融合DVFS(动态电压频率缩放)与外设时钟门控等关键技术。该设计不仅显著降低待机电流至亚微安级,更保障RTC持续计时、TCM内容可选保留、WKUP快速唤醒等关键能力,广泛应用于电池供电的AIoT

weixin_36369848的博客 244

程序员必备75道逻辑思维题(附答案)之二

逻辑训练 身为一个大数据工程师,平时的算法训练还是不能少的,今天给大家看几道我曾经看到的逻辑思维题觉得很好,想分享一下。 【6】一个球、一把长度大约是球的直径2/3长度的直尺.你怎样测出球的半径?方法很多,看看谁的比较巧妙 【7】五个大小相同的一元人民币硬币。要求两两相接触,应该怎么摆? 【8】猜牌问题 S先生、P先生、Q先生他们知道桌子的抽屉里有16张扑克牌:红桃A、Q、4 黑桃J、8、4、2、...

蛋蛋淡淡定的庄园 3547

微信小程序基础组件

微信小程序是一种不需要下载安装即可使用的应用,它是基于微信平台的一种新型应用形式。在开发微信小程序时,我们需要使用一些基础组件来构建页面和实现交互功能。这些基础组件提供了各种用户界面元素和功能,使得开发者能够更快、更高效地开发小程序应用。

m0_75026936的博客 378

通达信主力检测利器

主力轨迹:100*EMA(EMA(MTM,N1),N1)/EMA(EMA(ABS(MTM),N1),N1),COLORWHITE;主力拉高:IF(VAR51<REF(VAR51,1),VAR51,0),COLORYELLOW,NODRAW;洗盘:IF(VAR5<REF(VAR5,1),VAR5,0),COLOR000079,NODRAW;主力进场:IF(VAR5>REF(VAR5,1),VAR5,0),COLORRED,NODRAW;MAZL:MA(主力轨迹,N2),COLORYELLOW;

zhibiaogong的博客 7463

微信小程序开发入门:基础组件与布局实战

view 组件是小程序的基础容器组件,类似于HTML中的 div ,可作为各类元素的包裹容器,搭配Flex布局,能实现任意复杂的页面结构,是小程序页面的“基础积木”;布局是小程序页面开发的基础,微信小程序支持CSS Flex布局,这也是小程序中最常用的布局方式,其核心优势在于能快速实现元素的横向、纵向排列,且适配不同屏幕尺寸,满足各类页面的排版需求。从基础实验的设计类任务出发,小程序页面开发的完整流程可分为基础配置、多页面交互、综合页面设计三个阶段,层层递进,逐步实现小程序的功能与视觉完善。

xuezhixia02的博客 191

从ADS到SystemVue:当简单链路预算不够用时,我的射频系统级仿真方案升级实录

本文详细介绍了从ADS到SystemVue的射频系统级仿真升级路径,重点分析了基础链路预算在多端口元件和复杂场景下的局限性,并提供了SystemVue在非线性系统验证和跨域协同分析中的优势。通过实际案例展示了如何平滑迁移工具链,提升仿真精度和效率,适用于5G、毫米波雷达等现代射频系统设计。

weixin_34233974的博客 343

71.qt quick-可伸展菜单-抽屉栏示例 通用QML界面(一键换肤)

特点: 支持动态添加item、删除item、自适应界面 附带添加删除、展开等动画 同时支持qwidget、qml加载 支持number提示(比如消息数量等) 侧边抽屉栏支持动画伸展 支持换肤、拖拽、最大化等

抵抗时间扭曲,坚持做一件有意义的事 5286

微信小程序基础组件之视图容器

什么是组件? 组件是视图层的基本组成单元,组件自带一些功能与微信风格的样式,一个组件通常包括开始标签和结束标签,属性用来修饰这个组件,内容在两个标签之内。 注意:所有组件与属性都是小写,以连字符-连接共同属性类型 基础组件分为以下七大类,分别是:视图容器(View Container),基础内容(Basic Content),表单(Form),导航(Navigation),多媒体(Media)

Hedong的博客 2357

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

渲染模式、基础组件、矢量图、样式设置——微信小程序学习笔记

调成webview模式,更稳定一些需在项目配置app.json 中删除某些: text 相当于 HTML 中的 span,不会换行的文本。 图标组件 ,icon的类型(type),有效值:success, success_no_circle, info, warn, waiting, cancel, download, search, clear,具体可见:基础内容 / icon 2.2 表单组件 2.2.1 button plain 是否镂空背景色透明,boolean值的属性:如果是tru

xiaopei_yan的博客 1003

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

微信小程序宿主环境及其五个基础组件使用

微信小程序五个基础组件使用 宿主环境 宿主环境(host environment)指的是程序运行所必须的依赖环境。例如: Android 系统和 iOS 系统是两个不同的宿主环境。安卓版的微信 App 是不能在 iOS 环境下运行的,所以,Android 是安卓软件的宿主环境,脱离了宿主环境的软件是没有任何意义的! 手机微信是小程序的宿主环境,如图所示 包括了以下的内容 通信模型 运行机制 组件 API 通信的主体 程序中通信的主体是渲染层和逻辑层,其中: WXML 模板和 WXSS 样式工作在渲

xiaoxu的博客 2958

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

微信小程序基础组件笔记

微信小程序基础组件笔记 text 相当于web中的 span 标签, 行内元素, 不会换行 view 相当于 web 中的div标签, 块级元素, 会换行 checkbox 就是web中的复选框标签 block 不渲染, 包裹元素 给 input 标签绑定事件 bindinput; 如何获取输入框的值,通过事件来源获取 e.target.value 输入框的值不能直接赋值到data,正确写法: this.setData({num: e.target.value} // js Pa

皮皮熊m_的博客 228

微信小程序 基础组件

基础组件框架为开发者提供了一系列基础组件,开发者可以通过组合这些基础组件进行快速开发。什么是组件:组件是视图层的基本组成单元。组件自带一些功能与微信风格的样式。一个组件通常包括开始标签和结束标签,属性用来修饰这个组件,内容在两个标签之内。&lt;tagname property="value"&gt; Content goes here ... &lt;/tagename&gt;注意:所有组件...

Blue的博客 823
上一篇: Jetson Orin NX刷机避坑指南:从SDK Manager安装到JetPack 6.2完整流程
下一篇: Ansys Lumerical | 行波马赫曾德尔调制器的多物理场协同优化策略
vim8coder
博客等级 码龄1天 0粉丝 1693原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值