需要原文下载:请到下载区下载源文件
.js 文件帮我们去处理微信小程序里面的逻辑和数据交互
.json文件帮我们配置微信小程序页面的一个配置信息
.wxml文件是用来帮我们展示我们小程序页面的元素和内容
.wxss文件帮我们设置小程序页面元素的样式
微信小程序的开发框架
基本构成: wxml 构件页面的结构 <标签名 属性名=“属性值”……> 标签名>
注意:1.标签严格闭合
2.属性大小写敏感
语言特性:1.数据绑定
实现数据的更新
① 文本对象绑定方法
在.js文件中定义data下的文本 在wxml文件中用text标签夹住data下的文本名 格式为
页面居中
2.属性绑定
3.运算符绑定 字符串 扩展运算符
4.标签组件属性
(1)id属性 保证页面唯一性
(2)class 属性 在对应的wxss中定义的样式类
(3)style属性 可以动态设置的内联样式
(4)hidden属性 所有组件默认显示
(5)data-* 组件上触发的事件时,会发送给事件处理函数
(6)bind*/catch* 绑定组件的默认事件
2.列表渲染
wx:for属性传入数组,index变量当前元素在数组中的下标 item变量指代当前元素
wx:for-item指定想要的变量名 wx:key属性指定项目列表的唯一标识符 静态列表无需定义该属性
3.条件渲染
4.模板引用
import组件与include组件
Wxss
尺寸单位:rpx响应式的像素
设备像素 Css像素 PPI/DPI 每英寸像素 DPR适应屏幕尺寸
外联样式导入
@import导入
内联样式
Style
选择器
(1).class
(2)#id
(3)element
(4)element,element
(5)::after
(6)::before
wxs:对wxml能力增强的脚本语言,可以把请求到的数据进行计算处理,帮助wxml快速构件出页面结构
模块 变量对外不公开
变量 与js一样
注释
//单行注释
/**/多行注释
运算符
语句
数据类型
Number
String
Boolean
Object
Array
Function
Date
Regexp 正则类型
基础类库
Console Math JSON Number Date Global
Js
小程序的生命周期
onLaunch
onShow
onHide
onError
页面的生命周期
onLoad
onShow
onReady
onHide
onUnload
单页Web应用 只有一张Web页面的应用
所谓的单页应用程序,实际上是指,用户通过浏览器访问一个网站的时候,网站中的内容切换,不会产生新的页面
在开发时,用户可访问的页面只有一个(主体页面),开发时为了适应开发者习惯,引入了一种新的开发模式---页面模板
模型视图视图模型
实际上省略开发时对于页面DOM的操作,但是可以实现页面数据变化 内存数据页变化 内层数据变化 页面数据页变换的功能
Flex布局将成为未来布局的首选方案。本文介绍Flex布局的语法。
以下内容主要参考了下面两篇文章:A Complete Guide to Flexbox 和 A Visual Guide to CSS3 Flexbox Properties。
一、Flex布局是什么?
Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。
任何一个容器都可以指定为Flex布局。
.box{
display: flex;
}
行内元素也可以使用Flex布局。
.box{
display: inline-flex;
}
Webkit内核的浏览器,必须加上-webkit前缀。
.box{
display: -webkit-flex; /* Safari */
display: flex;
}
注意,设为Flex布局以后,子元素的float、clear和vertical-align属性将失效。
二、基本概念
采用Flex布局的元素,称为Flex容器(flex container),简称”容器”。它的所有子元素自动成为容器成员,称为Flex项目(flex item),简称”项目”。
容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end。
项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。
三、容器的属性
以下6个属性设置在容器上。
3.1 flex-direction属性
flex-direction属性决定主轴的方向(即项目的排列方向)。
.box {
flex-direction: row | row-reverse | column | column-reverse;
}
它可能有4个值。
3.2 flex-wrap属性
默认情况下,项目都排在一条线(又称”轴线”)上。flex-wrap属性定义,如果一条轴线排不下,如何换行。
.box{
flex-wrap: nowrap | wrap | wrap-reverse;
}
它可能取三个值。
(1)nowrap(默认):不换行。
(2)wrap:换行,第一行在上方。
(3)wrap-reverse:换行,第一行在下方。
3.3 flex-flow
flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap。
.box {
flex-flow: <flex-direction> <flex-wrap>;
}
3.4 justify-content属性
justify-content属性定义了项目在主轴上的对齐方式。
.box {
justify-content: flex-start | flex-end | center | space-between | space-around;
}
它可能取5个值,具体对齐方式与轴的方向有关。下面假设主轴为从左到右。
3.5 align-items属性
align-items属性定义项目在交叉轴上如何对齐。
.box {
align-items: flex-start | flex-end | center | baseline | stretch;
}
它可能取5个值。具体的对齐方式与交叉轴的方向有关,下面假设交叉轴从上到下。
3.6 align-content属性
align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。
.box {
align-content: flex-start | flex-end | center | space-between | space-around | stretch;
}
该属性可能取6个值。
四、项目的属性
以下6个属性设置在项目上。
4.1 order属性
order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。
.item {
order:
}
4.2 flex-grow属性
flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。
.item {
flex-grow:
}
如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。
4.3 flex-shrink属性
flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。
.item {
flex-shrink:
}
如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。
负值对该属性无效。
4.4 flex-basis属性
flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。
.item {
flex-basis:
}
它可以设为跟width或height属性一样的值(比如350px),则项目将占据固定空间。
4.5 flex属性
flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。
.item {
flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
}
该属性有两个快捷值:auto (1 1 auto) 和 none (0 0 auto)。
建议优先使用这个属性,而不是单独写三个分离的属性,因为浏览器会推算相关值。
4.6 align-self属性
align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。
.item {
align-self: auto | flex-start | flex-end | center | baseline | stretch;
}
该属性可能取6个值,除了auto,其他都与align-items属性完全一致。
1:出现“脚本错误或者未正确调用Page()”的错误提示。
解决方法:出现这个错误的原因通常是因为index.js (即对应页面的js文件)里,没有调用Page方法。即使js文件里没有任何代码,也需要在js里添加一个空的 Page({ })。注意Page的P要大写。
2:出现“Expecting ‘String,‘Number,‘NULL,‘True....’”’’的错误提示。
解决方法:这个错误的原因在于index.json( 对应页面的json文件 )里没有加入{ }。即使json文件里没有任何内容,也需要加入一个{ },作为默认代码。此外,json文件不允许出现注释代码,如果有注释的代码,同样会报这个错误。
3:出现警告信息“ Now you can provide attr "wx:key" for a "wx:for" to improve performance”的问题。
解决方法:首先,这只是一个警告信息,不是错误信息,不理他不会对程序运行有任何的影响。官方文档原话:如不提供 wx:key,会报一个 warning, 如果明确知道该列表是静态,或者不必关注其顺序,可以选择忽略。如果你一定想去掉这个警告,可以在wx:for的组件属性里增加一个 wx:key="unique",unique请替换成数据绑定列表里的任意一个字段的字段名,比如文章列表数据中的字段“postId”,即wx:key="postId"。不建议使用wx:key="*this"。其实wx:key用来对列表渲染的数据指定一个"主键”,以加快列表渲染的速度。
4: 出现“ Failed to load image http://xxx xxxxx: the server responded with a status of 404 (HTTP/1.1 404 Not Found) From server 127.0.0.1”
解决方法:出现这种错误,通常是由于图片的路径不对而引起的。若是外网的图片,就是你外网的图片url错了(因为它没有相对和绝对的路径概念)。现在只说说本地的图片路径问题。有这么一种情况,如果图片路径被写在一个A.js文件里,而B.js文件引用了A.js,此时图片的路径必须是相对于B.js的相对路径。建议最好在公共的js文件里使用绝对路径。
5:小程序如何快速创建页面文件?
解决方法:微信小程序官方文档并没有给出一次创建四种类型页面文件的方法。但在实际开发过程中有人发现了快速创建四个文件的方法。步骤:在app.json文件下pages数组里,添加一个页面的路径,如果这个路径指向的是一个不存在的文件,那么MINA框架会自动创建这个页面的四个文件。我们可以试一下,在app.json文件的pages数组里添加一项 “pages/demo/demo”,然后保存项目,奇迹发生了!(哇!)用这种方式创建文件不仅快捷,而且页面文件会自动添加一些默认代码,防止出错。
需要图标可百度搜索:iconfont 阿里巴巴矢量图标库