一、开发前的准备工作

  1.申请AppID:一个账号对应一个小程序,个人/个体只能申请5个小程序

  2.下载开发工具

二、小程序的文件结构

三、

  1.数据绑定

    1.1数据的设置

Page(
data:{
name:'name',
age:18
}
)

page.js的内容

    1.2数据的调用

<view>{{name}}</view>
<view>{{age}}</view>

page.wxml

  2.列表的渲染

    2.1数据的设置

Page(
data:{
stundents:[
{id:1,name:'alxes',age:11},
{id:2,name:'alxes',age:12},
{id:3,name:'alxes',age:13}
]
}
)

page.js

    2.2数据的调用

<view wx:for="{{stundents}}">{{item.id}}{{item.name}}item.age</view>

page.wxml

  除了item之外,还有index内置的参数,标识条目的位置

  3.事件的监控

    3.1事件的定义

Page(
data:{
counter:0
}
handleEvent(){
this.setDate({
counter:this.data.counter+1
})
}
)

page.js

    3.2事件的引用

<button bindtap='handleEvent'>按钮</button>

四、小程序的配置

  1.project.config.json:项目配置文件,比如项目名称,appid

  2.sitemap.json:小程序搜索相关

  3.app.json:全局配置,参考文档:https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/app.html

属性 类型 必填 描述
pages string[] 页面路径列表
window Object 全局默认窗口表现
tabBar Object 底部tab栏表现,底部导航栏

    3.1tabBar设置 

  "tabBar": {
"list": [
{
"pagePath": "pages/index/index",
"text": "首页",
"iconPath": "/img/sy.jpg",
"selectedIconPath": "/img/sy_active.jpg"
},
{
"pagePath": "pages/classify/classify",
"text": "首页",
"iconPath": "/img/fl.jpg",
"selectedIconPath": "/img/fl_active.jpg"
}
]
}

底部分页栏

  4.page.json:页面配置

    页面中的配置选项回覆盖app.json中的windows中相同的配置选项

五、页面的生命周期(.js文件中)

Page({

  /**
* 页面的初始数据
*/
data: { }, /**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) { }, /**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () { }, /**
* 生命周期函数--监听页面显示
*/
onShow: function () { }, /**
* 生命周期函数--监听页面隐藏
*/
onHide: function () { }, /**
* 生命周期函数--监听页面卸载
*/
onUnload: function () { }, /**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () { }, /**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () { }, /**
* 用户点击右上角分享
*/
onShareAppMessage: function () { }
})

生命周期示例

六、基本组件介绍

  1.text组件

 1 <view>
2 <!-- 1.基本使用 -->
3 <text>文本组件</text>
4 </view>
5 <view>
6 <!-- 2.selectable属性,文本是否可选。默认false -->
7 <text selectable="{{ture}}">文本可以被选择</text>
8 </view>
9 <view>
10 <!-- 3.spaces属性,显示连续空格 -->
11 <text space="enap">中文字 符空格一半大小</text>
12 <text space="emsp">中文字 符空格大小</text>
13 <text space="nbsp">根据字 体设置的空格大小</text>
14 </view>
15 <view>
16 <!-- 4.decode,是否解码,默认false -->
17 <text decode="{{ture}}">是否解码</text>
18 </view>

使用说明

  2.button组件

<!-- 1.button的基本使用 -->
<button>这是个按钮</button>
<!-- 2.size属性, 建议使用mini-->
<button size="mini">mini属性的按钮</button>
<!-- 3.type属性 -->
<button size="mini" type="primary">primary属性的按钮</button>
<button size="mini" type="default">default属性的按钮</button>
<button size="mini" type="warn">warn属性的按钮</button>
<!-- 4.plain,镂空效果 -->
<button size="mini" plain>plain属性的按钮</button>
<!-- 5.disalbe:不可用 -->
<button size="mini" disalbe>disalbe属性的按钮</button>

使用说明

  3.view组件

    参考文档:https://developers.weixin.qq.com/miniprogram/dev/component/view.html

  4.img组件

