微信小程序入门案例

本文通过具体的实例记录微信小程序的入门知识。

1、特点

  • 不需要安装
  • 依赖微信应用
  • 更接近原生APP
  • 丰富的框架及API可达到快速开发的目的

2、工具使用

在开发的过程中可以使用微信开发者工具,更加直观的进行调式及看到界面:下载地址

3、目录结构

  • pages:小程序页面,包括js(页面逻辑),wxml(页面结构),wxss(页面样式)和json(页面配置)
  • app.js:小程序公共逻辑
  • app.json:小程序公共配置
  • app.wxss:小城市公共样式

4、公共配置

  • window:设置默认页面的窗口表现,如图的顶部红色区域
 "window":{
    // 导航栏背景颜色
    "navigationBarBackgroundColor": "#bc162c",
    // 导航栏标题文字内容
    "navigationBarTitleText": "初始微信小程序",
    // 导航栏标题颜色,仅支持 black/white
    "navigationBarTextStyle":"white"
  }
  • tabBar:设置小程序的tab最多5个,最少2个,如图的底部tab
"tabBar": {
    // 背景色
    "backgroundColor": "#bc162c",
    // 背景文字
    "color": "#8a8a8a",
    // 高亮背景文字
    "selectedColor":"#fff",
    "list": [
        {
        "pagePath": "pages/index/index", // 路由页面
        "text": "首页", // 路由文字
        "iconPath":"images/home1.png", // 默认显示图标必须是图片81*81
        "selectedIconPath":"images/home.png" // 高亮显示图标
        },
        {
        "pagePath": "pages/logs/logs",
        "text": "日志",
        "iconPath":"images/log1.png",
        "selectedIconPath":"images/log.png"
        }
    ]
}

5、微信组件应用

微信小程序自带一些常规组件,包括轮播,表单组件等。

轮播图组件swiper

用于首页的轮播图显示,可以设置自动轮播和序号点

核心代码:

<!-- index.wxml -->
<swiper indicator-dots="indicatorDots"
        indicator-color="#FFF"
        indicator-active-color = "#bc162c"
        autoplay="{{autoplay}}"
        interval="{{interval}}"
        duration="{{duration}}">
  <block wx:for="{{imgUrls}}">
    <swiper-item>
      <image src="{{item}}" class="slide-image"/>
    </swiper-item>
  </block>
</swiper>
// index.js
Page({
  data: {
    imgUrls: [
      ‘/images/vue.jpg‘,
      ‘/images/angular.jpg‘,
      ‘/images/react.jpg‘
    ],
    indicatorDots: true,
    autoplay: true,
    interval: 5000,
    duration: 1000
  }
})
/* index.wxss */
.slide-image{
  width: 100%;
  height: 300rpx;
}

可以看出,微信的组件开发和vue一样都是通过数据控制view层的,知识点:

  • 双大括号:表示数据绑定,支持简单的表达式;
  • wx:for:表示列表渲染,使用item表示数组数据;使用index表示数组的下标;
  • data:放置变量的数据;
  • rpx:微信中的单位,rpx单位是微信小程序中css的尺寸单位,rpx可以根据屏幕宽度进行自适应,规定屏幕宽为750rpx

可滚动组件scroll-view

用于显示多个模块的滚动显示

核心代码:

<!-- index.wxml -->
<scroll-view class="scroll-view" scroll-x="true">
    <view class="scroll-view-item"  wx:for="{{viewDatas}}">
      <view class="view-item-title">
          <text>{{item.title}}\n</text>
          <text>¥{{item.price}}</text>
      </view>
      <image class="view-item-image" src="{{item.imgUrl}}"></image>
    </view>
</scroll-view>
// index.js
viewDatas:[{
  title:"使用AngularJS开发下一代Web应用",
  price:"299.00",
  imgUrl:"/images/10-min.png"
},{
  title:"Vue+Webpack打造web应用",
  price:"229.00",
  imgUrl:"/images/2-min.png"
},{
  title:"React知识点综合运用实例",
  price:"329.00",
  imgUrl:"/images/7-min.png"
},{
  title:"微信小程序入门",
  price:"99.00",
  imgUrl:"/images/3-min.png"
}]

这里用到scroll-view组件,设置scroll-x="true"表示横向滚动。此时需要设置以下样式保证效果。

/* index.wxss */
.scroll-view {
  display: flex;
  width: 100%;
  height: 285rpx;
  white-space: nowrap;
  box-sizing: border-box;
}

.scroll-view-item {
  display: inline-block;
  width: 685rpx;
  height: 285rpx;
}

6、页面跳转

下面介绍点击【购买】按钮如何进入购买页面。

事件绑定

事件的类型即移动端的事件如touch类事件,tap事件,写法是以bindcatch开头,然后跟上事件的类型。其中,bind事件绑定不会阻止冒泡事件向上冒泡,catch事件绑定可以阻止冒泡事件向上冒泡。比如下面的bindtap表示点击按钮。

<button type="warn" size="mini" bindtap="buyit  data-id="{{item.id}}"">购买</button>
buyit(event){
  console.log(event)
}

