第一章到第六章总结

第一章:

认识微信小程序

简介:2011年推出、2017年1月上线,是一种不需要下载安装,用户扫一扫或搜一下即可打开的轻量级应用

优势:无需安装、触手可及、用完即走、无需下载

场景:业务逻辑简单、使用频率低

微信开发者工具界面功能介绍

1、点击用户头像可以打开个人中心,在这里可以便捷的切换用户和查看开发者工具收到的信息。

2、用户头像右侧是控制主界面模块显示/隐藏的按钮。至少需要有一个模块显示。

3、工具栏中间,可以选择普通编译,也可以新建并选择自定义条件进行编译和预览。

4、通过切后台按钮,可以模拟小程序进入后台的情况。

5、清缓存:可以快捷清除工具上的文件缓存、数据缓存、还有后台的授权数据,方便开发者调试。

6、开发辅助功能区域:可以上传代码、版本管理、查看项目详情等。

微信小程序开发者工具主界面模拟器:

可以模拟小程序在微信客户端的表现。小程序的代码通过编译后可以在模拟器上直接运行。

微信小程序开发者工具主界面调试器:

用来调试小程序代码。

还有目录树和编辑区,就是小程序项目的具体目录和代码编辑的区域。

第二章:

小程序的基本目录结构
 主体文件

Pages——所有页面

Utils——所有工具,可在所有页面中使用

App.js——主逻辑文件,主要用来注册小程序全局实例,该文件在项目中不可缺少。

App.json——主配置文件,配置小程序全局设置,该文件在项目中同样不可缺少。

App.wxss——主样式文件,该文件在项目中不是必须的。

页面文件

.js——页面逻辑文件,在该文件中编写javaScript代码控制页面的逻辑。

.wxml——页面结构文件,用于设计页面的布局、数据绑定等。

.wxss——页面样式文件,用于定义本页面中用到的各类样式表。

,json——页面配置文件。

创建小程序页面

1.删除原有页面index,点击utils中的app.json文件将"pages/index/index",删除。

2.点击新建文件夹创建新页面(如lxy),点击刚才新建的文件夹选择新建文件,新建(.js、.json、.wxml、.wxss)文件 

3.点击utils中的app.json文件将新页面名称代码填入。

4.编译代码

.js文件:(P要大写)

.json文件:

.wxml文件:

配置文件

逻辑层文件


页面结构文件

页面样式文件

第三章:

一、盒子模型 
1.块级元素 

(1)一个块级元素占一行。

(2)块级元素的默认高度由内容决定,除非自定义高度。

(3)块级元素的默认高度是父级元素的内容区宽度,除非自定义宽度。

(4)块级元素的宽度、高度、外边距及内边距都可以自定义设置。

(5)块级元素可以容纳块级元素和行内元素。

<view style="border:1px solid #f00">块级元素1</view>
<view style="border:1px solid #0f0;margin:15px;padding:20px">块级元素2</view>
<view style="border:1px solid #00f;width:200px;height:80px">块级元素3</view>
<view style="border:1px solid #ccc;">
<view style="height:60px">块级元素4</view>
</view>
<view style="borde:1px solid #f00;width:100px;background-color:#ccc">父级元素高度随内容决定,内容为文本</view>

2.行内元素 

(1)行内元素不能被设置高度和宽度,其高度和宽度由内容决定。

(2)行内元素内不能放置块级元素,只级容纳文本或其他行内元素。

(3)同一块内,行内元素和其他行内元素显示在同一行。

<view style="padding:20px">
<text style="border:1px solid #f00">文本1</text>
<text style="border:1px solid #0f0;margin:10px;padding:5px">文本2</text>
<view style="border:1px solid #00f;display:inline">块级元素设置为行内元素</view>一行显示不全,自动换行显示
</view>

3.行内块元素 
<view>
元素显示方式的<view style="display:inline-block;border:1px solid #f00;margin:10px;padding:10px;width:200px;">块级元素、行内元素和行内块元素</view>三种类型。
</view>

二、浮动与定位
1、元素浮动与清除
(1)元素浮动 

基本格式:

{float:none |left |right;}

其中,none——默认值,表示元素不浮动;

            left——元素向左浮动;

           right——元素向右浮动。

 (2)清除浮动

基本格式:

{clear:left |right |both |none}

其中,left——清除左浮动的影响,也就是不允许左侧有浮动元素;

           right——清除右浮动的影响,也就是不允许右侧有浮动元素;

           both——同时清除左右两侧浮动的影响;

           none——不清除浮动。

(3)添加一个空元素
<view>box1 box2 box3 左浮动 在父元素后添加一个空元素 </view>
<view style="border:1px solid #f00;padding: 5px" class="clear-float">
<view style="float:left;border:1px solid #0f0">box1</view>
<view style="float:left;border:1px solid #0f0">box2</view>
<view style="float:left;border:1px solid #0f0">box3</view>
</view>
.clearfloat::after{display:block;clear:both;height:0;content:""}
 2、元素定位 

