关于小程序的学习(一)

南笙酒味 提交于 2020-03-07 05:04:13

为什么要持续学习呢?

大学之道,在明明德,在亲民,在止于至善。知止而后有定,定而后能静,静而后能安,安而后能虑,虑而后能得。物有本末,事有终始,知所先后,则近道矣。

男人的极大幸运在于,他,不论在成年还是在小时候,必须踏上一条极为艰苦的道路,不过这是一条最可靠的道路;女人的不幸则在于被几乎不可抗拒的诱惑包围着;她不被要求奋发向上,只被鼓励滑下去到达极乐。当她发觉自己被海市蜃楼愚弄时,已经为时太晚,她的力量在失败的冒险中已被耗尽。

关于小程序配置

app.json 文件用来对微信小程序进行全局配置,决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab [底部或顶部菜单]等。

app.json中不能添加任何注释,key和value必须用双引号引起来,否则会报错。

pages
接受一个数组,每一项都是字符串,来指定小程序由哪些页面组成。每一项代表对应页面的【**路径+目录名+文件名(不包含后缀名)】**信息,数组的第一项代表小程序的初始页面(首页)。小程序中新增/减少页面,都需要对 pages 数组进行修改。

注:数组的第一项为小程序初始页面

概述

从事过网页编程的人知道,网页编程采用的是 HTML + CSS + JS 这样的组合,其中 HTML 是用来描述当前这个页面的结构,CSS 用来描述页面的样子,JS 通常是用来处理这个页面和用户的交互。

同样道理,在小程序中也有同样的角色,其中 WXML 充当的就是类似 HTML 的角色。

WXML和HTML不同点

标签名字有点不一样

多了一些 wx:if 这样的属性以及 {{ }}这样的表达式

小程序提倡把渲染和逻辑分离,简单来说就是不要再让 JS 直接操控 DOM,JS只需要负责数据的处理,然后再通过一种模板语法来进行界面结构展示。

将js文件中的数据传递到视图层中方法 (异步改变数据)

this.setData({ msg: “Hello World” })

列表渲染 for

语法:wx:for

wx:for-index可以指定数组当前下标的变量名 默认名为 index

wx:for-item 可以指定数组当前元素的变量名 默认名为 item

wx:key 可以定义也可以不定义 唯一的标识符

什么是WXSS?

WXSS 用来决定 WXML 的组件应该怎么显示。说白了就是样式

为了适应广大的前端开发者,WXSS 具有 CSS 大部分特性。同时为了更适合开发微信小程序,WXSS 对 CSS 进行了扩充以及修改。

Ø 新增了尺寸单位WXSS 在底层支持新的尺寸单位 rpx ,开发者可以免去换算的烦恼,只要交给小程序底层来换算即可,由于换算采用的浮点数运算,所以运算结果会和预期结果有一点点偏差。

Ø 提供了全局的样式和局部样式

你可以写一个 app.wxss 作为全局样式,会作用于当前小程序的所有页面,局部页面样式 page.wxss 仅对当前页面生效。

Ø 此外 WXSS 仅支持部分 CSS 选择器

尺寸单位

rpx(responsive pixel): 可以根据屏幕宽度进行自适应规定屏幕宽为750rpx。

建议: 开发微信小程序时设计师可以用 iPhone6 作为视觉稿的标准。

在日后的小程序开发中,我们的统一的单位是 rpx 不要使用 px作为单位

全局样式与局部样式

定义在 app.wxss 中的样式为全局样式,作用于每一个页面。

在 pages 的 wxss 文件中定义的样式为局部样式,只作用在对应的页面,并会覆盖 app.wxss 中相同的选择器。

样式优先级 行内样式 > page.wxss > app.wxss

样式导入

使用 @import 语句可以导入外联样式表,@import 后跟需要导入的外联样式表的相对路径,用 ; 表示语句结束。

flex是什么

2009年,w3c提出一种新的方案,flex布局,可以简便,完整,响应式地实现各种页面的布局。

Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。

任何一个容器都可以指定为Flex布局,依赖样式属性 display。
.box{

display: flex;

}

拥有此class盒子就有了flex布局功能

注:设为Flex布局以后,子元素的float、clear和vertical-align属性将失效。

基本概念:
采用Flex布局的元素,称为Flex容器(flex container),简称”容器”。它的所有子元素自动成为容器成员,称为Flex项目(flex item),简称”项目”。

容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。

容器的属性

1、flex-direction属性
flex-direction属性决定主轴的方向(即项目的排列方向)。

.box {

  flex-direction: row | row-reverse | column | column-reverse;

}

row(默认值):主轴为水平方向,起点在左端。(上)

row-reverse:主轴为水平方向,起点在右端。(下)

column:主轴为垂直方向,起点在上沿。(右)