点击结果

分析:返回结果中包含event的各种信息,包括触摸点的位置,目标对象的dataset,可以通过data-的新形式定义模板,通过event.dataset获取值

跳转路由

微信小程序有栈的概念,跳转的方式有4种:

  • wx.navigateTo(options):将原页面保存在页面栈中,由此进入的下个页面也会进栈,只有在这个情况下点击手机的返回按钮才可以重新跳转到上个页面;
  • wx.redirectTo(options):清除栈,下一个页面进栈,无法通过返回按钮返回;
  • wx.switchTab(options):同上,且跳转的页面必须是tabBar中声明的页面;
  • wx.navigateBack(options):只能返回到页面栈中的指定页面,一般和navigateTo配合使用。

参数说明

参数 说明
url 跳转得页面路径
success 成功的回调函数
fail 失败的回调函数
complete 束的回调函数

因此我们可以使用wx.navigateTo的方法跳转到购买页面,并且获取到当前点击的条目的id,直接在url加上,通过url传参。

  buyit(event) {
    var id = event.currentTarget.dataset.id;
    wx.navigateTo({
      url: "/pages/buy/buy?id=" + id
    })
  }

进入购买页面

7、API请求

上面介绍的页面都是静态数据,下面介绍如何通过请求获得数据,以购买页面的课程详情为例说明。我将数据放在本地的一个环境下模拟接口返回数据:

请求API

  • wx.request(OBJECT) 发起网络请求。
    主要参数说明
参数 说明
url 接口地址
data 请求的参数
method 请求方法
success 成功的回调函数
fail 失败的回调函数
complete 束的回调函数

在前面,我们在点击【购买】按钮的时候在地址传入了一个id,真实环境中,我们会根据这个id来请求接口获取数据,那么问题来了:

  • 1.什么时候请求接口?
  • 2.如何获取地址中的id呢?

生命周期函数

微信小程序和vue一样拥有生命周期函数,微信提供的函数方法有:

方法 说明
onLoad 监听页面加载
onReady 监听页面初次渲染完成
onShow 监听页面显示
onHide 监听页面隐藏
onUnload 监听页面卸载

因此解决问题1,我们可以在onLoad方法中请求接口。打印一下这个方法下的参数。

从打印的数据可以看到,微信很贴心的已经将路径中的参数传给我们了,解决问题2,实现请求:

<view class="buy-list-item"  wx:for="{{buylist}}" wx:key="{{index}}">
    <text>{{item.title}}</text>
    <text>{{item.desc}}</text>
    <view class="item-tip">
        <image src="/images/play.png" />
        <text>{{item.tip}}</text>
    </view>
</view>
Page({
    data:{
        buylist:[]
    },
    onLoad(option){
        var that = this;
        wx.request({
            url:"http://localhost:8888/static/test.json",
            data:{
                id: option.id
            },
            success(res){
                that.setData({
                    buylist: res.data.buylist
                })
            }
        })
    }
})

微信小程序中通过setData的方法给data中的变量赋值

实现效果:

8、本地缓存

在前面的案例中我们通过url传参的形式实现组件之间的数据传递。还有一种方式就是可以使用本地缓存的形式。可以对本地缓存进行设置、获取和清理。同一个微信用户,同一个小程序 storage 上限为 10MB。

  • wx.setStorage(OBJECT) 设置缓存,异步接口
  • wx.setStorageSync(KEY,DATA) 设置缓存,同步接口
  • wx.getStorage(OBJECT) 获取缓存,同步接口
  • wx.getStorageSync(KEY) 获取缓存,同步接口
  • wx.removeStorage(OBJECT) 移除缓存,同步接口
  • wx.removeStorageSync(KEY) 移除缓存,同步接口
  • wx.clearStorage() 清理全部本地缓存,同步接口
  • wx.clearStorageSync() 清理全部本地缓存,同步接口

同步参数说明

参数 说明
key 本地缓存中的指定的 key
data 需要存储的内容

异步参数添加

参数 说明
success 调用成功的回调函数,获取缓存
fail 调用失败的回调函数
complete 调用结束的回调函数

9、总结

总的来说,小程序的简单应用跟其他的MVVM框架一样是通过数据操作视图层,组件化开发,提供各种内置的 API,wxml文件不可写html标签而是用它自身封装的组件

参考:

  1、https://www.cnblogs.com/shenzikun1314/p/7805168.html

  2、https://www.cnblogs.com/shenzikun1314/p/7805168.html

  3、https://blog.csdn.net/m0_37865510/article/details/81012701

原文地址:https://www.cnblogs.com/wzb0228/p/11549914.html

时间: 2024-11-05 18:54:19

微信小程序入门案例的相关文章

微信小程序入门五: wxml文件引用、模版、生命周期