基本格式:

{position:static |relative |absolute |fixed}

其中,static——默认值,该元素按照标准流进行布局;

          relative——相对定位,相对于它在原文档流的位置进行定位,它后面的盒子仍以标准流方式对待它;

          absolute——绝对定位,相对于其上一个已经定位的父元素进行定位,绝对定位的盒子从标准流中脱离,它对其后的兄弟盒子的定位没有影响;

          fixed——固定定位,相对于浏览器窗口进行定位。

(1)静态定位
<!--三个元素匀未定位 static-->
<view style="border:1px solid #0f0;width:100px;height:100px">box1</view>
<view style="border:1px solid #0f0;width:100px;height:100px">box2</view>
<view style="border:1px solid #0f0;width:100px;height:100px">box3</view>

 

(2)相对定位 
<!--box2元素相对定位 relative top:30px left:30px-->
<view style="border:1px solid #0f0;width:100px;height:100px">box1</view>
<view style="border:1px solid #0f0;width:100px;height:100px;position:relative;left:30px;top:30px">box2</view>
<view style="border:1px solid #0f0;width:100px;height:100px">box3</view>

 

(3)绝对定位 
<!--box2 元素绝对定位 absolute top:30px left:30px-->
<view style="border:1px solid #0f0;width:100px;height:100px">box1</view>
<view style="border:1px solid #0f0;width:100px;height:100px;position:absolute;left:30px;top:30px">box2</view>
<view style="border:1px solid #0f0;width:100px;height:100px">box3</view>

 

(4)固定定位  
<!--box2 元素固定定位 fixed top:30px left:30px-->
<view style="border:1px solid #0f0;width:100px;height:100px">box1</view>
<view style="border:1px solid #0f0;width:100px;height:100px;position:fixed;left:30px;top:30px">box2</view>
<view style="border:1px solid #0f0;width:100px;height:100px">box3</view>

 

三、flex布局 
1、容器属性

布局模型:

flex容器支持的属性:

 (1)display 

语法格式:

.box{display:flex |inline-flex;}

其中,

        flex——块级flex布局,该元素变为弹性盒子;
        inline -flex——行内fex布局,行内容器符合行内元素的特征,同时在容器内又符合flex 布局规范。
        设置了flex布局之后,子元素的float、clear 和vertical - align 属性将失效。

(2)flex-direction

语法格式:

.box{flex-direction:row |row-reverse |column |column-reverse;}

其中,

        row——主轴为水平方向,起点在左端,当元素设置为flex布局时,主轴默认为row;

        row -reverse——主轴为水平方向,起点在右端;

        column——主轴为垂直方向,起点在顶端;
        column - reverse——主轴为垂直方向,起点在底端。

(3)flex-wrap

语法格式:

.box{flex-wrap:nowrap |wrap |wrap-reverse;}

其中,

        nowrap——不换行,默认值;
        wrap——换行,第一行在上方;
        wrap -reverse——换行,第一行在下方。
        当设置换行时,还需要设置align-item属性来配合自动换行,但align-item 的值不能为“stretch”.

 

(4)flex-flow

语法格式:

.box{flex-flow:<flex-direction>||<flex-wrap>;}

(5)justify-content

语法格式:

.box{justify-content:flex-start |flex-end |center |space-between |space-around;}

其中,

        justify -content——与主轴方向有关,默认主轴水平对齐,方向从左到右;       
        flex - start——左对齐,默认值;

         flex - end——右对齐;

        center——居中;
        space - between——两端对齐,项目之间的间隔都相等;

        space -around——每个项目两侧的间隔相等。

(6)align-items

语法格式:

.box{align-items;flex-start |flex-end |center |baseline |stretch;}

其中,

        align-items——与交叉轴方向有关,默认交叉由上到下;    
        flex - start——交叉轴起点对齐;

         flex- end——交叉轴终点对齐;

        center——交叉轴中线对齐;
        baseline——项目根据它们第一行文字的的基线对齐;
        stretch——如果项目未设置高度或设置为auto,项目将在交叉轴方向拉伸填充容器,此为默认值。

 

(7)align-content

语法格式:

.box{align-content:flex-start |flex-end |center |space-between |space-around |stretch}

其中,

        space-between——与交叉轴两端对齐, 轴线之间的间隔平均分布;    
        space - around——每根轴线两侧的间隔者相等,轴线之间的间隔比轴线与边框间隔大一倍。
        其余各属性值的含义与align-items属性的含义相同。

2、项目属性

(1)、order

语法格式:.item{order:<number>;}

