这篇文章上次修改于 2006 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

小程序的框架系统分为两部分:视图层(View)和逻辑层(App Service).

配置

1.创建之后自动生成4种文件:①json配置文件。

​ ②js:逻辑层文件

​ ③wxml。相当于html文件

​ ④wxss,相当于css样式
2.全局配置:app.json

page(查看页面路径)、window(设置状态栏、导航栏、标题、窗口背景色)、tabBar(切换页面)、Debug(在控制台页面显示调试信息)

eg:"tabBar": {
    "color": "black",					//tab 上的文字默认颜色
    "selectedColor":"blue",				//tab 上的文字选中时的颜色
    "backgroundColor":"#fff",			//tab 的背景色
    "list":[{
	  "pagePath":"pages/index/index",      //页面路径,必须在 pages 中先定义
	  "text":"首页",					  	 //tab 上按钮文字
      "iconPath":"images/f1.png",		   //图片路径
      "selectedIconPath":"images/f1_on.png" 	//选中时的图片路径
    },{
      "pagePath": "pages/statistic/statisitic",
      "text": "练习1",
      "iconPath":"images/f3.png",
      "selectedIconPath":"images/f3_on.png"
    },{
      "pagePath": "pages/test/test",
      "text": "练习2",
      "iconPath": "images/loves.png",
      "selectedIconPath": "images/lover.png"
    }]
}

3.页面配置:json文件夹中配置会覆盖app.json中window相同的配置项


逻辑

1.APP()函数----注册下程序,接受一个Object参数,指定小程序的生命周回调等,必须在app.js中调用切只能调用一次。

Object参数:

onLauch():生命周期回调–监听小程序初始化(全局只能触发一次)

onShow:监听小程序显示,小程序启动时触发或后台进入前台显示时触发

onHide():监听小程序隐藏,小程序从前台进入时触发

onEroor:错误监听函数,页面发生脚本错误时触发

onPageNotFound:页面不存在监听函数 ,打开页面不存在时触发

2.getApp(Object):全局的 getApp() 函数可以用来获取到小程序 App 实例。

实例:var appInstance = getApp(){

​ console.log(appInstance.globaIData);

}

3.路由:在小程序中所有页面的路由全部由诳街进行管理。

路由的方式有两种:1.调用API 2.使用组件

4.文件作用域:在 JavaScript 文件中声明的变量和函数只在该文件中有效;不同的文件中可以声明相同名字的变量和函数,不会互相影响。

5.模块化:可以将一些公共的代码抽离成为一个单独的 js 文件,作为一个模块。模块只有通过 module.exports 或者 exports 才能对外暴露接口。


视图层

1.wxml:数据绑定、列表渲染、条件渲染、模板、事件、引用

①数据绑定: 、 id=“item-”

②列表渲染wx:for

eg:

<!--  for遍历九九乘法表  -->
<!--  
  1*1=1
  2*1=2 22=4 2*3=6
  3*1=3 32=6 3*3=9
 -->
 <view wx:for="{{[1,2,3,4,5,6,7,8,9]}}" wx:for-item="i">
    <view wx:for="{{[1,2,3,4,5,6,7,8,9]}}" wx:for-item="j"  style="display:inline-block;width:20%;">
      <view wx:if="{{j <= i}}">
         {{i}}{{j}}={{ij}}
      </view>
    </view>
 </view>

注意: 花括号和引号之间如果有空格,将最终被解析成为字符串

③条件渲染:wx:if

eg:

wxml:<view wx:if="{{id==1}}">第一条</view>
	 <view wx:elif="{{id > 4}}">大于4的条件</view>
	 <view wx:else="{{id > 7}}">大于7</view>
js:data: {
      id:8, 
  }
----------------------------------------------------
<!--  hidden在view中不生效,text有效  -->
<text hidden="{{true}}">这是一段文本</text>
<view hidden="{{true}}">这是一段文本</view>
----------------------------------------------------
<block wx:if="{{true}}">
  <view>这里的block标签名可以随便起</view>
  <view>相当于一个控制属性</view>
</block>

注意: block并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性。

④模板:template

