微信小程序--从入门到精通(自己学习总结)

需要原文下载:请到下载区下载源文件

 

  1. project.config.json保存微信开发者工具的配置信息,对个性化设置比如界面颜色进行保存,当我们重新安装工具,只需要将代码导入进去,微信开发工具就会自动生成个性化设置。
  2. app.js帮我们的微信小程序注册一个微信小程序应用
  3. app.json文件帮我们的微信小程序进行一个全局配置,包括一些网络请求的超时时间,窗口的表现形式,各个页面注册的路径
  4. app.wxss设置微信小程序全局的样式
  5. Pages文件夹放置微信小程序所有的小程序页面,每个小程序页面最多是有四个文件组成,分别是.js  .json  .wxml  .wxss

.js 文件帮我们去处理微信小程序里面的逻辑和数据交互

.json文件帮我们配置微信小程序页面的一个配置信息

.wxml文件是用来帮我们展示我们小程序页面的元素和内容

.wxss文件帮我们设置小程序页面元素的样式

  1. util.js文件主要是存放一些工具函数,起到代码复用的目的

 

微信小程序的开发框架

基本构成:       wxml 构件页面的结构  <标签名 属性名=“属性值”……> 标签名>  

注意:1.标签严格闭合

       2.属性大小写敏感

语言特性:1.数据绑定

              实现数据的更新

              文本对象绑定方法

              .js文件中定义data下的文本 wxml文件中用text标签夹住data下的文本名  格式为{{message}}

 

页面居中

 

2.属性绑定

 

 

3.运算符绑定 字符串 扩展运算符

 

 

4.标签组件属性

1id属性  保证页面唯一性

2class 属性  在对应的wxss中定义的样式类

3style属性  可以动态设置的内联样式

4hidden属性 所有组件默认显示

5data-* 组件上触发的事件时,会发送给事件处理函数

6bind*/catch* 绑定组件的默认事件

 

              2.列表渲染

 

 

wx:for属性传入数组,index变量当前元素在数组中的下标  item变量指代当前元素

wxfor-item指定想要的变量名    wx:key属性指定项目列表的唯一标识符 静态列表无需定义该属性

 

              3.条件渲染

 

 

 

              4.模板引用

 

import组件与include组件

 

 

          Wxss

尺寸单位:rpx响应式的像素

设备像素   Css像素   PPI/DPI 每英寸像素    DPR适应屏幕尺寸

外联样式导入

@import导入

内联样式

Style

选择器

1.class

2#id

3element

4element,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

 

 

 

  1. 设计模式
    1. SPA(页面设计思想)

单页Web应用 只有一张Web页面的应用

所谓的单页应用程序,实际上是指,用户通过浏览器访问一个网站的时候,网站中的内容切换,不会产生新的页面

在开发时,用户可访问的页面只有一个(主体页面),开发时为了适应开发者习惯,引入了一种新的开发模式---页面模板

    1. MVVM框架

模型视图视图模型

实际上省略开发时对于页面DOM的操作,但是可以实现页面数据变化 内存数据页变化 内层数据变化  页面数据页变换的功能

  1. 微信小程序构成
    1. .js 文件帮我们去处理微信小程序里面的逻辑和数据交互
    2. .json文件帮我们配置微信小程序页面的一个配置信息
    3. .wxml文件是用来帮我们展示我们小程序页面的元素和内容
    4. .wxss文件帮我们设置小程序页面元素的样式

Flex布局将成为未来布局的首选方案。本文介绍Flex布局的语法。

以下内容主要参考了下面两篇文章:A Complete Guide to Flexbox  A Visual Guide to CSS3 Flexbox Properties

一、Flex布局是什么?

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

任何一个容器都可以指定为Flex布局。

.box{

  display: flex;

}

行内元素也可以使用Flex布局。

.box{

  display: inline-flex;

}

Webkit内核的浏览器,必须加上-webkit前缀。

.box{

  display: -webkit-flex; /* Safari */

  display: flex;

}

注意,设为Flex布局以后,子元素的floatclearvertical-align属性将失效。

二、基本概念

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

微信小程序--从入门到精通(自己学习总结)_第1张图片

容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end

项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size

三、容器的属性

以下6个属性设置在容器上。

  • flex-direction
  • flex-wrap
  • flex-flow
  • justify-content
  • align-items
  • align-content

