1420 字
7 分钟
实验2:名片小程序
姓名:池晋原 学号:24020007016
姓名和学号?池晋原,24020007016
本实验属于哪门课程?中国海洋大学26夏《移动软件开发》
实验名称?实验2:名片小程序
博客地址?https://www.half-awake.top/
代码仓库地址?https://github.com/HalfAwake-destiny/Mobile-software-development

一、实验内容#

本次实验的主要内容是创建一个个人名片小程序。名片首页展示个人头图、姓名、学院、自我简介和兴趣爱好,页面底部提供“访问我的博客”按钮;单击按钮后跳转到博客页面,通过 web-view 组件在小程序内直接打开实验一中登记的个人博客(half-awake.top)。通过本次实验,初步掌握了自定义组件的创建与引用、页面间跳转以及 web-view 组件和业务域名的配置方法。

1. 编写名片页面结构#

在 pages/index/index.wxml 中编写名片首页结构,页面从上到下依次包含头图、姓名、学院、“关于我”简介、“兴趣爱好”列表和底部的跳转按钮。其中头图使用 image 组件并设置 mode="aspectFill" 保证图片铺满裁剪;兴趣爱好部分引入自定义组件 hobby-list,通过 items="{{hobbies}}" 传入数据;底部按钮通过 bindtap="openBlog" 绑定点击事件,用于跳转到博客页。

2. 设置名片页面样式#

在 pages/index/index.wxss 中设置名片的整体样式。头图设置为固定高度的圆角卡片并添加阴影,姓名和学院纵向排列、字号区分主次,各栏目之间用细分隔线隔开,底部按钮使用深色背景、白色文字,并通过 hover-class 在按下时降低透明度,形成按压反馈。

3. 抽取并使用自定义组件#

本次实验将重复性较高的部分抽取为自定义组件。hobby-list 组件通过 properties 接收外部传入的 items 数组,再用 wx:for 循环渲染每一项兴趣爱好,包含图标、名称和备注。兴趣爱好数据保存在 pages/index/index.js 的 data 中。组件需要先在页面配置文件 pages/index/index.json 的 usingComponents 中声明,然后才能像普通标签一样在 WXML 中使用。项目中的 navigation-bar 自定义导航栏组件也以同样方式引入。

4. 实现按钮跳转与博客页#

在 pages/index/index.js 中定义按钮事件 openBlog,使用 wx.navigateTo 跳转到博客页面:

openBlog() {
wx.navigateTo({
url: '/pages/blog/blog',
})
}

wx.navigateTo 会把新页面压入页面栈,因此博客页可以通过左上角返回按钮回到名片页。博客页 pages/blog/blog.wxml 中只放置一个 web-view 组件,src 指向个人博客地址:

<web-view src="https://www.half-awake.top"></web-view>

web-view 会自动铺满整个页面,用于在小程序内展示网页内容。

5. 配置业务域名并编译运行#

web-view 组件加载的网页域名必须在小程序管理后台配置后才能正常访问。登录小程序管理后台(mp.weixin.qq.com),在“开发管理 → 开发设置 → 业务域名”中添加 www.half-awake.top。

完成配置后保存代码并重新编译。模拟器中名片首页能够正常显示头图、姓名、简介、兴趣爱好列表和底部按钮;单击“访问我的博客”按钮后,页面跳转到博客页,web-view 中正常加载出个人博客首页,说明组件渲染、页面跳转和域名配置均已生效。

个人名片

点击下方按钮跳转至个人博客

二、问题总结与体会#

实验过程中遇到的第一个问题是点击按钮跳转博客时被拦截。最初博客页打开后无法正常加载网页,原因是 web-view 组件对加载的域名有白名单限制,未配置的域名会被微信拦截。后来在小程序管理后台的“业务域名”设置中添加博客域名并完成校验,同时在开发阶段勾选开发者工具中的“不校验合法域名”选项,跳转功能才恢复正常。这让我认识到,小程序出于安全考虑对外部网页有严格的域名校验,上线前必须提前完成业务域名配置。

第二个问题是自定义导航栏的适配。app.json 中设置 navigationStyle: custom 后,系统默认导航栏被隐藏,顶部状态栏和右上角胶囊按钮的位置需要自行处理。导航栏组件通过 wx.getMenuButtonBoundingClientRect() 获取胶囊按钮的位置,再结合设备信息计算安全区高度,避免了标题被状态栏遮挡的问题。

第三个问题是 web-view 组件的渲染方式。web-view 会自动铺满整个页面,无法与名片内容混排在同一页面,因此需要单独建立一个只包含 web-view 的博客页,再通过 wx.navigateTo 跳转过去;同时博客页的渲染模式需要与全局 Skyline 模式区分,单独设置为 WebView 渲染,保证网页正常加载。

通过本次实验,我掌握了自定义组件的创建和使用方法:组件通过 Component 定义,用 properties 接收外部数据,页面在 JSON 中通过 usingComponents 声明后即可在 WXML 中引用,配合 wx:for 可以方便地渲染列表数据。页面跳转方面,我理解了 wx.navigateTo 与页面栈的关系,以及 web-view 组件用于承载网页的能力边界。把名片页和个人博客串联起来之后,小程序不再只是一个静态展示页,而是成为入口和网页内容的组合,这为后续实验打下了基础。

实验2:名片小程序
https://halfawake-observatory.edgeone.app/posts/exp2-business-card-miniprogram/
作者
Half Awake
发布于
2026-08-25
许可协议
CC BY-NC-SA 4.0