<view class="cont1">
<view class="item">1</view>
<view class="item">2</view>
<view class="item">3</view>
<view class="item">4</view>
</view>
<view class="cont1">
<view class="item" style="order:1">1</view>
<view class="item" style="order:3">2</view>
<view class="item" style="order:2">3</view>
<view class="item" >4</view>
</view>
 

 

(2)flex-grow

语法格式:

.item{flex-grow:<number>;}

<view class="cont1">
<view class="item">1</view>
<view class="item">2</view>
<view class="item">3</view>
<view class="item">4</view>
</view>
<view class="cont1">
<view class="item" >1</view>
<view class="item" style="flex-grow:1">2</view>
<view class="item" style="flex-grow:2">3</view>
<view class="item" >4</view>
</view>
 

 

(3)flex-shrink 

语法格式:

.item{flex-shrink:<number>;}

<view class="cont1">
<view class="item">1</view>
<view class="item">2</view>
<view class="item">3</view>
<view class="item">4</view>
</view>
<view class="cont1">
<view class="item" >1</view>
<view class="item" style="flex-shrink:2">2</view>
<view class="item" style="flex-shrink:1">3</view>
<view class="item" style="flex-shrink:4">4</view>
</view>
 

 

(4)flex-basis

.item{flex-basis:<number> |auto;}

<view class="cont1">
<view class="item">1</view>
<view class="item">2</view>
<view class="item">3</view>
<view class="item">4</view>
</view>
<view class="cont1">
<view class="item" >1</view>
<view class="item" style="flex-basis:100px">2</view>
<view class="item" style="flex-basis:200px">3</view>
<view class="item" >4</view>
</view>
 

 

(5)flex

语法格式:

.item{flex:<flex-grow> |<flex-shrink> |<flex-basis>;}

(6)align-self 

语法格式:

.item{align-self:auto |flex-start |flex-end |center |baseline |stretch;}

第四章:

一、组件的定义及属性 

语法格式:

<标签名    属性名="属性值”>内容....</标签名>    
组件通过属性来进一步细化。不同的组件可以有不同的属性,但它们也有一些共用属性,如id、class、style、hidden、data- *、bind*/catch *等。
id——组件的唯一表示,保持整个页面唯一,不常用。    
class——组件的样式类,对应wxss中定义的样式。
style——组件的内联样式,可以动态设置内    内联样式。    
hidden——组件是否显示,所有组件默认显显示。
data - *——自定义属性,组件触发事件日时,会发送给事件处理函数。事件处理函数可以通过传入参数对象的currentTarget.dataset 方式来获取自定义属性的值。
bind * /catch * ——组件的事件,绑定逻车    层相关事件处理函数。

二、容器视图组件
1、view

 

<view style="text-align: center;">默认flex布局</view>
<view style="display: flex;">
     <view style="border:1px solid #f00;flex-grow: 1;">1</view>
     <view style="border:1px solid #f00;flex-grow: 1;">2</view>
     <view style="border:1px solid #f00;flex-grow: 1;">3</view>
</view>
<views style="text-align: center;">上下混合布局</views>
<view style="display: flex;flex-direction: column;">
     <view style="border: 1px solid #f00;">1</view>
     <view style="display: flex;">
      <view style="border: 1px solid #f00;flex-grow: 1;">2</view>
      <view style="border: 1px solid #f00;flex-grow: 2;">3</view>
     </view>
     </view>
 <views style="text-align: center;">左右混合布局</views>
 <view style="display: flex;">
       <view style="border: 1px solid #f00;flex-grow: 1;">1</view>
       <view style="display: flex;flex-direction: column;flex-grow:1">
        <view style="border: 1px solid #f00;flex-grow: 1;">2</view>
        <view style="border: 1px solid #f00;flex-grow: 1;">3</view>
       </view>
 </view>

 

2、scrll-view
 3、swiper

 三、基础内容组件 
1、icon

page({
  data:{
    iconType:["success","success_no_circle","info","warn","waiting","cancel","download","search","clear"],
    iconSize:[10,20,30,40],
    iconColor:['#f00','#0f0','#00f']
  }
})
<view> icon类型:
<block wx:for="{{iconType}}">
<icon type="{{item}}"/>{{item}}
</block>
</view>
<view>icon 大小:
<block wx:for="{{iconSize}}">
<icon type="success" size="{{item}}"/>{{item}}
</block>
</view>
<view>icon颜色:
<block wx:for="{{iconColor}}">
<icon type="success" size="30"color="{{item}}"/>{{item}}
</block>
</view>

 

 2、text 

3、progress
<view>显示百分比</view>
<progress percent='80' show-info='80'></progress>
<view>改变宽度</view>
<progress percent='50' stroke-width='2'></progress>
<view>自动显示进度条</view>
<progress percent='80' active></progress>

 

