第二章总结

本文介绍了微信小程序的基础知识,包括项目目录结构、MINA框架的视图层和逻辑层分工、数据管理(临时缓存、文件存储和网络请求)、页面配置、事件处理和页面样式(WXML和WXSS)。
摘要由CSDN通过智能技术生成

 微信小程序开发基础

1.小程序的基本目录结构

在微信小程序的基本目录结构中,项目主目录下有2个子目录(pages和utils)和4个文件(app.js、app.json、app.wxss、和project.config.json)。

project.config.json文件是项目配置文件。

1d98850e896a43bd97e5245c486018af.png

2.小程序的开发框架

小程序的开发提供了MINA框架,MINA框架通过微信客户端提供文件系统、网络通信等基础功能,对上层提供了一整套JavaScript API,让开发者能够快速搭建应用。

                      1552ab0a96db4d37bef31d73677e5ff2.jpeg

小程序MINA框架将整个系统分为视图层和逻辑层

视图层

MINA视图层由WXML和WXSS编写,由组件来进行展示。微信小程序在逻辑层将数据进行处理后发送给视图层展现出来,同时接收视图层的事件反馈。视图层以给定的样式展现数据并反馈时间给逻辑层,而数据展现是以组件来进行的。

逻辑层

逻辑层用于处理事务逻辑。对于微信小程序而言,逻辑层就是所有,js脚本文件的集合。
微信小程序在逻辑层将数据进行处理后发送给视图层,同时接受视图层的事件反馈。
微信小程序开发框架的逻辑层是采用JavaSorijpt 编写的。在 JavaScript 的基础上,微信因队做了适当修改,以便提高开发小程序的效率。主要修改包括:
(1)增加 app()和 Page()方法,进行程序和页面的注册。
(2)提供丰富的API,如扫一扫、支付等微信特有的能力。
(3)每个页面有独立的作用域,并提供模块化能力。
逻辑层就是通过各个页面的.js脚本文件来实现的。
开发者开发编写的所有代码最终会被打包成独立的JavaScript文件,并在小程序启动的时候运行,直到小程序被销毁。

数据层

数据层在逻辑上包括也面临时数据或缓存、文件储存和网络储存与调用。

1.页面临时数据或缓存

在 Page()中,使用 setData 函数将数据从逻辑层发送到视图层,同时改变对应this. data 的值。
setData()函数的参数接收一个对象,以(key,value)的形式表示将 key 在this. da对应的值改变成 value。

2.文件储存(本地储存)

使用使用数据 API 接口,如下:
wx. getStorage       获取本地数据缓存。
wx. setStorage       设置本地数据缓存。
wx. clearStorage    清理本地数据缓存。

3.网络储存和调用

上传或下载文件 API接口,如下:
       wx. request         发起网络请求。
       wx.uploadFile     上传文件。
       wx.downloadFile 下载文件。
调用 URL 的API 接口,如下:
       wx.navigateTo     新窗口打开页面。
       wx. redirectTo      原窗口打开页面。

创建小程序页面

创建第一个页面文件

先新建一个项目,在pages目录下新建一个news目录,并在index目录下新建news.js、news.json、news.wxml和news、.wxss空文件。

打开app.json,输入如下代码:

{
"pages":[
"pages/news/news"
]
}

接下来在news.json文件,输入如下代码:

{
}

打开news.js文件,输入如下代码:

page({
})

 最后在news.wxml文件,输入"欢迎学习小程序"即可:

欢迎学习小程序

运行结果:

4f91bbe39abe49bbb85d9544c5bb399c.png

配置文件

小程序的全局配置保存在全局配置文件(app.json)中,使用全局配置文件来配置页面文件(pages)的路径、设置窗口(window)表现、设置网络请求API的超时时间(networkTimeout)的值以及配置多个切换页(tabBar)等。

全局配置项

0402d470eda940a483518a6ec1f6482e.png

window配置项及其描述

ae4efe78c4f748fe8f722534a4f3ada6.png

tabBar配置项及其描述

df6fb724dee3405fbd02de3c3d209d3b.png

tabBar中list选项

121bdd4893d74943bc80fd4ba91b872b.png

networkTimeout配置项

cfdf95b16f114dc4bcfa78997c2bd286.png

页面配置文件

页面配置文件(*.json)只能设置本页面的窗口表现,而且只能设置window配置项的内容。在配置页面配置文件后,页面中的window配置值将覆盖全局配置文件(app.json)中的配置值。页面中的window配置只需书写配置项,不必书写window

逻辑层文件

项目逻辑文件app.js中可以通过App()函数注册小程序生命周期函数、全局属性和全局方法,已注册的小程序实例可以在其他页面逻辑文件中通过getApp()获取。

项目逻辑文件配置项

1a43e8b076724411a1f506dae0f74e60.png

app.js

onLaunch(){
    console.log("初始化")
  }, 
onShow(){
    console.log("启动")
  },
  onHide(){
    console.log("隐藏")
  }

页面逻辑文件配置项

b116a83997bf4e64bce93df79d0ede65.png

index.js                    数据初始

Page({
  data:{
    name:'lwk',
    age:30,
    birthday:[{year:1998},{month:11},{data:18}],
    object:{hobby:'computer'}
  }
})

index.wxml                 数据绑定