3.1 flex-direction属性

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

.box {

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

}

微信小程序--从入门到精通(自己学习总结)_第2张图片

它可能有4个值。

  • row(默认值):主轴为水平方向,起点在左端。
  • row-reverse:主轴为水平方向,起点在右端。
  • column:主轴为垂直方向,起点在上沿。
  • column-reverse:主轴为垂直方向,起点在下沿。

3.2 flex-wrap属性

默认情况下,项目都排在一条线(又称轴线)上。flex-wrap属性定义,如果一条轴线排不下,如何换行。

微信小程序--从入门到精通(自己学习总结)_第3张图片

.box{

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

}

它可能取三个值。

1nowrap(默认):不换行。

微信小程序--从入门到精通(自己学习总结)_第4张图片

2wrap:换行,第一行在上方。

微信小程序--从入门到精通(自己学习总结)_第5张图片

3wrap-reverse:换行,第一行在下方。

微信小程序--从入门到精通(自己学习总结)_第6张图片

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;

}

微信小程序--从入门到精通(自己学习总结)_第7张图片

它可能取5个值,具体对齐方式与轴的方向有关。下面假设主轴为从左到右。

  • flex-start(默认值):左对齐
  • flex-end:右对齐
  • center 居中
  • space-between:两端对齐,项目之间的间隔都相等。
  • space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。

3.5 align-items属性

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

.box {

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

}

微信小程序--从入门到精通(自己学习总结)_第8张图片

它可能取5个值。具体的对齐方式与交叉轴的方向有关,下面假设交叉轴从上到下。

  • flex-start:交叉轴的起点对齐。
  • flex-end:交叉轴的终点对齐。
  • center:交叉轴的中点对齐。
  • baseline: 项目的第一行文字的基线对齐。
  • stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。

3.6 align-content属性

align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。

.box {

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

}

微信小程序--从入门到精通(自己学习总结)_第9张图片

该属性可能取6个值。

  • flex-start:与交叉轴的起点对齐。
  • flex-end:与交叉轴的终点对齐。
  • center:与交叉轴的中点对齐。
  • space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。
  • space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
  • stretch(默认值):轴线占满整个交叉轴。

四、项目的属性

以下6个属性设置在项目上。

  • order
  • flex-grow
  • flex-shrink
  • flex-basis
  • flex
  • align-self

4.1 order属性

order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0

.item {

  order: ;

}

微信小程序--从入门到精通(自己学习总结)_第10张图片

4.2 flex-grow属性

flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。

.item {

  flex-grow: ; /* default 0 */

}

微信小程序--从入门到精通(自己学习总结)_第11张图片

如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。

4.3 flex-shrink属性

flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。

.item {

  flex-shrink: ; /* default 1 */

}

微信小程序--从入门到精通(自己学习总结)_第12张图片

如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。

负值对该属性无效。

4.4 flex-basis属性

flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。

.item {

  flex-basis: | auto; /* default auto */

}

它可以设为跟widthheight属性一样的值(比如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;

}

微信小程序--从入门到精通(自己学习总结)_第13张图片

该属性可能取6个值,除了auto,其他都与align-items属性完全一致。

 

 

微信小程序开发中常见问题及解决方法

1出现“脚本错误或者未正确调用Page()”的错误提示。

https://img-blog.csdn.net/20170420100510657
 

解决方法:出现这个错误的原因通常是因为index.js (即对应页面的js文件)里,没有调用Page方法。即使js文件里没有任何代码,也需要在js里添加一个空的 Page({ })。注意Page的P要大写。

2出现“Expecting ‘String,‘Number,‘NULL,‘True....’”’’的错误提示。

https://img-blog.csdn.net/20170420100546767
 

解决方法:这个错误的原因在于index.json( 对应页面的json文件 )里没有加入{ }。即使json文件里没有任何内容,也需要加入一个{ },作为默认代码。此外,json文件不允许出现注释代码,如果有注释的代码,同样会报这个错误。

3:出现警告信息“ Now you can provide attr "wx:key" for a "wx:for" to improve performance”的问题。
 

https://img-blog.csdn.net/20170420100600345
 

解决方法:首先,这只是一个警告信息,不是错误信息,不理他不会对程序运行有任何的影响。官方文档原话:如不提供 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 阿里巴巴矢量图标库

 

你可能感兴趣的:(微信小程序)