四、表单组件
1 、button

<button type="default">type:dafault</button>
<button type="primary">type:primary</button>
<button type="warn">type:warn</button>
<button type="default"bindtap='buttonSize'size="{{size}}">改变 size</button>
<button type="default"bindtap='buttonPlain'plain="{{plain}}">改变 planin</button>
<button type="default"bindtap='buttonLoading'loading="{{loading}}">改变 loading 显示</button>
Page({
  data:{
    size:'default',
    plain:'false',
    loading:'false'
  },
  buttonSize:function(){
    if(this.data.size=="default")
  this.setData({size:'mini'})
  else
  this.setData({size:'dafault'})  
  },
  buttonPlain:function(){
    this.setData({plain:!this.data.plain})
  },
  buttonPlainLoading:function(){
    this.setData({loading:!this.data.loading})
  }
})
 2、radio

3、checkbox
 4、switch 

5、slider
 
<view>
<switch bindchange="sw1">{{var1}}</switch>
</view>
<view>
<switch bindchange="sw2">{{var2}}</switch>
</view>
<view>
<switch bindchange="sw3">{{var3}}</switch>
</view>
<view>默认 min=0 max=100 step=1</view>
<slider></slider>
<view>显示当前值</view>
<slider show-value></slider>
<view>设置 min=20 max=200 step=10</view>
<slider min='0' max='200'step='10'show-value></slider>
<view>背景条红色,以选定颜色绿色</view>
<slider color="#f00"selected-color='#0f0'></slider>
<view>滑动改变 icon的大小</view> 
<slider show-value bindchange='sliderchange'></slider>
<icon type="sucssess"size='{{size}}'></icon>
Page({
  data:{
   size:20
  },
  sliderchange:function(e){
    this.setData({size:e.deatall.value})
  }
})

6、picker
(1)普通选择器

 (2)多列选择器
<view>多列选择器</view>
<picker rmode="multiSelector" bindchange="bindMultiPickerChange"
bindcolumnchange="bindMultiPickerColumnChange"
value="{{multiIndex}}"
range="{{multiArray}}">
<view>
当前选择:{{multiArray[0][multiIndex[0]]}},{{multiArray[1][multiIndex[1]]}},{{multiArray[2][multiIndex[2]]}},
</view>
</picker>
Page({
  data:{
    multiArray:[['陕西省','广东省'],['西安市','汉中市','延安市'],['雁塔区','长安区']],
    multiIndex:[0,0,0]
  },
  bindMultiPickerChange:function(e){
    console.log('picker 发送选择改变,携带值为',e.detail.value)
    this.setData({
      multiIndex:e.detail.value
    })
  },
  bindMultiPickerColumnChange:function(e){
  console.log('修改的列为',e.detail.column,',值为',e.detail.value);
  var data={
    multiArray:this.data.multiArray,
    multiIndex:this.data. multiIndex
  };
  data.multiIndex[e.detail.column]=e.detail.value;
  switch(e.detail.column){
    case 0:
    switch(data.multiIndex[0]){
      case 0:
      data.multiArray[1]=['西安市','汉中市','延安市'];
      data.multiArray[2]=['雁塔区','长安区'];
      break;
      case 1:
      data.multiArray[1]=['深圳市','珠海市'];
      data.multiArray[2]=['南山区','罗湖区'];
      break;
    }
    data.multiIndex[1]=0;
    data.multiIndex[2]=0;
    break;
    case 1:
    switch(data.multiIndex[0]){
      case 0:
      switch(data.multiIndex[1]){
        case 0:
        data.multiArray[2]=['雁塔区','长安区'];
        break;
        case 1:
        data.multiArray[2]=['汉台区','南郑区'];
        break;
        case 2:
        data.multiArray[2]=['宝塔区','子长县','延川县'];
        break;
      }
      break;
      case1:
      switch(data.multiIndex[1]){
        case 0:
        data.multiArray[2]=['南山区','罗湖区'];
        break;
        case 1:
        data.multiArray[2]=['香洲区','斗门区'];
        break;
      }
      break;
    }
    data.multiIndex[2]=0;
    console.log(data.multiIndex);
    break;
  }
  this.setData(data);
  },
})
(3)时间、日期选择器
Page({
  data:{
    startdate:2000,
    enddate:2050,
    date:'2018',
    starttime:'00:00',
    endtime:'12:59',
    time:'8:00'
  },
  changedate:function(e){
    this.setData({date:e.detail.value});
    console.log(e.detail.value)
  },
  changedate:function(e){
    this.setData({time:e.detail.value})
    console.log(e.detail.value)
  }
})
<view>
<picker mode="date" start="{{startdate}}" end="{{enddate}}" value="{{date}}" bindchange="changedate">选择的日期:{{date}}
</picker>
</view>
<view>
<picker mode="time" start="{{starttime}}" end="{{enddate}}" bindchange="changetime">选择的时间:{{time}}
</picker>
</view>

