文章目录
- 2.初识微信小程序
- 3.创建小程序 注册小程序账户 小程序工具功能介绍 以及小程序的目录结构分析
- 4.小程序MINA框架介绍 wxml wxss pages逻辑层js 介绍 绑定数据、绑定属性、条件判断、循环渲染数据
- 5.微信小程序事件、方法、事件对象、方法传值、获取data数据、修改data数据、冒泡非冒泡事件
- 6.微信小程序app.json配置视图样式、配置底部tab切换、页面跳转配置页面里面的.json文件
- 7.微信小程序小小练习 小程序页面跳转传值、请求Api接口获取服务器数据【无人点餐系统菜品页面制作】
- 8.微信小程序小小练习 解决图片显示问题、页面跳转、以及通过api接口获取详情页面数据 【无人点餐系统菜品详情页面制作】
- 9.小程序wxParse插件 解析html数据 【解析无人点餐系统菜品详情页面html】
- 10.微信小程序中的模块化utils 以及全局app.js 配置无人点餐项目公共的api地址【配置无人点餐项目公共api】
- 11.微信小程序中的WXS 脚本语言的使用
- 12.微信小程序中的自定义组件 注册组件
- 13.微信小程序中的自定义组件 父子组件 组件事件 父子组件传值
- 14.微信小程序中的自定义组件 slot 子组件调用父组件的方法、父组件调用子组件的方法
- 15.微信小程序自定义toast组件代码讲解
- 16.小程序view 结合scroll-view结合真实新闻客户端api实现上拉分页加载更多
- 17.小程序view 结合scroll-view结合真实新闻客户端api实现上拉分页加载更多 重复请求 没有数据不请求
- 18.微信小程序 导入小程序代码、导入代码片段 、官方组件介绍以及实现swiper组件
- 19.微信小程序 video cover-view cover-image 组件的使用
- 20.微信小程序基础内容组件 icon 、text 、rich-text、progress
- 21.微信小程序表单组件 button checkbox form input label radio slider switch textarea 获取表单数据
- 22.微信小程序表单组件 picker picker-view 实现日期 区域 联动选择
- 23.微信小程序媒体组件 images显示图片以及实现多图预览功能
- 24.微信小程序媒体组件camera、audio、video、live-player、live-pusher
- 25.open-data web-view 以及 canvas、map简单介绍
- 26.用微信小程序 请求数据、拍照、上传图片 api实现图片上传功能
- 27.用微信小程序 下载文件 保存文件 打开文件
- 28.微信小程序中类似localStorage的数据缓存Api
- 29.微信小程序获取位置、查看位置、选择位置、系统信息、网络状态、加速度计(摇一摇功能)、罗盘 API
- 30.拨打电话、扫码、剪贴板、屏幕亮度、用户截屏事件、振动、手机联系人 API
2.初识微信小程序
官网:https://mp.weixin.qq.com/cgi-bin/wx
我的APP ID: 网站注册后可以知道
微信小程序:
小程序是一种新的开放能力,开发者可以快速地开发一个小程序。小程序可以在微信内被便捷地获取和传播,同时具有出色的使用体验。
微信公众号和小程序的主要区别?
1、定位不同(公众号服务于营销与信息传递,小程序面向产品与服务)
2、实现技术区别 (公众号基于H5(html5 vue angualr react ionic),小程序必须用小程序的语法开发)
3、用户体验 (小程序的用户体验要比 html5好一些,更接近原生app)
4、调用原生的能力 (微信公众号可以借助jssdk调用手机的摄像头拍照 ,调用扫描二维码等 能力有限。 小程序调用原生的能力非常强大,能实现几乎app能实现的所有功能) (调用原生的功能 *可以不开发app )
5、微信app上面的入口不一样
微信小程序的应用场景:
互联网+ 物联网+ 人工智能+
餐厅点餐+小程序
基于LBS小程序直接搜索附近的餐厅,进店用进行扫码点餐、支付。
无人点餐:
公交+小程序
公交车站放一个小程序二维码,扫一扫就知道公交什么时候来。
买电影票+小程序
进入小程序直接搜附近电影院下单搞定。
加油站缴费+小程序
加油下车排队缴费太麻烦,扫小程序不用下车就能解决。
火车上叫餐+小程序
不用去固定车厢点餐,扫座椅后背的小程序二维码下单,乘务员给你送来。
旅行+小程序
旅行酒店预订、周边攻略、目的地、游记等都可以在小程序里轻松搞定。
快递+小程序
一键打开快递小程序,查看自己的订单,查看快递送达的时间,查看宝贝现在的物流情况
医疗+小程序
用小程序,提前挂号、网上排队,就医后扫码支付,直接拿药
景区+小程序
扫描景点门票小程序的二维码,即可查看景区详情
零售+小程序
想吃个水果或吃点零食,直接搜索附近小程序下单,送货上门。
小程序开发文档、开发工具、开发指南、体验demo:
开发文档
https://developers.weixin.qq.com/miniprogram/dev/
开发工具
https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html
体验demo
https://developers.weixin.qq.com/miniprogram/dev/demo.html?t=1477656485442
3.创建小程序 注册小程序账户 小程序工具功能介绍 以及小程序的目录结构分析
目录结构:
-
pages-所有页面
首页index 业务逻辑.js wxml–html wxss-css
登录脚本 多了一个配置文件json -
utils
工具js 模块化的东西 -
App.js
全局的js文件 其他地方调用App 只需要用 const app=getApp(); 获取应用实例 -
App.json
全局的配置文件 整个页面 导航条的颜色 底部菜单切换 -
app.wxss
全局css文件 -
project
项目配置文件 一般不改动
视图——wxml wxss
业务逻辑——js
4.小程序MINA框架介绍 wxml wxss pages逻辑层js 介绍 绑定数据、绑定属性、条件判断、循环渲染数据
MINA框架介绍
- MINA(MINA IS NOT APP) 是在微信中开发小程序的框架。
- MINA的目标是通过尽可能简单、高效的方式让开发者可以在微信中开发具有原生APP体验的服务。
- MINA提供了自己的视图层描述语言WXML和WXSS,以及基于JavaScript的逻辑层框架,并在视图层与逻辑层间提供了数据传输和事件系统,可以让开发者可以方便的聚焦于数据与逻辑上。
- MINA的核心是一个响应的数据绑定系统。
- 整个系统分为两块视图层(View)和逻辑层(App Service)
- MINA可以让数据与视图保持同步非常简单。当做数据修改的时候,只需要在逻辑层修改数据,视图层就会做相应的更新
- MINA是腾讯给微信小程序命名的框架,其实他实际上应用的是目前IT界最被推崇的MVVM模式。
微信小程序与H5的不同之处:
view=div
text=span
没有ul li
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})
数据绑定与Vue差不多
有判断条件
<view class='box' wx:if='{
{flag}}'>
绑定属性
<view data-aid="{
{aid}}">放上去看一下</view>
循环数据——简单数组
<view class='list'>
<view class='item' wx:for="{
{list}}">
{
{index}}-----{
{item}}
</view>
</view>
循环数据——数组里面有对象
<view class='list'>
<view class='item' wx:for="{
{list1}}">
{
{index}}-----{
{item.title}}
</view>
</view>
嵌套循环
使用 wx:for-item 可以指定数组当前元素的变量名,
使用 wx:for-index 可以指定数组当前下标的变量名:
<view class='list'>
<view class='item' wx:for="{
{list2}}">
{
{item.cate}}
<view wx:for="{
{item.list}}">
-------{
{item.title}}
</view>
</view>
</view>
<view class='list'>
<view class='item' wx:for="{
{list2}}" wx:for-item=“item”>
{
{item.cate}}
<view wx:for="{
{item.list}}" wx:for-item=“car”>
-------{
{car.title}}
</view>
</view>
</view>
5.微信小程序事件、方法、事件对象、方法传值、获取data数据、修改data数据、冒泡非冒泡事件
不可以使用alert方法
自定义方法与data同级
没有br换行
<view class='br'> </view>
执行方法的几种写法:
1.在生命周期函数里面调用方法
this.run()
2.<button size="mini" bindtap='run'>执行run方法</button>
注意触发方法不需要写()
3.获取data的数据
console.log(this.data.msg);
4.改变data的数据
his.setData({
msg:'我是改变后的msg'
})
MVVM:是Model-View-ViewModel的简写,将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。
事件对象:原生js相似 鼠标按下的当前DOM节点和一切的相关信息
获取自定义属性的值
doEventFn(e){
console.log(e);
console.log(e.currentTarget.dataset.aid);
}
小程序里面执行方法传值——在view视图层执行方法传值
不能直接传值 需要靠event 事件对象
requestViewData(event){
console.log(event.currentTarget.dataset);
}
<button size="mini" data-aid='234' data-cid='234xsxs' bindtap='requestViewData'>执行方法传值</button>
冒泡与非冒泡事件
事件分类
事件分为冒泡事件和非冒泡事件:
冒泡事件:当一个组件上的事件被触发后,该事件会向父节点传递。 bindtap
非冒泡事件:当一个组件上的事件被触发后,该事件不会向父节点传递。 catchtap
6.微信小程序app.json配置视图样式、配置底部tab切换、页面跳转配置页面里面的.json文件
app.json的配置和使用:
1.pages配置路由、windows显示效果、底部tab切换
导航条只支持黑色和白色
1、小程序里面的资源不能大于2M
2、底部tab切换菜单最少2个最多5个
"tabBar": {
"color":"#666",
"selectedColor":"#f60",
"backgroundColor":"#eee",
"borderStyle":"white",
"position":"bottom",
"list": [
{
"pagePath": "pages/index/index",
"text": "首页",
"iconPath":"static/images/home1.png",
"selectedIconPath":"static/images/home.png"
},
{
"pagePath": "pages/news/news",
"text": "新闻",
"iconPath":"static/images/news1.png",
"selectedIconPath":"static/images/news.png"
},
{
"pagePath": "pages/user/user",
"text": "用户",
"iconPath": "static/images/user1.png",
"selectedIconPath": "static/images/user.png"
}
]
}
页面跳转:
从一个页面跳转到另一个页面
goShop(){
wx.navigateTo({
url: '../shop/shop'
})
}
7.微信小程序小小练习 小程序页面跳转传值、请求Api接口获取服务器数据【无人点餐系统菜品页面制作】
页面跳转传值:
<button size="mini" data-aid="22" bindtap='goFoodContent'>跳转到详情页面传值2</button>
goFoodContent(event){
console.log(event.currentTarget.dataset.aid);
var aid = event.currentTarget.dataset.aid;
wx.navigateTo({
url: '../foodcontent/foodcontent?aid='+aid
})
}
跳转到的页面来监听上个页面传过来的值
onLoad: function (options) {
//获取上一个页面的传值
console.log(options);
}
请求数据:
wx.request
WX样式的字体有另一种单位——移动端一般喜欢用rem
rpx(responsive pixel): 可以根据屏幕宽度进行自适应。规定屏幕宽为750rpx。如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375px = 750物理像素,1rpx = 0.5px = 1物理像素。
一般移动端设计:宽度自适应,高度按照设计稿的一半
获取数据在嵌套循环
requestData(){
var that = this