简单的一篇微信小程序开发入门指南
前言
该篇手记源于一门课程——入门微信小程序,这是一门十分简单的小程序入门指南视频(应该说小程序本来就很简单),根据老师的提供的源码和素材,将其做了部分的结构和样式更改,有兴趣的可以下载该项目,运行查看结果。
起步过于简单,在这不说明,请直接到官方网站开启自己的小程序之旅,下面整理一些自己认为重要的知识点。
全局配置文件
app.json文件用来对微信小程序进行全局配置,决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab 等,具体的请点击这里
swiper组件的使用
这个组件是比较常用的,说它比较重要,不仅仅是因为它的常用性,也因为它的栗子有十分好的借鉴性。
结构代码
<swiper indicator-dots="{{indicatorDots}}" autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}" indicator-dots="true">
<block wx:for="{{imgUrls}}" wx:key="">
<swiper-item>
<image src="{{item}}" class="slide-image" width="355" height="150"/>
</swiper-item>
</block>
</swiper>
脚本代码
Page({
data: {
imgUrls: [
'/images/home1.jpg',
'/images/home2.jpg',
'/images/home3.jpg',
],
indicatorDots: false,
autoplay: false,
interval: 5000,
duration: 1000,
proList: null,
}
})
说这个组件的使用具有借鉴性是因为将属性和属性值完全分离了来进行管理,在一定程度上来说,这是十分好的一种方式,结构代码和脚本代码分离便于管理和维护。
调用数据的三种方式
在小程序中,一共有三种调用数据的方式,其中一种是调用后台数据,另外两种是调用本地数据,现在我们先来看一看最简单的本地数据调用方式:
// 定义本地脚本数据
Page({
data: {
imgUrls: [
'/images/home1.jpg',
'/images/home2.jpg',
'/images/home3.jpg',
]
}
})
//调用本地数据
<block wx:for="{{imgUrls}}" wx:key="">
<swiper-item>
<image src="{{item}}" class="slide-image" width="355" height="150"/>
</swiper-item>
</block>
第二种调用本地数据稍微复杂一些,它和Vue程序中调用json数据的方式完全不同,在小程序不能直接调用json文件中的数据,只能将数据保存在一个脚本文件中,然后将其exports出来,最后在需要调用数据的文件中导入,具体请看以下代码:
// 步骤一:分离数据,将数据定义在顶层的data目录下
var joinList_data = [
{
"proName": "关于NBA",
"proDesc": "NBA(National Basketball Association)是美国职业篮球联赛的简称",
"id": "001"
}
]
module.exports = {
joinList: joinList_data
}
// 步骤二:在需要调用数据的脚本文件中引入
var joinListData = require("../../data/joinList.js");
// 步骤三:在周期函数中赋值
Page({
data: {
joinList: null
},
// 生命周期函数--监听页面加载
onLoad: function () {
this.setData({
joinList: joinListData.joinList
})
}
})
// 步骤四:在结构代码中遍历数据
<view class='block' wx:for="{{joinList}}" wx:key="">
<view class='block-title'>{{item.proName}}</view>
<text class='block-desc'>{{item.proDesc}}</text>
</view>
第三种数据调用方式最重要,因为那是必须会的,这种方式是从后台请求回来数据进行使用,具体方式请看以下代码:
Page({
data: {
proList: null,
},
onLoad: function () {
this.getProList();
}
// API请求方法
getProList: function(){
var self = this;
wx.request({
url: 'http://guozhaoxi.top/wx/data.json',
method: 'GET',
success: function(res){
self.setData({
proList: res.data,
})
},
fail: function(){
console.log('调用数据失败');
}
})
}
})
// 使用请求回来的数据
<view class='pro-item' wx:for="{{proList}}" wx:key=""></view>
组件之间的三种传值方式
一说到组件传值,相信有经验的开发人员都知道它的重要性,下面简单的来看看三种传值方式的代码。
第一种:全局传值
// 步骤一:在全局脚本文件中定义数据
App({
globalData: {
userInfo: null,
userName: '全局变量传值',
}
})
// 步骤二:获取应用实例,不然无法调用全局变量
const app = getApp()
// 步骤三:调用全局变量
Page({
data: {
},
onLoad: function (options) {
console.log(app.globalData.userName);
},
})
第二种:url传值
// 步骤一:使用关键字bindtap绑定一个点击事件方法,data-index是传入一个值
<image class="btn-detail" src='/images/btn_detail.png' bindtap='toDetail' data-index='{{index}}'></image>
// 步骤二:在脚本文件中定义这个方法(方法并不是定义在一个methods集合中的)
Page({
data: {},
onLoad: function () {},
toDetail: function(e){
// index代表的遍历对象的下标
var index = e.currentTarget.dataset.index;
var proList = this.data.proList;
var title = proList[index].proName;
wx.navigateTo({
url: '/pages/detail/detail?title='+title,
})
}
})
// 步骤三:在detail组件的脚本文件中接收title这个传入过来的值
Page({
data: {},
onLoad: function (options) {
console.log(options.title);
},
})
第三种:setStorageSync传值
// 步骤一:使用关键字bindtap绑定一个点击事件方法,data-index是传入一个值
<image class="btn-detail" src='/images/btn_detail.png' bindtap='toDetail' data-index='{{index}}'></image>
// 步骤二:在脚本文件中定义这个方法(方法并不是定义在一个methods集合中的)
Page({
data: {},
onLoad: function () {},
toDetail: function(e){
var index = e.currentTarget.dataset.index;
var proList = this.data.proList;
var title = proList[index].proName;
wx.setStorageSync('titleName', title);
wx.navigateTo({
url: '/pages/detail/detail',
})
}
})
// 步骤三:在detail组件的脚本文件中使用wx.getStorageSync接收titleName这个传入过来的值
Page({
data: {},
onLoad: function (options) {
var titlen = wx.getStorageSync('titleName');
console.log(titlen);
},
})
组件传值的应用场景
关于组件传值的应用,老师在视频中并没有给出,自己瞎琢磨出一个栗子,记住:在真正开发中,千万别这么用。 这个栗子的作用是让我们对组件的传值有一个大概的应用场景,下面请看代码实现:
// 数据接收方
Page({
data: {
iskebi: false,
iszhan: false,
isqiao: false,
isgeli: false
},
onLoad: function (options) {
},
onReady: function () {
var titlee = wx.getStorageSync('titleName');
console.log(titlee);
if (titlee == '科比·布莱恩特') {
this.setData({iskebi: true});
} else if (titlee == '勒布朗·詹姆斯'){
this.setData({ iszhan: true });
} else if (titlee == '迈克尔·乔丹') {
this.setData({ isqiao: true });
} else{
this.setData({ isgeli: true });
}
}
})
// 数据显示层
<view wx:if="{{iskebi}}">
我是科比的球迷
</view>
<view wx:if="{{iszhan}}">
我是詹姆斯的球迷
</view>
<view wx:if="{{isqiao}}">
我是乔丹的球迷
</view>
<view wx:if="{{isgeli}}">
我是格里芬的球迷
</view>
基础库兼容
这个东西其实也不是太重要,知道有个玩意,以及如何去判断和解决就行,下面看代码:
Page({
data: {},
onLoad: function () {},
// copy事件
copy: function(){
// 检测版本是否具备wx.setClipboardData这个API
if (wx.setClipboardData){
wx.setClipboardData({
// 复制的内容,可以设置为动态的数据
data: '232323232',
success: function (res) {
// 模态框
wx.showModal({
title: '复制成功',
content: '内容已经复制成功!',
})
}
})
}
else{
wx.showModal({
title: '提示',
content: '您的微信版本太低,请升级',
})
}
}
})
尾声
以上就是我所做的一些总结,源码都在这里,有疑问的可以加我慕课账号(Zz皓)私信聊。
共同学习,写下你的评论
评论加载中...
作者其他优质文章