(4)省市选择器
7、picker-view 

8、input
9、textarea 

 10、label
Page({
  city:"",
  data:{
    citys: [
      {name:'km',value:'昆明'},
      {name:'大理',value:'大理'},
      {name:'邵通',value:'邵通',checked:'true'},
      {name:'dnh',value:'斗南花'}
    ]
  },
  cityChange:function(e){
    console.log(e.detail.value);
    var city=e.detail.value;
    this.setData({city:city})
  }
})
<!-- 单击中国不能选择/取消复选框 -->
<view><checkbox></checkbox>中国</view>
<!-- 单击"中国"可以选择/取消复选框 -->
<view><label><checkbox></checkbox>中国</label></view>
<!-- 使用for找到对应的id -->
<checkbox-group bindchange="cityChange">
<label wx:for="{{citys}}">
<checkbox value="{{item.value}}" checked='{{item.checked}}'>{{item.value}}</checkbox>
</label>
</checkbox-group>
<view>您的选择是:{{city}}</view>
 

 11、from

五、多媒体组件
1、image

2、audio  

3、video

4、camera

<camera device-position="back" flash="off" binderror="error" style="width: 100%;height: 350px;">
</camera>
<button type="primary" bindtap="takePhoto">拍照</button>
<view>预览</view>
<image mode="widthFix" src="{{src}}"></image>
 
Page({
  takePhoto(){
    const ctx=wx.createCameraContext()//创建并返回camera上下文对象
    ctx.takePhoto({
      quality:'high',
      success:(res)=>{
        this.setData({
          src:res.tempImagePath
        })
      }
    })
  },
  error(e){
    console.log(e.detail)
  }
})
六、其他组件
1、map

map组件属性

map组件markers属性的相关属性 

map组件polyline属性的相关属性

 第五章:

一、即速应用概述
1、即速应用的优势
(1)开发流程简单,零门槛制作

使用即速应用来开发微信小程序的过程非常简单,无须储备相关代码知识,没有开发经验的人也可以轻松上手。

登录即速应用的官方网站(www.jisuapp.cn),进入制作界面,从众多行业模板中选择一个合适的模板。
在模板的基础上进行简单编辑和个性化制作。
制作完成后,将代码一键打包并下载。
将代码上传至微信开发者工具。
上传成功后,等待审核通过即可。

(2)行业模板多样,种类齐全

即速应用为广大开发者提供了非常齐全的行业解决方案。目前,即速应用已经上线60多个小程序行业模板,涉及餐饮(单店版、多店版)、婚庆、旅游、运动、美容、房地产、家居、医药、母婴、摄影、社区、酒店、KTV、汽车、资讯等多个行业。
这些小程序行业模板可以有效地帮助企业拓宽资源整合渠道,降低运营成本,提高管理效率。

(3)丰富的功能组件和强大的管理后台

即速应用的功能组件和管理后台非常实用,可以根据实际情况解决商家的不同需求。例如,到店体系可以实现电子点餐、排队预约和线上快速结算;社区体系可以实现评论留言和话题管理;多商家系统可以实现分店统一管理、多门店统一运营;营销工具可以实现会员卡、优惠券的设置等营销方式……
目前,即速应用有4个版本,分别为基础版、高级版、尊享版和旗舰版。基础版为免费使用的版本,适合制作个人小程序,其他版本根据功能不同可以满足不同企业的需求。
即速应用的应用范围主要包括以下类型:

资讯类:新闻、媒体。
电商类:网购(服装、电器、读书、母婴……)。
外卖类:餐饮及零售。
到店类:餐饮及酒吧。
预约类:酒店、KTV、家教、家政,其他服务行业。

2、即速应用界面介绍
(1)菜单栏

菜单栏中的“风格”选项用于设置小程序页面的风格颜色,“管理”选项用于进入后台管理页面,“帮助”选项用于提示帮助功能,“客服”选项用于进入客服界面,“历史”选项用来恢复前项操作,“预览”选项用在PC端预览制作效果,“保存”选项用于保存已制作的内容,“生成”选项用于实现小程序打包上线设置。

(2)工具栏

工具栏包括“页面管理”“组件库”2个选项卡,“页面管理”实现添加页面和添加分组以及对某一页面进行改名、收藏、复制、删除操作。“组件库”有9个基础组件、7个布局组件、18个高级组件和2个其他组件。

(3)编辑区

编辑区是用来制作小程序页面的主要区域,通过拖拽组件实现页面制作,右边的“前进”“后退”选项可以进行恢复操作,“模板”选项可以用来选择模板,“元素”选项可以用来显示页面中的组件及其层次关系,“数据”选项可以用来进行页面数据管理,“模块”选项可以用来选择模块。