<!-- 1.基本使用
1.1组件有默认的大小320*240
1.2有一个行内块级元素(inline-bolck)
-->
<image></image>
<!-- scr属性,本地路径(相对路径/绝对路径)/ 远程地址 -->
<image src="/img/flk.jpg"></image>
<image src="网络地址"></image>
<!-- 相册中的图片 -->
<button bindtap="handleChooseAlbum">选中图片</button>

基本使用

  data: {
imagePath:''
}, handleChooseAlbum(){
//系统API,让用户在相册中选择图片或拍照
wx.chooseImage({
success: (res) => {
//路径
const path = res.tempFilePaths[0]
this.setData({
imagePath : path
})
},
})
}

相册功能

    参考文档:https://developers.weixin.qq.com/miniprogram/dev/component/image.html

  5.input组件:输入框

    参考文档:https://developers.weixin.qq.com/miniprogram/dev/component/input.html

  6.scroll-view组件    

<!-- 水平滚动 -->
<scroll-view class="container1" scroll-x>
<view wx:for="{{10}}" class=".item1">{{item}}</view>
</scroll-view> <!-- 垂直滚动 -->
<scroll-view class="container2" scroll-y>
<view wx:for="{{10}}" class=".item2">{{item}}</view>
</scroll-view>

设置方法wxml文件

/* 设置横向滑动 */
.contailner1{
background: purple;
white-space: nowrap;
}
.item1{
width: 100px;
height: 100px;
background: red;
margin: 10px;
display: inline-block;
} /* 设置竖向滑动 */
.contailner2{
background: orange;
height: 200px;
margin-top: 20px;
}
.item2{
height: 100px;
background: blue;
margin:10px;
}

样式设置方法wxss文件

    参考文档:https://developers.weixin.qq.com/miniprogram/dev/component/scroll-view.html

七、共同属性

属性 描述 注释
id 组件的唯一标识 整个页面的唯一标识
class 组件的样式表 在对应的wxss中定义的样式表
style 组件的内联样式 可以动态设置内联样式
hidden 组件是否显示 所有组件默认显示
data-* 自定义属性 组件上触发的事件十,会发送给事件处理的函数
bind*/cath* 组件的事件  

八、支持的选择器

九、wxss的尺寸单位

  1.使用rpx,可根据屏幕宽度进行自适应,建议做布局设置以iPhone6为实例。

十、引入wxss文件的方法

  @import '引入文件的路径';

十一、官方样式库

  https://github.com/Tencent/weui-wxss

十二、must语法

  1.引入变量 {{message}}

  2.变量判断{{age >=18 ? '成年人' : '未成年人'}}

  3.bloot变量判断<view class ='box {{isActive ? "active" : ""}}'>哈哈</view>

         isActive : false

十三、条件判断

<!-- wx:if 的使用 -->
<view wx:if ="{{isShow}}">ha</view>
<!-- wx:else/wx:elif -->
<view wx:if="{{ score >= 90 }}">优秀</view>
<view wx:elif="{{ score >= 80 }}">l良好</view>
<view wx:elif="{{ score >= 60 }}">及格</view>
<view wx:else>及格</view>

代码实例

  在某些情况下,我们需要使用wx:if或者wx:for是,可能需要包裹一组组件标签,这时候需要使用block标签,block不是组就按,仅用来包装元素

<view wx:for="{{movies}}">
<view>电影序号:{{index}}</view>
<view>电影名称:{{item}}</view>
</view> <block wx:for="{{movies}}">
<view>电影序号:{{index}}</view>
<view>电影名称:{{item}}</view>
</block>

代码示例

  item、index起名字

<view wx:for="{{movies}}" wx:for-item="movie1" wx:for-indexx="i" >{{movie1}}-{{i}}</view>

十四、模板的使用

<!-- 设置 -->
<template name="contenItem">
<button size='mini'>哈哈</button>
<view>哈哈1</view>
</template> <!-- 引用 ,-->
<template is="contenItem"/>
<!-- 引入文件 -->
<import scr="路径"/> <!-- 传参数 -->
<template is="contenItem" data="{{btntex:'a',content:'e'}}"/>

示例

十五、wxs

