Python_小程序
一、开发前的准备工作
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_小程序的更多相关文章
- Python_小程序(云开发)
一.云开发API初始化 wx.cloud.init({ env:'test-x1dzi', //环境ID traceUser:true //是否在控制台查看用户信息 }) 二.云开发API初始化-服务 ...
- 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用
有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...
- 微信小程序开发心得
微信小程序也已出来有一段时间了,最近写了几款微信小程序项目,今天来说说感受. 首先开发一款微信小程序,最主要的就是针对于公司来运营的,因为,在申请appid(微信小程序ID号)时候,需要填写相关的公司 ...
- 微信应用号(小程序)开发IDE配置(第一篇)
2016年9月22日凌晨,微信宣布“小程序”问世,当然只是开始内测了,微信公众平台对200个服务号发送了小程序内测邀请.那么什么是“小程序”呢,来看微信之父怎么说 看完之后,相信大家大概都有些明白了吧 ...
- TODO:小程序开发过程之体验者
TODO:小程序开发过程之体验者 1. 小程序开发过程,先下载开发者并安装开发者工具,现在腾讯开放测试了,普通用户也可以登录开发者工具,如图普通用户登录为调试类型,但是只能建立无AppID的项目 如果 ...
- TODO:即将开发的第一个小程序
TODO:即将开发的第一个小程序 微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验.个人理解小程序是寄宿在微信平台上的一个前端框架,具有跨平台功能, ...
- 微信小程序体验(2):驴妈妈景区门票即买即游
驴妈妈因为出色的运营能力,被腾讯选为首批小程序内测单位.驴妈妈的技术开发团队在很短的时间内完成了开发任务,并积极参与到张小龙团队的内测问题反馈.驴妈妈认为,移动互联网时代,微信是巨大的流量入口,也是旅 ...
- 微信小程序中利用时间选择器和js无计算实现定时器(将字符串或秒数转换成倒计时)
转载注明出处 改成了一个单独的js文件,并修改代码增加了通用性,点击这里查看 今天写小程序,有一个需求就是用户选择时间,然后我这边就要开始倒计时. 因为小程序的限制,所以直接选用时间选择器作为选择定时 ...
- 微信小程序(微信应用号)组件讲解
这篇文章主要讲解微信小程序的组件. 首先,讲解新建项目.现在有句话:招聘三天以上微信小程序开发,这个估计只能去挖微信的工程师了.技术新,既然讲解,那我们就从开始建项目讲解. 打开微信web开发者工具, ...
随机推荐
- 【RAC】通过命令查看当前数据库是不是rac
SQL> show parameter cluster_database 如果参数中显示的是 NAME TYPE ...
- ctfhub技能树—文件上传—双写后缀
双写后缀绕过 用于只将文件后缀名,例如"php"字符串过滤的场合: 例如:上传时将Burpsuite截获的数据包中文件名[evil.php]改为[evil.pphphp],那么过滤 ...
- 1 分钟上手,在容器中运行 Visual Studio Code
https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers 这个插件允许我们在容器中运 ...
- 浅析Linux进程空间布局
一.进程空间分布概述 对于一个进程,其空间分布如下图所示: 1.参数说明 程序段(Text):程序代码在内存中的映射,存放函数体的二进制代码. 初始化过的数据(Data):在程序运行初已经对变量进行初 ...
- DevOps运动的缘起 将DevOps想象为一种编程语言里面的一个接口,而SRE类实现了这个接口
SRE vs DevOps:是敌是友? - DockOne.io http://www.dockone.io/article/5935 RE vs DevOps:是敌是友? [编者的话]网站可靠 ...
- ETL调优的一些分享(上)(转载)
ETL是构建数据仓库的重要一环.通过该过程用户将所需数据提取出来,并按照已定义的模型导入数据仓库.由于ETL是建立数据仓库的必经过程,它的效率将影响整个数据仓库的构建,因此它的有效调优具有很高的重要性 ...
- 分别简述computed和watch的使用场景
computed: 当一个属性受多个属性影响的时候就需要用到computed 最典型的栗子: 购物车商品结算的时候watch: 当一条数据影响多条数据的时候就需要用watch 栗子:搜索数据
- loj10012 Best Cow Fences
题目描述 原题来自:USACO 2003 Mar. Green 给定一个长度为 N 的非负整数序列 A ,求一个平均数最大的,长度不小于 L 的子段. 输入格式 第一行用空格分隔的两个整数 N 和 L ...
- Atlas 2.1.0 实践(4)—— 权限控制
Atlas的权限控制非常的丰富,本文将进行其支持的各种权限控制的介绍. 在atlas-application.properties配置文件中,可以设置不同权限的开关. atlas.authentica ...
- 浅谈正向代理、反向代理和CDN的区别
一.正向代理 1.正向代理位于客户端和源服务器之间的服务器(代理服务器): 2.隐藏客户端:由代理服务器代替客户端去访问目标服务器,用户需要设置代理服务器的IP和端口: 3.每一次请求是到代理服务器, ...