(4)属性面板

属性面板用来设置选定组件的属性及样式,包括“组件”和“组件样式”两个选项卡。“组件”选项卡用来设置组件内容及点击事件;“组件样式”选项卡用来设置组件的样式,不同组件有不同的样式需要设置。

 二、即速应用组件

1、布局组件

布局组件用于设计页面布局,主要包括双栏、分割线、弹窗、面板、自由面板、滑动面板、动态分类、分类导航、侧边栏、悬浮窗和动态分类

(1)双栏组件

双栏组件用来布局整体,它可以把一个区块分为两部分,操作时显示一个分隔的标志,便于操作,预览时则不会出现。双栏组件默认设置每个栏占50%总宽,也可以按实际需要调整比例。双栏里面可以添加基本的组件,从而达到整体的布局效果。双栏还可以嵌套双栏,即可以在其中的一个栏里嵌入一个双栏,从而将整体分成3部分(若需要将整体分成4部分,就再嵌套一个双栏,依次类推)。

(2)面板组件

面板组件相当于一个大画板,用户可以将很多基本(甚至高级)的组件(如文本组件、图片组件、按钮组件、标题组件、分类组件、音频组件、双栏组件、计数组件等)放进面板组件里一起管理。

(3)自由面板组件

自由面板组件是指放置在该面板内的组件可以自由拖动,调节组件大小。用户既可以向自由面板内拖入部分组件(包括文本组件、图片组件和按钮组件),也可以拖入任意相关容器组件,用于不规则布局。

(4)顶部导航组件

顶部导航组件固定于页面顶部,用于编辑顶部的导航。常用的手机应用在顶部有一条导航,上面写有手机应用APP的名称或logo,以及返回键等。

(5)底部导航组件

底部导航组件固定于页面底部,用于编辑底部的导航。

(6)分割线组件

分割线组件被放置于任意组件之间,用于实现分割。

(7)动态分类组件

动态分类组件仅适用于电商、到店类小程序。用户通过选择动态分类组件的样式,可以实现顶部分类、侧边栏分类来展示应用数据、商品数据等。动态分类的二级有图模式只适用于电商类小程序。

2、基本组件

基本组件是小程序页面常用的组件,包括文本、图片、按钮、标题、轮播、公告、商品列表、添加组合和视频。

(1)文本组件

文本组件是用来编辑文字信息,可以设置字体的大小,字体的样式和位置等。

(2)图片组件

图片组件主要是用来插入图片,或者进行图片模板,设置图片的样式等。

(3)按钮组件

按钮组件是用来拉一个按钮框,可以编辑按钮的文字,也可以设置按钮的类型和样式等。

(4)标题组件

标题组件是用来编辑标题的组件,可以编辑标题的文字,样式等。

(5)轮播组件

轮播组件用于实现图片的轮播展示,可以更改组件样式添加轮播图,以及数据的绑定等。

(6)分类组件

分类组件可以设置不同内容展示在不同类别中,还可以添加、删除分类的个数及进行相应的设置。

(7)图片列表组件

图片列表组件可以将图片以列表的形式展示,还可以设置图片的名称、标题和点击事件。

(8)图文集组件

图文集组件用于展示图片、标题和简介。

(9)视频组件

视频组件用于展示视频。

3、高级组件
(1)动态列表组件

动态列表组件是容纳基础组件来展示后台数据的容器,通过添加基础组件来展示对应的后台数据。

(2)个人中心组件

个人中心组件显示个人相关信息的组件,包括图像、昵称、我的订单、收货地址、购物车等。

(3)动态表单组件

动态表单组件相当于HTML中的<form>标签,是一个容器组件,可以添加子表单组件和基本组件,用来收集用户提交的相关信息给后台数据对象。

(4)评论组件

评论组件提供信息发布或回复信息的组件。

(5)计数组件

计数组件可以用于点赞、统计浏览量等类似的计数功能。

(6)地图组件

地图组件用于显示指定地址的地图,常用于实现定位及导航功能。

(7)城市定位组件

城市定位组件通常与列表类组件搭配使用,常见搭配有动态列表和商品列表。

(8)悬浮窗组件

悬浮窗组件的固定搭配有:客服、我的订单、购物车、回到顶部。

4、其他组件
(1)音频组件

音频组件用于播放音乐,手动点击播放按钮后即可实现播放。

(2)动态容器组件

动态容器组件用于动态页面,即所在页面面绑定了数据对象。动态容器组件中可以添加多
种组件--文本组件、图片组件、按钮组件、    标题组件、分类组件、音频组件、双栏组件、    
计数组件。其中,文本组件和图片组件可以绑定相应的数据对象字段(填充相应动态数据),若有计数组件,则会自动与动态容器关联。