<!-- wxs的定义方式 -->
<wxs module="info">
// JS代码
var message = "hello word";
var name = "coderwhy"; var sum = function(num1,num2){
return num1 + num2
}
//模块数据导出
module.exports = {
message : message
name : name
sum : sum
} <!-- 导入方法 -->
<wxs src="路径" module="info"/> <!-- 引入方法 -->
<view>{{info.message}}</view>
<view>{{info.name}}</view>
<view>{{sum(20,30)}}</view>

示例

十六、常见的事件类型

  input : bindinput bindblur bindfocus

  scroll-view : bindscrolltowpper/bindscrolltolower

  1.比较常见的事件类型

类型 触发条件
touchstart 手指触摸动作开始
touchmove 手指触摸后移动
touchcancel 手指触摸动作被打断
touchend 手指触摸动作结束
tap 手指触摸后马上离开
longpress 手指触摸后,超过350ms在离开,如果指定了事件回调函数,并触发这个事件,tap事件将不被触发
longtap 手指触摸后,超过350ms在离开

  2.事件对象

属性 说明
type 事件类型
timeStamp 页面打开到触发事件所经过的毫秒数
target 触发事件的组件的一些属性值组合
currentTarget 当前组件的一些属性值集合
detail 额外的信息
touches 触摸事件,当前停留在屏幕中触摸点信息的数组
changedTouches 触摸事件,当前变化的触摸点信息的数组

  3.事件冒泡和事件捕获

    3.1 bind一层层传递

    3.2 catch 阻止事件进一步传递

十九、自定义组件

  自定义组件同样是由4个文件组成,建立一个公共的目录,使用自定义组件  

 1 <!-- 使用自定义组件,wxml文件中 -->
2 <my-cpn></my-cpn>
3 <!-- 在json文件中,注册组件 -->
4 {
5 "usingComponents": {
6 "my-cpn":"路径"
7 }
8 }
9 <!--组件中传递数据 -->
10 <!-- 在组件js文件中 -->
11 Component({
12 properties:{
13 title:{
14 type:String,
15 value:'默认值'
16 }
17 }
18 })
19 <!-- 在wxml文件中 -->
20 <my-cpn titile='哈哈'></my-cpn>

组件的使用方法

1.组件传递样式
Component({
externalClasses:['titileclass']
})
引用

组件传递内容

组件传递方法

组件修改数据

二十、插槽

  插槽同样是4个文件组成,使用slot标签

<!-- 插槽的定义 -->
<view><slot name='slot1'></view>
<view><slot name='slot2'></view>
<view><slot name='slot3'></view>

槽的定义

  同样插槽需要注册,才可以引用,注意需要在插槽的js文件中,引入下列内容

Component({
options:{
multipleSlots : true
}
})

插槽的js文件中引入

二十一、Component构造器

  properties:定义传入的属性

  data:定义内部属性

  methods:定义方法

  options:额外配置选项

  externalClasses:引入外部样式

  observers:属性和数据监听

  pageLifetimes:页面生命周期

  lefetimes:组件生命周期

二十二、网络请求

  wx.request封装

二十三、展示弹窗API

  showToast

  showModal

  showLoading

  showActionSheet