wxml: <template name="obj">
        <view>第一个对象:{{a}}</view>
        <view>第二个对象:{{b}}</view>
 		<view>{{temname}}</view> 
	  </template>
	  <!-- 使用模板 -->
 	  <template is="obj" data="{{a:1, b:2,temname:name}}"></template> 
 	  <template is="obj" data="{{...obj,temname:name}}"></template> 
js:   data: {
      	obj:{
        	a: 1,
        	b: 3
        }  
  	  }

⑤事件:绑定事件: bindtap | 停止事件冒泡:catchtap

​ 事件中的事件对象:target:事件触发的源头 currentTarget:事件绑定的源头 dateset:事件源组件上由data-开头的自定义属性组成的集合

更多事件可以查看文档,这里就不一一进行说明了

⑥引用:

import:只会引用目标文件夹中的template

inclde:只会引用除template外的代码

eg:
<import src="item.wxml" />
<template is="item" data="{{name:'一颗小白菜'}}"></template>

<include src="item.wxml" />
item.whtml:
<view>我是item.wxml</view>
<template name="item">
  <text>我是item.wxml中的{{name}}</text>
</template>

2.wxss: 模块、变量、运算符、语句、数据类型、基础类库

尺寸单位:rpx eg:在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375px = 750物理像素,1rpx = 0.5px = 1物理像素。

样式导入:@import 必须放在css文件最顶部

内联样式:

选择器:.class、#id、element、element, element、::after、::before

全局样式与局部样式:定义在 app.wxss 中的样式为全局样式,作用于每一个页面。在 page 的 wxss 文件中定义的样式为局部样式,只作用在对应的页面,并会覆盖 app.wxss 中相同的选择器。


组件

1.视图容器:view、scroll-view(可滚动视图区域)、swiper(滑块视图容器)、movable-area(可移动区域)、cover-view

2.导航:navigator

3.媒体组件:audio、video、image、camera、live-player(实时音视频播放)、live-pusher(实时音频录制)

4.开放能力:open-data(用于展示微信开放的数据)、web-view(用来承载网页的容器,会自动铺满整个小程序页面)、ad(广告)、official-account(用户扫码打开小程序时,开发者可在小程序内配置公众号关注组件,方便用户快捷关注公众号,可嵌套在原生组件内)

5.地图:map 画布:canvas

小程序的框架系统分为两部分:视图层(View)和逻辑层(App Service).

配置

1.创建之后自动生成4种文件:①json配置文件。

​ ②js:逻辑层文件

​ ③wxml。相当于html文件

​ ④wxss,相当于css样式
2.全局配置:app.json

page(查看页面路径)、window(设置状态栏、导航栏、标题、窗口背景色)、tabBar(切换页面)、Debug(在控制台页面显示调试信息)

eg:"tabBar": {
    "color": "black",					//tab 上的文字默认颜色
    "selectedColor":"blue",				//tab 上的文字选中时的颜色
    "backgroundColor":"#fff",			//tab 的背景色
    "list":[{
	  "pagePath":"pages/index/index",      //页面路径,必须在 pages 中先定义
	  "text":"首页",					  	 //tab 上按钮文字
      "iconPath":"images/f1.png",		   //图片路径
      "selectedIconPath":"images/f1_on.png" 	//选中时的图片路径
    },{
      "pagePath": "pages/statistic/statisitic",
      "text": "练习1",
      "iconPath":"images/f3.png",
      "selectedIconPath":"images/f3_on.png"
    },{
      "pagePath": "pages/test/test",
      "text": "练习2",
      "iconPath": "images/loves.png",
      "selectedIconPath": "images/lover.png"
    }]
}

3.页面配置:json文件夹中配置会覆盖app.json中window相同的配置项


逻辑

1.APP()函数----注册下程序,接受一个Object参数,指定小程序的生命周回调等,必须在app.js中调用切只能调用一次。

Object参数:

onLauch():生命周期回调–监听小程序初始化(全局只能触发一次)

onShow:监听小程序显示,小程序启动时触发或后台进入前台显示时触发

onHide():监听小程序隐藏,小程序从前台进入时触发

onEroor:错误监听函数,页面发生脚本错误时触发

onPageNotFound:页面不存在监听函数 ,打开页面不存在时触发

2.getApp(Object):全局的 getApp() 函数可以用来获取到小程序 App 实例。

实例:var appInstance = getApp(){

​ console.log(appInstance.globaIData);

}