三、即速应用后台管理

即速应用后台提供了非常强大的后台管理,开发者在后台进行修改操作就可以让数据即时更新,开发者还可以通过后台来查看小程序数据管理、用户管理、商品管理、营销工具、多商家管理等功能。

1、数据管理

数据管理包括数据总览、访客分析和传播数据功能。

数据管理包括数据总览、访客分析和传播数据功能。数据总览提供小程序总浏览量、昨日/今日访问量、总用户量、总订单数及浏览量曲线图。

2、分享设置

分享设置主要提供可以分享应用的方式。

3、用户管理

用户管理主要用于实现对用户进行添加、分组、群发消息、储值金充值、赠送会员卡等功能。

4、应用数据

应用数据是后台管理的主要内容,前端组件(动态列表、动态表单)的数据都是通过在应用数据中的数据对象来管理的,类似通过数据库存放和管理数据。

5. 轮播管理

轮播管理是前端软播组件的后台数据管理器,通过软播管理来设置前端软播组件展示的图片内容。

6.分类管理

分类管理适用于电商、到店、应用数据。分类管理可以通过选择动态分类组件样式来实现在顶部分类或侧边栏分类以展示应用数据、商品数据等效果。动态分类的二级有图模式只适用于电商。

7.商品管理

商品管理是后台管理的主要内容,前端商品列表组件的数据来源于后台商品管理。商品管理可以管理商品列表、积分商品、位置管理、支付方式、订单管理、拼团订单管理、订单统计、账单明细、运费管理和评价管理功能。

8.经营管理

经营管理主要包括子账号管理、手机端客户关系管理和短信接收管理,便于管理者管理小程序的运营。

9、营销工具

营销工具是小程序营销推广的有力工具,主要有会员卡、优惠券、积分、储值、推广、秒杀、集集乐、拼团活动、大转盘、砸金蛋、刮刮乐等。这些营销工具都需要事前在后台合理设置后,才能在活动中发挥更大的作用。

10.多商家管理

多商家管理是即速应用为有众多商家的商城(如“华东商城”“义乌商城”等)开设的管理功能,方便管理者统计每家店铺的订单及进行收益分析。

四、打包上传

即速应用可以将小程序的代码打包,该代码包可以通过微信开发者工具来对接微信小程序。

1、打包

进入即速应用后台管理,选择左边选项“分享设置”按钮,单击“微信小程序”选项。

选择“代码包下载”选项,单击“确定”按钮。

通过“微信公众平台一→小程序一设置一开发设置”获取 AppID和AppSectet,在“服务器配置”中填写相关信息,选择相应分类,单击“打包”按钮,即可成功打包

2、上传

打开微信Web开发者工具,新建项目,并填写相关内容。

单击确定按钮,打开小程序代码,编译无误后,填写该项目的版本号,单击上传按钮即可实现该小程序代码上传。

第六章:

一、网络API
1、发起网络请求

2、上传文件

3、下载文件

 二、多媒体API
1、图片API
(1)选择图片或拍照

 (2)预览图片

(3)获取图片信息

(4)保存图片到系统相册

2、录音API
(1)开始录音

(2)停止录音
wx.startRecord
({
  success:function(res){
    var tempFilepath=res.tempFilepath
  },
  fail:function(res){
  }
})
setTimeout(function(){
  wx.stopRecord()
},10000)
3、音频播放控制API
(1)播放语音

wx.startRecord({
  success:function(res){
    var tempFilepath=res.tempFilepath
    wx.playVoice({
      filepath:tempFilepath,
      complete:function(){
      }
    })
  }
})
 (2)暂停播放
wx.startRecord({
  success:function(res){
    var tempFilepath=res.tempFilepath
    wx.playVoice({
      filepath:tempFilepath
    })
 
    setTimeout(function(){
      wx.pauseVoice()
    },5000)
  }
})
 (3) 结束播放
wx.startRecord({
  success:function(res){
    var tempFilepath=res.tempFilepath
    wx.playVoice({
      filepath:tempFilepath
    })
    
    setTimeout(function(){
      wx.stopVoice()
    },5000)
  }
})
4、音乐播放控制API

案例:

wxml:

<view class="container">
<image class="bgaudio" src="{{changeImg? music.coverImg:'../image/lxy1.png'}}"/>
<view class="control-view">
<image src="../image/lxy2.png" bind:tap="onPositionTap" data-how="0"/>
<image src="../image/{{isPlaying?'pause':'lxy2'}}.png" bind:tap="onAudioTap"/>
<image src="../image/lxy3.png" bind:tap="onStopTap"/>
<image src="../image/lxy4.png" bind:tap="onPositionTap" data-how="1"/>
</view>
</view>

 json:

