刚入职一家公司,主要负责的是小程序,之前没有做过小程序,现在开始学习,在此记录一些笔记,方便自己学习总结,此文仅做自己参考,不要太较真啊!。
补充:
App(Object object)
App(options)
方法注册实例。然后在程序中可以 使用 getApp()
方法获取实例。Page(Object object)
此方法用于注册小程序中的一个页面。接受一个 Object 类型参数,其指定页面的初始数据、生命周期回调、事件处理函数等。
Component(Object object)
此方法用于创建自定义组件,接受一个Object类型的参数。
Object object:
properties :组件的对属性,
data :组件的内部数据,和 properties 一同用于组件的模板渲染
observers:组件数据字段监听器,用于监听 prop 和 data的变化。相当于vue中的 watch。
methods:组件的方法
behaviors:类似于mixins和traits
created:创建时执行
attached:组件实例进入页面节点树时执行
ready :在组件布局完成后执行。
普通绑定:使用 双大括号 {{}} 将变量包起来。
内容:
<view>{{ msg }}view>
组件属性(需要在双引号之内)
<view id="item-{{id}}">view>
Page({
data:{
id:0
}
})
控制属性(需要在双引号之内)
<view wx:if="contition">view>
Page({
data:{
condition: true
}
})
在组件上使用 wx:for
控制属性绑定一个数组,即可使用数组中各项的数据重复渲染该组件。默认数组的当前项的下标变量名默认为 index
,数组当前项的变量名默认为 item
<view wx:for="{{array}}">
{{index}}: {{item.msg}}
view>
Page({
data:{
array:[
{msg:'foo'},
{msg:'bar'}
]
}
})
wx:for-item
可以指定数组当前元素的变量名wx:for-index
可以指定数组当前下标的变量名:<view wx:for="{{array}}" wx:for-index="id" wx:for-item="itemName">
{{idx}}: {{itemName.msg}}
view>
wx:if
在框架中,使用 wx:if="" 来判断是否需要渲染该代码块:
<view wx:if="{{condition}}">view>
也可以用 wx:elif
和 wx:else
来添加 else 块:
<view wx:if="{{llength > 5}}">1view>
<view wx:elis="{{llength >2 }}">2view>
<view wx:else>3view>
block wx:if
因为 wx:if 是一个控制属性,需要将它添加到一个标签上。如果要一次性判断多个组件标签,可以使用一个
标签将多个组件包包起来,并在上边使用 wx:if 控制属性。
<block wx:if="{{true}}">
<view> view1 view>
<view> view2 view>
block>
wx:if VS hidden
wx:if:元素是真实的创建销毁
hidden:只是简单控制 元素的显示和隐藏。
wxml 提供模板(template),可以在模板中定义代码片段,然后在不同的地方调用
定义模板
使用 name 属性,作为模板的名字。然后在 内定义代码片段,如:
<template name="msgItem">
<view>
<text>{{msg}}text>
view>
template>
使用模板
使用 is 属性,声明需要使用的模板,然后将模板所需要的 data 传入,如:
<template is="msgItem" data="{{...item}}" />
Page({
data:{
item:{
index:0,
msg:'测试消息'
}
}
})
is 属性可以使用 Mustache 语法,来动态决定具体要渲染哪个模板:
<template name="odd">
<view>oddview>
template>
<template name="even">
<view>evenview>
template>
<block wx:for="{{[1,2,3,4]}}">
<template is="{{item % 2 == 0 ? 'even' : 'odd'}}" />
block>
wxml 提供两种文件引用方式 import 和 include。
import 可以在该文件中使用目标文件定义的 template,如:item.wxml中定义了一个叫 item 的 template:
<template name="item">
<text>{{text}}text>
template>
在 index.wxml中引用了 item.wxml,就可以使用 item 模板:
<import src="item.wxml" />
<template is="item" data="{{{text:'forbar'}}}" />
import有作用域,不能传递。如:C import B, B import A,C只能使用B中定义的template,不能使用 A中定义的。
include可以将目标文件除了外的整个代码引入,相当于拷贝到 include的位置。
<include src="header.wxml" />
<view>bodyview>
<include src="footer.wxml" />
<view> header view>
<view> footer view>
wxs 代码可以编写在 wxml 文件中的 标签内,或以 .wxs 为后缀名的文件内。
每一个 .wxs 文件和 标签都是一个单独的模块。
每个模块都有自己独立的作用域。即在一个模块里面定义的变量与函数,默认为私有的,对其他模块不可见。
一个模块要想对外暴露其内部的私有变量与函数,只能通过 module.exports 实现。
// /pages/comm.wxs
var foo = "'hellow world' from comm.wxs"
var bar = function(d){
return d;
}
module.exports = {
foo: foo,
bar: bar
}