实例内容 wxml文件引用(include.import) 模版 小程序生命周期 实例一: include方式引用header.wxml文件 文件引用对于代码的重用非常重要,例如在web开发中我们可以将公用的header部分和footer等部分进行提取,然后在需要的地方进行引用. 微信小程序里面,是包含引用功能的--include.import.这两个引用文件的标签,使用基本差不多,这里先说一下include. 微信中的视图文件引用,引用过来的都是没有渲染的,基本类似于直接将引用过来的文件复制到

微信小程序入门篇

微信小程序入门篇: 准备工作 IDE搭建 就不多说了,没有内测码去下载个破解版吧,我用了一下,学习完全够了!IDE破解版+安装教程 图片发自简书App 知识准备 JavaScrip还是要看看的,推荐教程 廖雪峰大神的博客 HTML+CSS 大概知道是干啥的就行 从零开始 微信小程序中就四种类型的文件 js ---------- JavaScrip文件 json -------- 项目配置文件,负责窗口颜色等等 wxml ------- 类似HTML文件 wxss ------- 类似CSS文件

天河微信小程序入门《三》:打通任督二脉,前后台互通

原文链接:http://www.wxapp-union.com/forum.php?mod=viewthread&tid=505&extra=page%3D1 天河君在申请到https证书后就第一时间去部署后台环境,但是发现每次访问https都要带上8443端口实在是很坑爹啊,作为一个强迫症晚期,我要做的自然是不带端口直接访问.打开你tomcat下的conf文件夹,编辑里面的server.xml <Connector port="80" protocol=&quo

天河微信小程序入门:阿里云tomcat免费配置https

天河君在第一时间通过了微信小程序验证,开启了我的微信小程序之旅.因为天河君之前是一名后端狗,对前端不是很了解,所以几乎可以认为是从零开始学做微信小程序.也希望有志在微信小程序方向做点事情的朋友能够和我一起,共同进步,以致千里.上一篇是天河君在通过验证之后,兴奋的立即上手,在手机上跑了一回微信小程序.(天河微信小程序入门<一>)冷静下来后,天河发现,之前的很多demo在手机上都用不了,因为公测后得到了appId,结果导致无法与后台通讯,appId和后台的服务器域名是绑定的.没有后台的小程序是不完

天河微信小程序入门《四》:融会贯通,form表单提交数据库

天河在阔别了十几天之后终于又回来了.其实这篇文章里的demo是接着(天河微信小程序入门<三>)后面就做了的,但是因为最近在做别的项目,所以就偷懒没有发出来.放到今天来看,从前台提交数据到数据库已经是没有什么可写的了.不过既然开篇了就不能太监么,所以还是分享出来给大家.我当时的目的是为了实验api的功能和跟后台数据的通讯存储,所以没有考虑到美观之类的,界面非常丑请大家包涵.一个带form表单的页面在这里定义好自己form表单的元素名称 01 02 03 04 05 06 07 08 09 10

微信小程序入门正确姿势(一)

>>>前言 这是 [认真学编程] 系列的 第4篇 文章(微信小程序入门系列),欢迎点赞分享.写留言,这些都是对我最好的支持. 本系列适合有一定开发经验的前端Coder,新手慎入. 本文是微信小程序入门系列第一篇文章,主要有以下几点内容: 1. 教程安排 2. 小程序背景及应用场景 3. 小程序优势及局限 4. 入门必备 >>>学习安排 以上顺序可能会有变动. >>>背景 在PC互联网时代,想必大家都经历过这样的情形:时不时收到软件更新提示,等几分钟甚至

CK2020微信小程序入门与实战 常用组件API开发技巧项目实战

新年伊始,学习要趁早,点滴记录,学习就是进步! 随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到程序开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来学习就好了.对于学习有困难不知道如何提升自己可以加扣:1225462853  获取资料. 下载地址:https://pan.baidu.com/s/1hsU5EIS 微信小程序入门与实战 常用组件API开发技巧项目实战 小程序官方正式公告,开放了更多的入口,个人开发者可以申请

微信小程序入门(三)

11.开发框架基本介绍 四个组成部分,其它三个前面介绍过了,主要WXS:WXS:对wxml增强的一种脚本语言,可以对请求的数据进行filter或者做计算处理,帮助wxml快速构建出页面结构. 12.WXML之语法 概念 WXML(WeiXin Markup Language)是框架设计的一套标签语言,结合组件.WXS和时间系统,可以构建出页面的结构. 语法 <标签名 属性名=“属性名1” 属性名=“属性名2”...> ...</标签名> 简单例子 <view> Hell

微信小程序入门学习

前(che)言(dan): 近几天,微信小程序的内测引起了众多开发人员的热议,很多人都认为这将会成为一大热门,那么好吧,虽然我是一个小白,但这是个新玩意,花点时间稍稍钻研一下也是无妨的,谁让我没有女朋友呢,给我提供了大量的闲暇时光,对此我只想说:呵呵!.现在微信小程序刚发布还在测试阶段,可以说是1.0版本,所以框架和结构内容都还不多,这时候不学什么时候学?万一成为大牛了呢?万一有哪个妹子看上我了呢?想想还有点小激动呢... 正文: 1.什么是微信小程序? 简单的说很像 H5,它将 应用(功能与a