小程序开发框架的目标是通过尽可能简单、高效的方式让开发者可以在微信中开发具有原生 APP 体验的服务。
整个小程序框架系统分为两部分:逻辑层(App Service)和 视图层(View)。
小程序提供了自己的视图层描述语言 WXML
和 WXSS
,以及基于 JavaScript
的逻辑层框架,并在视图层与逻辑层间提供了数据传输和事件系统,让开发者能够专注于数据与逻辑
####3. 列表渲染
第一种方式 : 单独创建一个.wxs文件
1. 创建common.wxs文件
2. 创建一个方法 function my_slice(str) {
return str.slice(0,1)
}
3. module.exports.my_slice=my_slice
4. 引入 <wxs src='./common.wxs' module='tool'>
5. 使用 : <view>{{ tool.my_slice(str) }}</view>
第二种方式 : 在 wxml内 使用 wxs 标签处理
1. 创建一个 wxs 标签 <wxs></wxs>
2. 创建方法 function my_case(str) { return str.toUpperCase() }
3. 导出 module.exports.my_case = my_case
4. 使用模块接收 <wxs module='tool1'></wxs>
5. 使用 tool1.my_case(str)
<button bindtap="click1">按钮1</button>
Page({
click1() {
console.log(111)
}
})
// 传递
<button bindtap="click2" data-msg="abc" data-index="123">按钮2</button>
// 接收
click2(e){
e.currentTarget.dataset
},
<input bindinput="handleInput" />
Page({
// 绑定的事件
handleInput: function(e) {
e.detail.value
}
})
setData1
[setData2](https://developers.weixin.qq.com/miniprogram/dev/reference/api/Page.html#Page.prototype.setData(Object data, Function callback))
获取数据 : this.data.name
修改数据 :
setData
函数用于将数据从逻辑层发送到视图层(异步),同时改变对应的 this.data
的值(同步)。console.log(this.data.name) // zs
this.setData({
name :'ls'
})
console.log(this.data.name) // ls
WXSS链接
WXSS(WeiXin Style Sheets
)是一套样式语言,用于描述 WXML
的组件样式。
与 CSS 相比,WXSS 扩展的特性有:
rpx
rpx
(responsive pixel): 可以根据屏幕宽度进行自适应。规定屏幕宽为750rpx
。如在 iPhone6
上,屏幕宽度为375px
,共有750个物理像素,则750rpx = 375px = 750物理像素
,1rpx = 0.5px = 1物理像素
。
官网建议:开发微信小程序时设计师可以用 iPhone6 作为视觉稿的标准。
注意: 在较小的屏幕上不可避免的会有一些毛刺,请在开发时尽量避免这种情况。
@import
语句可以导入外联样式表,@import
后跟需要导入的外联样式表的相对路径,用;
表示语句结束。/* app.wxss */
@import 'common.wxss';
.middle {
color : 'red'
}
<view style="color : red;">啊哈</view>
目前支持的选择器有:
选择器 | 样例 | 样例描述 |
---|---|---|
.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 组件前边插入内容 |
*
page,view,input,text {
margin: 0;
padding: 0;
box-sizing: border-box;
}
原生小程序不支持less
,我们可以借助 vscode 使用 less
编辑器是vscode
安装 VSCode插件 : easy less
在vs code的设置中加入如下,配置
"less.compile": {
"outExt": ".wxss"
}
新建 less
文件,如 index.less
, 保存即可, 自动机会编程出样式到对应的index.wxss
里面
要么只用less ,要么只用 wxss 不要混着用,后果很严重, 因为 wxss的东西被会覆盖掉
less => wxss + wxml
类似 vue 和 react 中的自定义组件
小程序允许我们使用自定义组件的方式来构建页面。
components/
组件
文件夹 Test/
新建 Component
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FL1bY39c-1595140559959)(D:\黑马课程\备课\05-小程序\整理最新笔记+代码★\md-imgs\组件1.png)]
json
文件中进行自定义组件声明// Test.json
{
"component": true // 声明组件
}
Component({
/**
* 1. 组件的属性列表 - 外界传进来的数据
*/
properties: {
name : {
type : String,
value :'初始值'
}
},
/**
* 2. 组件的初始数据 - 组件自己的私有数据
*/
data: {
},
/**
* 3. 组件的方法列表
*/
methods: {
}
})
json
文件中进行引用声明。还要提供对应的组件名和组件路径// index.wxml 想使用组件的话, 就要在 index.json 里 先引入
{
"usingComponents": {
// 要使用的组件的名称 // 组件的路径
"Test":"/components/Test/Test"
}
}
####4. 使用组件
<Test>Test>
法列表
*/
methods: {
}
})
#### 3. 引入组件
- 首先要在页面的 `json` 文件中进行引用声明。还要提供对应的组件名和组件路径
```js
// index.wxml 想使用组件的话, 就要在 index.json 里 先引入
{
"usingComponents": {
// 要使用的组件的名称 // 组件的路径
"Test":"/components/Test/Test"
}
}
####4. 使用组件
<Test>Test>