Python_小程序的更多相关文章

  1. Python_小程序(云开发)

    一.云开发API初始化 wx.cloud.init({ env:'test-x1dzi', //环境ID traceUser:true //是否在控制台查看用户信息 }) 二.云开发API初始化-服务 ...

  2. 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用

    有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...

  3. 微信小程序开发心得

    微信小程序也已出来有一段时间了,最近写了几款微信小程序项目,今天来说说感受. 首先开发一款微信小程序,最主要的就是针对于公司来运营的,因为,在申请appid(微信小程序ID号)时候,需要填写相关的公司 ...

  4. 微信应用号(小程序)开发IDE配置(第一篇)

    2016年9月22日凌晨,微信宣布“小程序”问世,当然只是开始内测了,微信公众平台对200个服务号发送了小程序内测邀请.那么什么是“小程序”呢,来看微信之父怎么说 看完之后,相信大家大概都有些明白了吧 ...

  5. TODO:小程序开发过程之体验者

    TODO:小程序开发过程之体验者 1. 小程序开发过程,先下载开发者并安装开发者工具,现在腾讯开放测试了,普通用户也可以登录开发者工具,如图普通用户登录为调试类型,但是只能建立无AppID的项目 如果 ...

  6. TODO:即将开发的第一个小程序

    TODO:即将开发的第一个小程序 微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验.个人理解小程序是寄宿在微信平台上的一个前端框架,具有跨平台功能, ...

  7. 微信小程序体验(2):驴妈妈景区门票即买即游

    驴妈妈因为出色的运营能力,被腾讯选为首批小程序内测单位.驴妈妈的技术开发团队在很短的时间内完成了开发任务,并积极参与到张小龙团队的内测问题反馈.驴妈妈认为,移动互联网时代,微信是巨大的流量入口,也是旅 ...

  8. 微信小程序中利用时间选择器和js无计算实现定时器(将字符串或秒数转换成倒计时)

    转载注明出处 改成了一个单独的js文件,并修改代码增加了通用性,点击这里查看 今天写小程序,有一个需求就是用户选择时间,然后我这边就要开始倒计时. 因为小程序的限制,所以直接选用时间选择器作为选择定时 ...

  9. 微信小程序(微信应用号)组件讲解

    这篇文章主要讲解微信小程序的组件. 首先,讲解新建项目.现在有句话:招聘三天以上微信小程序开发,这个估计只能去挖微信的工程师了.技术新,既然讲解,那我们就从开始建项目讲解. 打开微信web开发者工具, ...

随机推荐

  1. 【RAC】通过命令查看当前数据库是不是rac

    SQL> show parameter  cluster_database 如果参数中显示的是 NAME                                 TYPE        ...

  2. ctfhub技能树—文件上传—双写后缀

    双写后缀绕过 用于只将文件后缀名,例如"php"字符串过滤的场合: 例如:上传时将Burpsuite截获的数据包中文件名[evil.php]改为[evil.pphphp],那么过滤 ...

  3. 1 分钟上手,在容器中运行 Visual Studio Code

    https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers 这个插件允许我们在容器中运 ...

  4. 浅析Linux进程空间布局

    一.进程空间分布概述 对于一个进程,其空间分布如下图所示: 1.参数说明 程序段(Text):程序代码在内存中的映射,存放函数体的二进制代码. 初始化过的数据(Data):在程序运行初已经对变量进行初 ...

  5. DevOps运动的缘起 将DevOps想象为一种编程语言里面的一个接口,而SRE类实现了这个接口

     SRE vs DevOps:是敌是友? - DockOne.io http://www.dockone.io/article/5935   RE vs DevOps:是敌是友? [编者的话]网站可靠 ...

  6. ETL调优的一些分享(上)(转载)

    ETL是构建数据仓库的重要一环.通过该过程用户将所需数据提取出来,并按照已定义的模型导入数据仓库.由于ETL是建立数据仓库的必经过程,它的效率将影响整个数据仓库的构建,因此它的有效调优具有很高的重要性 ...

  7. 分别简述computed和watch的使用场景

    computed: 当一个属性受多个属性影响的时候就需要用到computed 最典型的栗子: 购物车商品结算的时候watch: 当一条数据影响多条数据的时候就需要用watch 栗子:搜索数据

  8. loj10012 Best Cow Fences

    题目描述 原题来自:USACO 2003 Mar. Green 给定一个长度为 N 的非负整数序列 A ,求一个平均数最大的,长度不小于 L 的子段. 输入格式 第一行用空格分隔的两个整数 N 和 L ...

  9. Atlas 2.1.0 实践(4)—— 权限控制

    Atlas的权限控制非常的丰富,本文将进行其支持的各种权限控制的介绍. 在atlas-application.properties配置文件中,可以设置不同权限的开关. atlas.authentica ...

  10. 浅谈正向代理、反向代理和CDN的区别

    一.正向代理 1.正向代理位于客户端和源服务器之间的服务器(代理服务器): 2.隐藏客户端:由代理服务器代替客户端去访问目标服务器,用户需要设置代理服务器的IP和端口: 3.每一次请求是到代理服务器, ...