Page({
data: {
array: [{
id:0,
message: ‘foo’,
}, {
id:1,
message: ‘bar’
}]
}
})
7.3.2. block
渲染⼀个包含多节点的结构块 block最终不会变成真正的dom元素
{{index}}:
{{item}}
7.4.1. wx:if
在框架中,使⽤ wx:if="{{condition}}"
来判断是否需要渲染该代码块:
1
2
3
7.4.2. hidden
True
类似 wx:if
频繁切换用 hidden
不常使用用 wx:if
=======================================================================
⼩程序中绑定事件,通过bind关键字来实现。如bindtap
、bindinput
、bindchange
等不同的组件⽀持不同的事件,具体看组件的说明即可。
绑定事件
通过事件源对象可以获取输入框的值—e.detail.value
Page({
// 绑定的事件
handleInput: function(e) {
console.log(e);
console.log(“值被改变了”);
}
})
handleInput: function(e) {
// {item:100}
console.log(e.currentTarget.dataset)
// 输入框的值
console.log(e.detail.value);
}
9. 样式WXSS
==================================================================================================================================================
WXSS( WWeeiiXXiinn SSttyyllee SShheeeettss )是⼀套样式语⾔,⽤于描述 WXML
的组件样式。与 CSS 相⽐,WXSS 扩展的特性有:
-
响应式⻓度单位
rpx
-
样式导⼊
rpx
(responsive pixel): 可以根据屏幕宽度进⾏⾃适应。规定屏幕宽为750rpx
。如在iPhone6
上,屏幕宽度为375px
,共有750个物理像素,则750rpx = 785px = 750物理像素
即:1rpx = 0.5px= 1物理像素
| 设备 | rpx换算px(屏幕宽度/750) | px换算rpx(750/屏幕宽度) |
| — | — | — |
| iPhone5 | 1rpx=0.42px | 1px=2.34rpx |
| iPhone6 | 1rpx=0.5px | 1px=2rpx |
| iPhone6 Plus | 1rpx=0.552px | 1px=1.81rpx |
建议: 开发微信⼩程序时设计师可以⽤ iPhone6 作为视觉稿的标准。
使⽤步骤:
-
确定设计稿宽度
pageWidth
-
计算⽐例
750rpx = pageWidth px
,因此1px = 750rpx/pageWidth
-
在less⽂件中,只要把设计稿中的
px=>750/pageWidth rpx
即可。
wxss中直接就⽀持,样式导⼊功能。
也可以和 less中的导⼊混⽤。
使⽤@import
语句可以导⼊外联样式表,只⽀持相对路径
。
⽰例代码:
/** common.wxss **/
.small-p {
padding:5px;
}
/** app.wxss **/
@import “common.wxss”;
.middle-p {
padding:15px;
}
特别需要注意的是 ⼩程序 不⽀持通配符 *
因此以下代码⽆效!
*{
margin:0;
padding:0;
box-sizing:border-box;
}
⽬前⽀持的选择器有:
| 选择器 | 样例 | 样例描述 |
| — | — | — |
| .class | .intro | 选择所有拥有 class=“intro” 的组件 |
| #id | #firstname | 选择拥有 id="firstname"的组件 |
| element | view | 选择所有 view 组件 |
| element,element | view,checkbox | 选择所有⽂档的 view 组件和所有的 checkbox 组件 |
| nth-child(n) | view:nth-child(n) | 选择某个索引的标签 |
| ::after | view::after | 在 view 组件后边插⼊内容 |
| ::before | view::before | 在 view 组件前边插⼊内容 |
原⽣⼩程序不⽀持less,其他基于⼩程序的框架⼤体都⽀持,如wepy
, mpvue
, taro
等。但是仅仅因为⼀个less
功能,⽽去引⼊⼀个框架,肯定是不可取的。因此可以⽤以下⽅式来实现
-
编辑器是
vs code
-
安装插件
easy less
- 在
vs code
的设置中加⼊如下,配置
- 在要编写样式的地⽅,新建
lexx
⽂件,如index.lese
然后正常编辑即可。
10. 常见组件
===================================================================================================================================
重点讲解⼩程序中常⽤的布局组件view,text,rich-text,button,image,navigator,icon,swiper,radio,checkbox
。等
10.1. view
代替 原来的 div
标签
点击我试试
10.2. text
-
⽂本标签
-
只能嵌套text
-
⻓按⽂字可以复制(只有该标签有这个功能)
-
可以对空格 回⻋ 进⾏编码
| 属性名 | 类型 | 默认值 | 说明 |
| — | — | — | — |
| selectable | Boolean | false | 文本是否可选 |
| decode | Boolean | false | 是否解码 |
10.2.1 代码
普 通
10.3. image
-
图⽚标签,image组件默认宽度320px、⾼度240px
-
⽀持懒加载
| 属性名 | 类型 | 默认值 | 说明 |
| — | — | — | — |
| src | String | | 图片资源地址 |
| mode | String | ‘scaleToFill’ | 图片裁剪、缩放的模式 |
| lazy-load | Boolean | false | 图片懒加载 |
mode 有效值:
mode 有 13 种模式,其中 4 种是缩放模式,9 种是裁剪模式。
| 模式 | 值 | 说明 |
| — | — | — |
| 缩放 | scaleToFill | 不保持纵横⽐缩放图⽚,使图⽚的宽⾼完全拉伸⾄填满 image 元素 |
| 缩放 | aspectFit | 保持纵横⽐缩放图⽚,使图⽚的⻓边能完全显⽰出来。 |
| 缩放 | aspectFill | 保持纵横⽐缩放图⽚,只保证图⽚的短边能完全显⽰出来。 |
| 缩放 | widthFix | 宽度不变,⾼度⾃动变化,保持原图宽⾼⽐不变 |
| 裁剪 | top | 不缩放图⽚,只显⽰图⽚的顶部区域 |
| 裁剪 | bottom | 不缩放图⽚,只显⽰图⽚的底部区域 |
| 裁剪 | center | 不缩放图⽚,只显⽰图⽚的中间区域 |
| 裁剪 | left | 不缩放图⽚,只显⽰图⽚的左边区域 |
| 裁剪 | right | 不缩放图⽚,只显⽰图⽚的右边区域 |
| 裁剪 | top left | 不缩放图⽚,只显⽰图⽚的左上边区域 |
| 裁剪 | top right | 不缩放图⽚,只显⽰图⽚的右上边区域 |
| 裁剪 | bottom left | 不缩放图⽚,只显⽰图⽚的左下边区域 |
| 裁剪 | bottom right | 不缩放图⽚,只显⽰图⽚的右下边区域 |
10.4. swiper
微信内置轮播图组件
默认宽度 100% ⾼度 150px
| 属性名 | 类型 | 默认值 | 说明 |
| — | — | — | — |
| indicator-dots | Boolean | false | 是否显⽰⾯板指⽰点 |
| indicator-color | Color | rgba(0, 0, 0, .3) | 指⽰点颜⾊ |
| indicator-active-color | Color | #000000 | 当前选中的指⽰点颜⾊ |
| autoplay | Boolean | false | 是否⾃动切换 |
| interval | Number | 5000 | ⾃动切换时间间隔 |
| circular | Boolean | false | 是否循环轮播 |
10.4.1. swiper
滑块视图容器。
10.4.2. swiper-item
滑块
默认宽度和⾼度都是100%
10.5. navigator
导航组件 类似超链接标签
| 属性名 | 类型 | 默认值 | 说明 |
| — | — | — | — |
| target | String | self | 在哪个⽬标上发⽣跳转,默认当前⼩程序,可选值self/miniProgram |
| url | String | | 当前⼩程序内的跳转链接 |
| opentype | String | navigate | 跳转⽅式 |
open-type 有效值:
| 值 | 说明 |
| — | — |
| navigate | 保留当前⻚⾯,跳转到应⽤内的某个⻚⾯,但是不能跳到 tabbar ⻚⾯ |
| redirect | 关闭当前⻚⾯,跳转到应⽤内的某个⻚⾯,但是不允许跳转到 tabbar ⻚⾯。 |
| switchTab | 跳转到 tabBar ⻚⾯,并关闭其他所有⾮ tabBar ⻚⾯ |
| reLaunch | 关闭所有⻚⾯,打开到应⽤内的某个⻚⾯ |
| navigateBack | 关闭当前⻚⾯,返回上⼀⻚⾯或多级⻚⾯。可通过 getCurrentPages() 获取当前的⻚⾯栈,决定需要返回⼏层 |
| exit | 退出⼩程序,target="miniProgram"时⽣效 |
10.6 rich-text
富文本标签
可以将字符串解析成 对应标签,类似 vue中 v-html
功能
代码
// 1 index.wxml 加载 节点数组
// 2 加载 字符串
<rich-text nodes='<img
src="https://developers.weixin.qq.com/miniprogram/assets/images/head_global_z_@all.p
ng" alt=“”>'>
// index.js
Page({
data: {
nodes: [{
name: ‘div’,
attrs: {
class: ‘div_class’,
style: ‘line-height: 60px; color: red;’
},
children: [{
type: ‘text’,
text: ‘Hello World!’
}]
}]
},
tap() {
console.log(‘tap’)
}
})
10.6.1. nodes属性
nodes
属性⽀持 字符串
和 标签节点数组
| 属性 | 说明 | 类型 | 必填 | 备注 |
| — | — | — | — | — |
| name | 标签名 | string | 是 | ⽀持部分受信任的 HTML 节点 |
| attrs | 属性 | object | 否 | ⽀持部分受信任的属性,遵循 Pascal 命名法 |
| children | ⼦节点列表 | array | 否 | 结构和 nodes ⼀致 |
⽂本节点:type = text
| 属性 | 说明 | 类型 | 必填 | 备注 |
| — | — | — | — | — |
| text | ⽂本 | string | 是 | ⽀持entities |
-
nodes不推荐使⽤ String 类型,性能会有所下降。
-
rich-text 组件内屏蔽所有节点的事件。
-
attrs 属性不⽀持 id ,⽀持 class 。
-
name 属性⼤⼩写不敏感。
-
如果使⽤了不受信任的 HTML 节点,该节点及其所有⼦节点将会被移除。
-
img 标签仅⽀持⽹络图⽚。
10.7 button
<button
type=“default”
size=“{{defaultSize}}”
loading=“{{loading}}”
plain=“{{plain}}”
default
| 属性 | 类型 | 默认值 | 必填 | 说明 |
| — | — | — | — | — |
| size | string | default | 否 | 按钮的⼤⼩ |
| type | string | default | 否 | 按钮的样式类型 |
| plain | boolean | false | 否 | 按钮是否镂空,背景⾊透明 |
| disabled | boolean | false | 否 | 是否禁⽤ |
| loading | boolean | false | 否 | 名称前是否带 loading 图标 |
| formtype | string | | 否 | ⽤于组件,点击分别会触发 组件的submit/reset 事件 |
| opentype | string | | 否 | 微信开放能⼒ |
size 的合法值
| 值 | 说明 |
| — | — |
default 默认⼤⼩
mini ⼩尺⼨
type 的合法值
| 值 | 说明 |
| — | — |
| primary | 绿⾊ |
| default | ⽩⾊ |
| warn | 红⾊ |
form-type 的合法值
| 值 | 说明 |
| — | — |
| submit | 提交表单 |
| reset | 重置表单 |
open-type 的合法值
| 值 | 说明 |
| — | — |
| contact | 打开客服会话,如果⽤⼾在会话中点击消息卡⽚后返回⼩程序,可以从bindcontact 回调中获得具体信息,具体说明 |
| share | 触发⽤⼾转发,使⽤前建议先阅读使⽤指引 |
| getPhoneNumber | 获取⽤⼾⼿机号,可以从bindgetphonenumber回调中获取到⽤⼾信息,具体说明 |
| getUserInfo | 获取⽤⼾信息,可以从bindgetuserinfo回调中获取到⽤⼾信息 |
| launchApp | 打开APP,可以通过app-parameter属性设定向APP传的参数具体说明 |
| openSetting | 打开授权设置⻚ |
| feedback | 打开“意⻅反馈”⻚⾯,⽤⼾可提交反馈内容并上传⽇志,开发者可以登录⼩程序管理后台后进⼊左侧菜单“客服反馈”⻚⾯获取到反馈内容 |
open-type 的 contact的实现流程
-
将⼩程序 的
appid
由测试号改为 ⾃⼰的appid
-
登录微信⼩程序官⽹,添加 客服 – 微信
-
为了⽅便演⽰,⾃⼰准备了两个账号
-
普通⽤⼾ A
-
客服-微信 B
-
就是⼲!
10.8. icon
| 属性 | 类型 | 默认值 | 必填 | 说明 |
| — | — | — | — | — |
| type | string | | 是 | icon的类型,有效值:success, success_no_circle,info, warn, waiting, cancel, download, search,clear |
| size | number/string | 23 | 否 | icon的⼤⼩ |
| color | string | | 否 | icon的颜⾊,同css的color |
代码
Page({
data: {
iconSize: [20, 30, 40, 50, 60, 70],
iconType: [
‘success’, ‘success_no_circle’, ‘info’, ‘warn’, ‘waiting’, ‘cancel’,
‘download’, ‘search’, ‘clear’
],
iconColor: [
‘red’, ‘orange’, ‘yellow’, ‘green’, ‘rgb(0,255,255)’, ‘blue’, ‘purple’
],
}
})
10.9 radio
可以通过 color属性来修改颜色
需要搭配 radio-group ⼀起使⽤
10.10 checkbox
可以通过 color属性来修改颜色
需要搭配 checkbox-group ⼀起使⽤
11. 自定义组件
=====================================================================================================================================================
类似vue或者react中的自定义组件
⼩程序允许我们使⽤⾃定义组件的⽅式来构建⻚⾯。
类似于页面,一个自定义组件由 json
wxml
wxss
``js 4个文件组成
可以在微信开发者⼯具中快速创建组件的⽂件结构
在⽂件夹内 components/myHeader
,创建组件 名为 myHeader
11.1.1. 声明组件
⾸先需要在组件的 json ⽂件中进⾏⾃定义组件声明
myHeader.json
{
“component”: true
}
11.1.2. 编辑组件
同时,还要在组件的 wxml
⽂件中编写组件模板,在 wxss
⽂件中加⼊组件样式
slot
表⽰插槽,类似vue中的slotmyHeader.wxml
{{innerText}}
在组件的 wwxxssss ⽂件中编写样式
注意:在组件wxss中不应使用ID选择器、属性选择器和标签名选择器。
myHeader.wxss
/* 这里的样式只应用于这个自定义组件 */
.inner {
color: red;
}
11.1.3. 注册组件
在组件的 js
⽂件中,需要使⽤ component()
来注册组件,并提供组件的属性定义、内部数据和⾃定义⽅法
myHeader.js
Component({
properties: {
// 这里定义了innerText属性,属性值可以在组件使用时指定
innerText: {
// 期望要的数据是 string类型
type: String,
value: ‘default value’,
}
},
data: {
// 这里是一些组件内部数据
someData: {}
},
methods: {
// 这里是一个自定义方法
customMethod: function(){}
}
})
⾸先要在⻚⾯的 json
⽂件中进⾏引⽤声明。还要提供对应的组件名和组件路径
{
// 引用声明
“usingComponents”: {
// 要使用的组件的名称 // 组件的路径
“my-header”:“/components/myHeader/myHeader”
}
}
11.3. ⻚⾯中使⽤⾃定义组件
用来替代slot的
component
构造器可⽤于定义组件,调⽤component
构造器时可以指定组件的属性、数据、⽅法等。
| 定义段 | 类型 | 是否必填 | 描述 |
| — | — | — | — |
| properties | Object Map | 否 | 组件的对外属性,是属性名到属性设置的映射表,参⻅下⽂ |
| data | Object | 否 | 组件的内部数据,和 properties
⼀同⽤于组件的模板渲染 |
| observers | Object | 否 | 组件数据字段监听器,⽤于监听 properties 和 data 的变化,参⻅ 数据监听器 |
| methods | Object | 否 | 组件的⽅法,包括事件响应函数和任意的⾃定义⽅法,关于事件响应函数的使⽤,参⻅ 组件事件 |
| created | Function | 否 | 组件⽣命周期函数,在组件实例刚刚被创建时执⾏,注意此时不能调⽤ sseettDDaattaa ,参⻅ 组件⽣命周期 |
| attached | Function | 否 | 组件⽣命周期函数,在组件实例进⼊⻚⾯节点树时执⾏,参⻅ 组件⽣命周期 |
| ready | Function | 否 | 组件⽣命周期函数,在组件布局完成后执⾏,参⻅ 组件⽣命周期 |
| moved | Function | 否 | 组件⽣命周期函数,在组件实例被移动到节点树另⼀个位置时执⾏,参⻅ 组件⽣命周期 |
| detached | Function | 否 | 组件⽣命周期函数,在组件实例被从⻚⾯节点树移除时执⾏,参⻅ 组件⽣命周期 |
-
⽗组件通过属性的⽅式给⼦组件传递参数
-
⼦组件通过事件的⽅式向⽗组件传递参数
11.6.1. 过程
-
⽗组件 把数据
{{tabs}}
传递到 ⼦组件的tabItems
属性中 -
⽗组件 监听
onMyTab
事件 -
⼦组件 触发
bindmytap
中的mytap
事件
①. ⾃定义组件触发事件时,需要使⽤ triggerEvent
⽅法,指定事件名、detail
对象
- ⽗ -> ⼦ 动态传值
this.selectComponent("#tabs")
父组件代码
// page.wxml
内容-这里可以放插槽
// page.js
data: {
tabs:[
{name:“体验问题”},
{name:“商品、商家投诉”}
]
},
onMyTab(e){
console.log(e.detail);
},
子组件代码
// com.wxml
{{item.name}}
// com.js
Component({
properties: {
tabItems:{
type:Array,
value:[]
}
},
/**
- 组件的初始数据
*/
data: {
},
/**
- 组件的方法列表
*/
methods: {
handleItemActive(e){
this.triggerEvent(‘mytap’,‘haha’);
}
}
})
-
标签名 是 中划线的⽅式
-
属性的⽅式 也是要中划线的⽅式
-
其他情况可以使⽤驼峰命名
①. 组件的⽂件名如myHeader.js
的等
②. 组件内的要接收的属性名 如innerText
=======================================================================
分为应⽤⽣命周期和⻚⾯⽣命周期
关于小程序前后台的定义和小程序的运行机制,请参考运行机制章节。
12.1. 应⽤⽣命周期
| 属性 | 类型 | 默认值 | 必填 | 说明 |
| — | — | — | — | — |
| onLaunch | function | | 否 | 监听⼩程序初始化。 |
| onShow | function | | 否 | 监听⼩程序启动或切前台。 |
| onHide | function | | 否 | 监听⼩程序切后台。 |
| onError | function | | 否 | 错误监听函数。 |
| onPageNotFound | function | | 否 | ⻚⾯不存在监听函数。 |
-
onLaunch:应用第一次启动的时候,就会执行。可用于获取用户的个人信息等。
-
onShow:应用被用户看到的时候调用,对应用的数据或者界面效果重置
-
onHide:应用被隐藏时候调用,可暂停或清除定时器
-
onError:应用的代码发生了报错的时候会触发,再应用发生代码报错的时候,手机用户错误信息,通过异步请求,将错误信息发送到后台。
-
onPageNotFound:页面找不到就会触发,页面第一次启动的时候,如果找不到第一个入口页面,才会触发。如果页面不存在了,通过js的方式重新跳转页面,重新跳转到备用首页。
12.2. 页面生命周期
| 属性 | 类型 | 说明 |
| — | — | — |
| data | Object | ⻚⾯的初始数据 |
| onLoad | function | ⽣命周期回调—监听⻚⾯加载 |
| onShow | function | ⽣命周期回调—监听⻚⾯显⽰ |
| onReady | function | ⽣命周期回调—监听⻚⾯初次渲染完成 |
| onHide | function | ⽣命周期回调—监听⻚⾯隐藏 |
| onUnload | function | ⽣命周期回调—监听⻚⾯卸载 |
| onPullDownRefresh | function | 监听⽤⼾下拉动作 |
| onReachBottom | function | ⻚⾯上拉触底事件的处理函数 |
| onShareAppMessage | function | ⽤⼾点击右上⻆转发 |
| onPageScroll | function | ⻚⾯滚动触发事件的处理函数 |
| onResize | function | ⻚⾯尺⼨改变时触发,详⻅ 响应显⽰区域变化 |
| onTabItemTap | function | 当前是 tab ⻚时,点击 tab 时触发 |
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
说明 |
| — | — | — |
| data | Object | ⻚⾯的初始数据 |
| onLoad | function | ⽣命周期回调—监听⻚⾯加载 |
| onShow | function | ⽣命周期回调—监听⻚⾯显⽰ |
| onReady | function | ⽣命周期回调—监听⻚⾯初次渲染完成 |
| onHide | function | ⽣命周期回调—监听⻚⾯隐藏 |
| onUnload | function | ⽣命周期回调—监听⻚⾯卸载 |
| onPullDownRefresh | function | 监听⽤⼾下拉动作 |
| onReachBottom | function | ⻚⾯上拉触底事件的处理函数 |
| onShareAppMessage | function | ⽤⼾点击右上⻆转发 |
| onPageScroll | function | ⻚⾯滚动触发事件的处理函数 |
| onResize | function | ⻚⾯尺⼨改变时触发,详⻅ 响应显⽰区域变化 |
| onTabItemTap | function | 当前是 tab ⻚时,点击 tab 时触发 |
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-qLZ5YtMB-1715237546264)]
[外链图片转存中…(img-OlA8A50Z-1715237546265)]
[外链图片转存中…(img-51PeFWu9-1715237546265)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!