小程序提供了一个简单、高效的应用开发框架和丰富的组件及API,帮助开发者在微信中开发具有原生 APP 体验的服务。
小程序框架参考文档
小程序组件参考文档
小程序 API 参考文档
小程序服务端 API 参考文档
官方文档
一键生成Page配置代码,在js文件中输入page,在提示中选择如图所示内容,然后就自动填充配置代码
Page({ /** * 页面的初始数据 */ data: { }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { }, /** * 生命周期函数--监听页面显示 */ onShow: function () { }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { } })实现鼠标点击事件之后变换view视图中的文字变换
在demo.wxml中编写如下代码
<!--在组件中绑定一个事件处理函数,如bindtap,当用户点击该组件的时候会在该页面对应的Page中找到相应的事件处理函数。--> <view bindtap="myTap" data-name="微信小程序" style="width:200rpx;height:200rpx;background:pink;"> {{name}} </view>在demo.js中
/** * 页面的初始数据 */ data: { name:"tom" }, // 自定义点击事件 myTap: function(res){ var name1=res.currentTarget.dataset.name this.setData({ name:name1 }) }实现效果,分辨是点击之前(图1-1)和点击之后(图1-2)
创建自定义组件,接受一个 Object 类型的参数。
在根目录创建components文件夹(只需要在第一次的时候创建)。
在components文件夹下面创建组件名,如zqf,然后在zqf下单击右键,选择新建component。
在创建好的组件的wxml中写出你想显示的内容即可,然后在wxss中编辑样式。
比如首页想要调用zqf组件,那么就需要在index.json中进行配置。
在index.json中的调用方法,属性名是组件名,值就是组件的路径
{ "usingComponents": { "zqf":"/components/zqf/zqf" } }在index.wxml中就可以使用自定义的组件了,eg:
<zqf></zqf>在自定义组件上传递自定义属性,如:
<PubTitle myTitle="作品"/>需要来到PubTitle自定义组件的js中,接受该自定义属性。
properties: { //自定义属性名,需要指定type类型(string/number/array/object),指定value默认值 myTitle:{ type:String, value:"" //value值的作用,当传递的属性为空时,页面上渲染出的内容是value的值。 } },在PubTitle.wxml中渲染从前端传递过来的属性。
<view class="pubTitle"> <view class="txt">{{myTitle}}</view> <navigator class="more">更多 ></navigator> </view>引入模块。返回模块通过 module.exports 或 exports 暴露的接口
模块中创建一个common对象包含修改时间戳函数和裁剪标题长度的函数
//位置:/utils/public.js var common={ // 截取标题长度 getStrLen:function(str,len){ if(str.length>len){ return str.substr(0,len)+"..." }else{ return str } }, // 修改时间戳 getMyDate:function (timestamp, formats) { // formats格式包括 // 1. Y-m-d // 2. Y-m-d H:i:s // 3. Y年m月d日 // 4. Y年m月d日 H时i分 formats = formats || 'Y-m-d'; var zero = function (value) { if (value < 10) { return '0' + value; } return value; }; var timestamp=timestamp*1000 var myDate = timestamp? new Date(timestamp): new Date(); var year = myDate.getFullYear(); var month = zero(myDate.getMonth() + 1); var day = zero(myDate.getDate()); var hour = zero(myDate.getHours()); var minite = zero(myDate.getMinutes()); var second = zero(myDate.getSeconds()); return formats.replace(/Y|m|d|H|i|s/ig, function (matches) { return ({ Y: year, m: month, d: day, H: hour, i: minite, s: second })[matches]; }); } // ....可以继续构建其他的函数 } // 返回对象 module.exports=common页面加载完毕,显示获取设备型号
/** * 生命周期函数--监听页面加载 */ onLoad: function (options) { console.log(wx.getSystemInfoSync().model) },实现页面加载动画
/** * 生命周期函数--监听页面加载 */ onLoad: function (options) { //加载动画 wx.showLoading({ title: '数据加载中....', }) //设置定时器,一定时间后消失 setTimeout(res=>{ wx.hideLoading() },1500) },显示消息提示框
/** * 生命周期函数--监听页面加载 */ onLoad: function (options) { wx.showToast({ title: '提交成功', }) },跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面。使用 wx.navigateBack 可以返回到原页面。小程序中页面栈最多十层。
关闭所有页面,打开到应用内的某个页面。需要跳转的应用内页面路径 (代码包路径),路径后可以带参数。参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔;如 ‘path?key=value&key2=value2’。
关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages 获取当前的页面栈,决定需要返回几层
发起 HTTPS 网络请求,
案例
效果如下
开发者可以使用云开发开发微信小程序、小游戏,无需搭建服务器,即可使用云端能力。云开发为开发者提供完整的原生云端支持和微信服务支持,弱化后端和运维概念,无需搭建服务器,使用平台提供的 API 进行核心业务开发,即可实现快速上线和迭代,同时这一能力,同开发者已经使用的云服务相互兼容,并不互斥。
可以通过在集合对象上调用 add 方法往集合中插入一条记录。
addData(){ // 数据加载中弹框 wx.showLoading({ title: '数据加载中...', mask:true }) // 添加数据 db.collection("demolist").add({ data:{ title:"test title", author:"zhou", content:"插入数据可以通过在集合对象上调用 add 方法往集合中插入一条记录。还是用待办事项清单的例子,比如我们想新增一个待办事项:" } }).then(res=>{ console.log(res) // 结束数据加载弹框 wx.hideLoading() }) },通过表单插入数据
<form bindsubmit="btnSub"> <input name= "title" placeholder="请输入标题"></input> <input name= "author" placeholder="请输入作者"></input> <textarea name="content" placeholder="请输入内容"></textarea> <button type="primary" form-type="submit">提交</button> <button form-type="reset">重置</button> </form> // 初始化数据库 const db=wx.cloud.database() // 表单提交,添加进数据库 btnSub(res){ // 解构,方法一 // var {title,author,content}=res.detail.value // db.collection("demolist").add({ // data:{ // title:title, // author:author, // content:content // } // }).then(res=>{ // console.log(res) // }) //方法二 var resVal=res.detail.value db.collection("demolist").add({ data:resVal }).then(res=>{ console.log(res) }) },查询某一个字段的数据
db.collection("demolist").where({ author:"lester" }).get().then(res=>{ console.log(res) })更新一个指定id的数据
const db=wx.cloud.database(); //更新数据 updateData(){ db.collection("demolist").doc("bb83ad495efd79ed002a748b6d0dfecb").update({ data:{ author:"qian" } }).then(res=>{ console.log(res) }) },给指定id添加新的数据
const db=wx.cloud.database(); //更新数据 updateData(){ db.collection("demolist").doc("bb83ad495efd79ed002a748b6d0dfecb").update({ data:{ author:"qian", // 增加的数据 posttime:"2020-10-10" } }).then(res=>{ console.log(res) }) },替换更新一个记录,会将所有内容替换掉,只剩下title。(慎用)
const db=wx.cloud.database(); //替换数据 updateData(){ db.collection("demolist").doc("bb83ad495efd79ed002a748b6d0dfecb").set({ data:{ title:"自动驾驶" } }).then(res=>{ console.log(res) }) },=wx.cloud.database(); //更新数据 updateData(){ db.collection(“demolist”).doc(“bb83ad495efd79ed002a748b6d0dfecb”).update({ data:{ author:“qian”, // 增加的数据 posttime:“2020-10-10” } }).then(res=>{ console.log(res) }) },
##### set >替换更新一个记录,会将所有内容替换掉,只剩下title。(慎用) ```js const db=wx.cloud.database(); //替换数据 updateData(){ db.collection("demolist").doc("bb83ad495efd79ed002a748b6d0dfecb").set({ data:{ title:"自动驾驶" } }).then(res=>{ console.log(res) }) },