{
}

wxss:

.bgaudio{
  height: 350rpx;
  width: 350rpx;
  margin-bottom: 100rpx;
}
.control-viewimage{
  height: 64rpx;
  width: 64rpx;
  margin: 30rpx;
}

js:

Page({
  data:{
    isPlaying:false,
    coverImgchangedImg:false,
    music:{
      "url":
      "http://bmob-cdn-16488.b0.upaiyun.com/2018/02/09/117e4alb405195b18061299e2de89597.mp3",
      "titie":"盛晓玫-有一天",
      "coverImg":
      "http://bmob-cdn-16488.b0.upaiyun.com/2018/02/09/f604297140c9681880cc3d3e581f7724.jpg"
    },
  },
  onLoad:function(){
    this.onAudioState();
  },
  onAudioTap:function(event){
    if(this.data.isPlaying){
      wx.pauseBackgroundAudio();
    }else{
      let music =this.data.music;
      wx.playBackgroundAudio({
        dataUrl:music.url,
        title:music.titie,
        coverImgUrl:music.coverImg
      })
    }
  },
  onStopTap:function(){
    let that=this;
    wx.stopBackgroundAudio({
      success:function(){
        that.setData({isPlaying:false,changedImg:false});
      }
    })
  },
  onPositionTap:function(event){
    let how=event.target.dataset.how;
    wx.getBackgroundAudioPlayerState({
      success:function(res){
        let status=res.duration;
        if(status===1){
          let duration=res.duration;
          let currentPosition=res.currentPosition;
          if(how==="0"){
            let position=currentPosition-10;
            if(position<0){
              position=1;
            }
            wx.seekBackgroundAudio({
              position:position
            });
            wx.showToast({title:"快退10s",duration:500});
          }
          if(how==="1"){
            let position=currentPosition+10;
            if(position>duration){
              position=duration-1;
            }
            wx.seekBackgroundAudio({
              position:position
            });
            wx.showToast({title:"快进10s",duration:500});
          }
        }else{
          wx.showToast({title:"音乐未播放",duration:800});
        }
      }
    })
  },
  onAudioState:function(){
    let that=this;
    wx.onBackgroundAudioPlay(function(){
      that.setData({isPlaying:true,changedImg:true});
      console.log("on play");
    });
    wx.onBackgroundAudioPause(function(){
      that.setData({isPlaying:false});
      console.log("on pause");
    });
    wx.onBackgroundAudioStop(function(){
      that.setData({isPlaying:false,changedImg:false});
      console.log("on stop");
    });
  }
})

 

 三、文件API
1、保存文件 

2、获取本地文件列表

3、获取本地文件的文件信息

4、删除本地信息

5、打开文档

四、本地数据及缓存API
1、保存数据

2、获取数据

3、删除数据
 4、清空数据
(1)wx.clearStorage()
wx.getStorage({
  key:'name',
  success:function(res){
    wx.clearStorage()
  },
})
(2)wx.clearStroageSync()
try{
  wx.clearStorageSync()
}catch(e){
}
五、位置信息API
1、获取位置信息

2、选择位置信息  

3、显示位置信息
wx.getLocation({
  type:'gcj02',
  success:function(res){
var latitude=res.latitude
var longitude=res.longitude
wx.openLocation({
  latitude: latitude,
  longitude: longitude,
  scale:10,
  name:'智慧国际酒店',
  address:'西安市长安区西长安区300号'
})
  }
})
六、设备相关API
 1、获取系统信息

wx.getSystemInfo({
  success:function(res){
    console.log("手机型号:"+res.model)
    console.log("设备像素比:"+res.pixelRatio)
    console.log("窗口的宽度:"+res.windowWidth)
    console.log("窗口的高度:"+res.windowHeight)
    console.log("微信的版本号:"+res.version)
    console.log("操作系统平台:"+res.system)
    console.log("客户端平台:"+res.platform)
  },
})

 

2、网络状态
(1)获取网络状态

wx.getNetworkType({
  success:function(res){
    console.log(res.networkType)
  },
})
(2)监听网络状态变化
wx.onNetworkStatusChange(function(res){
  console.log("网络是否连接:"+res.isConnected)
  console.log("变化后的网络类型:"+res.networkType)
})
 3、拨打电话

wx.makePhoneCall({
  phoneNumber: '18092585093',
})
4、扫描二维码
 
//允许从相机和相册扫码
wx.scanCode({
  success:(res)=>{
    console.log(res.result)
    console.log(res.scanType)
    console.log(res.charSet)
    console.log(res.path)
  }
})
//只允许从相机扫码
wx.scanCode({
  onlyFromCamera:true,
  success:(res)=>{
    console.log(res)
  }
})

  • 21
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值