column-reverse:主轴为垂直方向,起点在下沿。(左)

2、flex-wrap属性
flex-wrap属性定义,如果一条轴线排不下,如何换行。

.box{

  flex-wrap: nowrap | wrap | wrap-reverse;

}

3、justify-content属性
justify-content属性定义了项目在主轴上的对齐方式

.box {

  justify-content: flex-start | flex-end | center | space-between | space-around;

}

flex-start(默认值):左对齐 顶部

flex-end:右对齐 底部

center: 居中

space-between:两端对齐,项目之间的间隔都相等。

space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。

4、align-items属性
align-items属性定义项目在交叉轴上如何对齐

.box {

  align-items: flex-start | flex-end | center;

}

flex-start:交叉轴的起点对齐。

flex-end:交叉轴的终点对齐。

center:交叉轴的中点对齐。

关于事件简介

1,事件分为冒泡事件和非冒泡事件:

冒泡事件【bind】:当一个组件上的事件被触发后,该事件会向父节点传递。

非冒泡事件【catch】:当一个组件上的事件被触发后,该事件不会向父节点传递。

WXML的冒泡事件列表:公共事件

2,事件绑定

事件绑定的写法同组件的属性,以 key、value 的形式

key 以bind或catch开头,然后跟上事件的类型,如bindtap、catchtouchstart。自基础库版本 1.5.0 起,在非原生组件中,bind和catch后可以紧跟一个冒号,其含义不变,如bind:tap、catch:touchstart。

原生组件不用冒号,非原生组件可以用也可以不用,建议用

value 是一个字符串,需要在对应的 Page 中定义同名的函数。不然当触发事件的时候会报警告。

什么是组件:

框架为开发者提供了一系列基础组件,开发者可以通过组合这些基础组件进行快速开发。

Ø 组件是视图层的基本组成单元。

Ø 组件自带一些功能与微信风格的样式。

Ø 一个组件通常包括开始标签和结束标签,属性用来修饰这个组件,内容在两个标签之内。

注意:所有组件与属性都是小写,以连字符中横线【-】连接

逻辑层:
处理业务js

视图层:
渲染页面wxml,wxss

微信小程序框架:
逻辑+视图+接送

框架全局:
1,app.js:生命周期,全局数据,函数。

onshow:监听显示,进入后台,并未销毁
onlaunch: 初始化
onhide 隐藏
onerror 错误提示,脚本,API错误。
onpagenoffound:当页面不存在调用

5种基本功能
路径:“pages”
配置窗口:“windows”
标签导航:“tarbar”
网络超时”:“networktimeout
“配置debug”:“debug”

2,app.json,进行相关配置

3,app.wxss:
全局样式文件
CSS进行扩展

4,project.config.json:
个性化配置
换个机器重新安装,需要从新配置。

框架页面文件:(放在pages目录下)
必填(js,wxml);
wxs 脚本 json配置 wxss样式

注意:
APP必须在app.js注册,不能注册多个。
this可以获得app

视图组件


1,view 容器(类似div)
属性:
hover 单击态
hover-class按下去样式类
hover-start-time 按住后持续多少时间
hover-stay-time 松开后保留多长时间

2,scroll-view 可滚动(横向,纵向滚动条)
movable-view 可移动的
scroll-x 横向
scroll-y 纵向

upper-threshold ,
距离顶部/左边,触发事件
lower-threshold
距离底部/右多远

bindscroll:滚动时触发事件
bindscroll-toupper,滚动到顶部,左部触发
bindscroll-tolower ,滚动底部,右部

3,swiper滑块,页面切换。

movable-view提供两个特殊事件:
htouchmove:初次触摸横向移动
vtouchmove:初次触摸纵向移动

cover-view,
cover-image,
覆盖原生组件

icon:图标
text:文本
progress:进度条
rich-text:富文本

4,precent
show-info 进度条显示百分比
stroke-width 精度条宽度
color:进度条颜色
active:进度条从左到右动画

5,silder:滑动选择器
常用于控制声音大小,屏幕亮度等场景

6,switch:开关选择器
微信新消息提醒:
是否接收信息
是否有声音
是否震动

7,form:表单

input:单行输入框
常用事件
输入时:bindinput
聚焦时:bindfocus
离开时:bindblur

picker:滚动选择器

支持五种选择器
普通:mode=selector
多列:mode=multiSelect
时间:mode=time
日期:mode=date
省市:mode=region

导航组件:
navigate:页面链接组件

页面相关代码:
onPullDownRefresh:
下拉刷新

onShareAppMessage:
用户分享

框架以栈的形式维护所有界面
栈:
1,一种数据结构
2,只能一端插入删除操作
3,“后进先出”存储原则

小程序交互也是有栈来完成
入栈
初始化,
新页面,

出栈
重定向
tab切换
重新加载
页面返回

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!