<view>姓名:{{name}}</view>
<view>年龄:{{age}}</view>
<view>出生日期:
{{birthday[0].year}}年
{{birthday[1].month}}月
{{birthday[2].date}}日
  </view>
  <view>爱好:{{object.hobby}}</view>

运行效果

在app.json文件中设置如下taBar配置:

{
  "pages": [
    "pages/index/index",
    "pages/news/news",
    "pages/logs/logs"
  ],
  "window": {
    "navigationBarTextStyle": "black",
    "navigationBarTitleText": "Wechat",
    "navigationBarBackgroundColor": "#ffffff"
  },
  "style": "v2",
  "componentFramework": "glass-easel",
  "lazyCodeLoading": "requiredComponents",
  "tabBar":{
    "color": "#666",
    "selectedColor": "#ff0000",
    "borderStyle":"black",
    "backgroundColor": "#ffffff",
    "list": [{
      "pagePath":"pages/index/index",
      "iconPath":"images/index.jpg",
      "selectedIconPath":"images/index.jpg",
      "text":"首页"
    },
    {
      "pagePath":"pages/news/news",
      "iconPath":"images/news.jpg",
      "selectedIconPath":"images/news.jpg",
      "text":"新闻"  
    }
  
  ]
  }
}

                                                          运行效果:

欢迎学习小程序
<view>{{name}}</view>
  <image src="{{img}}"/>
  <view wx:if="{{sex}}">=男</view>

页面结构文件

数据绑定

将WXML文件与逻辑文件中的data进行动态绑定,在页面中显示data中的数据。

index.wxml代码如下:

欢迎学习小程序
<view>{{name}}</view>
  <image src="{{img}}"/>
  <view wx:if="{{sex}}">=男</view>

index.js代码如下:

Page({
  data:{
    name:'/wk',
    img:'/images/news.jpg',
    sex:true
  },
})

运算:

news.wxml

 </view>        
  <view>爱好:{{object.hobby}}</view>
  <view>算术运算:{{age+num}}</view>
  <view>{{num1}}+{{num2}}={{num1+num2}}</view>
  <view>{{num1+num2 == num1+num2}}</view>
  <view>{{num >num2?'num1>num2':'num1<num2'}}</view>

news.js

Page({
  data:{
    num:100,
    num1:2,
    num2:3,
    num3:10
  }
  
})

运算结果:

条件数据绑定 

<view wx:if="{{X>0}}">1 </view >
<view wx:elif="{{x==0}}">0</view>
<view wx: else> -1 </view>

运行结果:

列表数据绑定 

index.wxml

<view wx:for ="{{student}}" >
<text > {{index}} --{{litem.name}} -- {{litem. age}} --
{{item.hobby}} </text >
</view>

index.js

Page({
  data: {
student: [
 {name:'Tom',age:15, hobby: 'game'},
 {name: 'Helen', age: 14,hobby: 'music'},
 {name: 'Bob', age:16, hobby: 'basketball'}
]
}
})

运行结果:

模板 

定义模板:

<template name="模板名">

调用模板:

<template is="模板名称"data == "{{传入的数据}}"/>

引用页面文件:

import方式

在a.wxml文件中定义一个item模板:

<template name="item">
<text>{{item.name}}</text>
<text>{{item.age}}</text>
</template>

include方式

在aa.wxml文件定义如下代码:

<text>{{item.name}}</text>
<text>{{item.age}}</text>

 bb.wxml文件中定义如下代码:

<include src="aa.wxml"/>
<text>{{item.hobby}}<text/>

bb.wxml文件通过include把aa.wxml文件代码加载,其结果为如下结构:

<text>{{item.name}}</text>
<text>{{item.age}}</text>
<text>{{item.hobby}}</text>

页面事件 

简单来说,小程序中的事件是用户的一种行为或通信方式。在页面文件中,通过定件来完成页面与用户之间的交互,同时通过事件来实现视图层与逻辑层的通信。我们事件绑定到组件上,当达到触发条件时,事件就会执行逻辑层中对应的事件处理函数要实现这种机制,需要定义事件函数和调用事件。
定义事件函数:    在.js文件中定义事件函数来实现相关功能,当事件响应后就事件处理代码。
调用事件:      调用事件也称为注册事件。调用事件就是告诉小程序要监听哪个么事件,通常在页面文件中的组件上注册事件。事件的注册(同组件属性),以“ke形式出现形式出现,key(属性名)以bind或catch开头,再加上事件类型,如bindtap、cat其中,bind开头的事件绑定不会阻止冒泡事件向上冒泡,catch开头的事件绑定可泡事件向上冒泡。value(属性值)是在js中定义的处理该事件的函数名称,如click。

在小程序中,事件分为冒泡事件和非冒泡事件两大类型。

冒泡事件:冒泡事件是指某个组件上的事件被触发后,事件会向父级元素传递,父级元素在向其父级元素传递,一直到页面的顶级元素
级元素再向其父级元素传递,一直到页面的顶级元素。
非冒泡事件:非冒泡事件是指某个组件上的事件被触发后,该事代吗的发果与下到代码的在WXML中,冒泡事件有6个

                                                       冒泡事件

 页面样式文件

      页面样式文件(WXSS)是基于css扩展的样式语言,用于描述WXML的组成样式,决定WXML的组件如何显示。WXML具有css的大部分特性,小程序对WXSS做了一些扩充和修改。

                                                           WXSS常用属性

                                   

  • 53
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值