3.路由:在小程序中所有页面的路由全部由诳街进行管理。

路由的方式有两种:1.调用API 2.使用组件

4.文件作用域:在 JavaScript 文件中声明的变量和函数只在该文件中有效;不同的文件中可以声明相同名字的变量和函数,不会互相影响。

5.模块化:可以将一些公共的代码抽离成为一个单独的 js 文件,作为一个模块。模块只有通过 module.exports 或者 exports 才能对外暴露接口。


视图层

1.wxml:数据绑定、列表渲染、条件渲染、模板、事件、引用

①数据绑定: 、 id=“item-”

②列表渲染wx:for

eg:

<!--  for遍历九九乘法表  -->
<!--  
  1*1=1
  2*1=2 22=4 2*3=6
  3*1=3 32=6 3*3=9
 -->
 <view wx:for="{{[1,2,3,4,5,6,7,8,9]}}" wx:for-item="i">
    <view wx:for="{{[1,2,3,4,5,6,7,8,9]}}" wx:for-item="j"  style="display:inline-block;width:20%;">
      <view wx:if="{{j <= i}}">
         {{i}}{{j}}={{ij}}
      </view>
    </view>
 </view>

注意: 花括号和引号之间如果有空格,将最终被解析成为字符串

③条件渲染:wx:if

eg:

wxml:<view wx:if="{{id==1}}">第一条</view>
	 <view wx:elif="{{id > 4}}">大于4的条件</view>
	 <view wx:else="{{id > 7}}">大于7</view>
js:data: {
      id:8, 
  }
----------------------------------------------------
<!--  hidden在view中不生效,text有效  -->
<text hidden="{{true}}">这是一段文本</text>
<view hidden="{{true}}">这是一段文本</view>
----------------------------------------------------
<block wx:if="{{true}}">
  <view>这里的block标签名可以随便起</view>
  <view>相当于一个控制属性</view>
</block>

注意: block并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性。

④模板:template

wxml: <template name="obj">
        <view>第一个对象:{{a}}</view>
        <view>第二个对象:{{b}}</view>
 		<view>{{temname}}</view> 
	  </template>
	  <!-- 使用模板 -->
 	  <template is="obj" data="{{a:1, b:2,temname:name}}"></template> 
 	  <template is="obj" data="{{...obj,temname:name}}"></template> 
js:   data: {
      	obj:{
        	a: 1,
        	b: 3
        }  
  	  }

⑤事件:绑定事件: bindtap | 停止事件冒泡:catchtap

​ 事件中的事件对象:target:事件触发的源头 currentTarget:事件绑定的源头 dateset:事件源组件上由data-开头的自定义属性组成的集合

更多事件可以查看文档,这里就不一一进行说明了

⑥引用:

import:只会引用目标文件夹中的template

inclde:只会引用除template外的代码

eg:
<import src="item.wxml" />
<template is="item" data="{{name:'一颗小白菜'}}"></template>

<include src="item.wxml" />
item.whtml:
<view>我是item.wxml</view>
<template name="item">
  <text>我是item.wxml中的{{name}}</text>
</template>

2.wxss: 模块、变量、运算符、语句、数据类型、基础类库

尺寸单位:rpx eg:在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375px = 750物理像素,1rpx = 0.5px = 1物理像素。

样式导入:@import 必须放在css文件最顶部

内联样式:

选择器:.class、#id、element、element, element、::after、::before

全局样式与局部样式:定义在 app.wxss 中的样式为全局样式,作用于每一个页面。在 page 的 wxss 文件中定义的样式为局部样式,只作用在对应的页面,并会覆盖 app.wxss 中相同的选择器。


组件

1.视图容器:view、scroll-view(可滚动视图区域)、swiper(滑块视图容器)、movable-area(可移动区域)、cover-view

2.导航:navigator

3.媒体组件:audio、video、image、camera、live-player(实时音视频播放)、live-pusher(实时音频录制)

4.开放能力:open-data(用于展示微信开放的数据)、web-view(用来承载网页的容器,会自动铺满整个小程序页面)、ad(广告)、official-account(用户扫码打开小程序时,开发者可在小程序内配置公众号关注组件,方便用户快捷关注公众号,可嵌套在原生组件内)

5.地图:map 画布:canvas