小程序

Posted qingshanyici

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小程序相关的知识,希望对你有一定的参考价值。

指南:

小程序宿主环境

程序与页面

app.json的pages字段,可以知道当前小程序的所有页面路径。

{
  "pages": ["pages/index/index", "pages/logs/logs"]
}

这个配置说明在项目里定义了两个页面,字段的第一个页面是小程序的首页。

小程序启动后,app.js的APP实例,它里面的onLaunch的回调会被执行。

App({
  onLaunch() {
    // 小程序启动之后 触发
  }
})

 

 

看看小程序的一个页面是怎么写的,

首先,.json文件配置生成一个界面,接着,装载这个页面的WXML和WXSS文件,最后装载js文件。

js文件是由页面构造器Page()生成,里面是各种对象,默认的是data对象和onLoad方法。

 

 

组件

通过写组件标签名显示组件。

在组件里写明属性传值,也可以写事件函数,来处理相关行为。

<map bindmarkertap="markertap" longitude="广州经度" latitude="广州纬度"></map>

 

bindmarkertap就是一个事件,后面两个是属性。

 

API

微信小程序提供了很多内置的API。比如调用微信扫一扫功能,

wx.scanCode({
  success: (res) => {
    console.log(res)
  }
})

 

多数API的回调都是异步的,这句话其实我并不明白。

 

 

二、目录结构

3+4模式

主题3个文件,页面4个文件

 

 

三、配置小程序

全局配置

app.json文件进行全局配置,包括页面的路径、窗口表现、设置网络超时时间、多tab等。里面的window项,每个页面的json文件里也会有这一项。

{
   "window": {
    "navigationBarTitleText": "Demo"
  },
}

 

 

页面配置

每个小程序页面使用同名.json文件对页面窗口进行配置,页面的配置项会覆盖app.json中window同名的配置项。

 

sitemap配置

微信索引,这个我不明白。

 

四、小程序框架

(1)场景值

用来描述用户进入小程序的路径,比如有的是通过一个链接进来的,有的是通过扫某个二维码进来的,有的是通过聊天会话里的小程序卡片进来的。总之,进来的方式是不一样的。

获取场景值的方法,APP的onLaunch和onShow,或者wx.getLaunchOptionsSync中获取场景值。

只有概念,怎么没看见使用呢?不明白。

 

(2)逻辑层

注册小程序

小程序在app.js文件中调用APP方法注册小程序实例,生命周期、错误监听都放在这里面。

注意是app.js文件,不是每个页面的js文件。

整个小程序只有一个APP实例,是全局页面共享的。开发者通过getApp方法获取全局唯一的App实例。

//某个页面的js文件
const appInstance=getApp();
console.log(appInstance.globalData);

 

 

注册页面

小程序中的每个页面,都要在页面对应的js文件中调用Page方法注册页面实例,制定页面的初始数据、生命周期回调、事件处理等。

总结:最大的总体的注册,在app.js文件里,使用的是App实例。app.json文件里,装的是路径。每个页面的注册,则是在页面的js文件里,使用的是Page实例,里面装的是data和生命周期。除了Page,页面也可以像自定义组件使用Component来创建,比如弹出来的选择框页面,就是用组件来写的。

 

Page实例(页面)生命周期

onLoad、onShow。

 

页面路由

通过getCurrentPages函数获取当前页面栈。这句话不明白。

总之,该模块内容是实现页面跳转的。他们的每一次动作,都是与生命周期息息相关的。

wx.navigateTo:打开新页面

wx.navigateBack:返回页面

wx.switchTab:tab切换

 

模块化

模块只有通过module.exports或者exports才能对外暴露接口。推荐前者,因为我不明白两者的关系。

在需要使用这些模块的文件中,使用require将公共代码引入。

const common = require(‘common.js‘);

 

 

文案件作用域

在js文件中生命的变量和函数只在该文件中有效,不同的文件中同名的变量和方法并不会影响。

如果需要全局的数据,可以在app.js文件中的App中设置。getApp方法可以获取全局的应用实例。

 

API

API有事件监听API、同步API和异步API三大类。

异步API:

大多数API都是异步的,wx.request/wx.login等。这类接口要接收一个Object类型的参数,这个参数有以下几个参数:success、fail、complete(无论成功失败都会执行)。

wx.login({
  success(res) {
    console.log(res.code)
  }
})

 

对象里面有success参数,这个参数是一个函数,这个函数接受一个res参数。

 

 

(3)视图层

 

 

 

基础组件

一个组件包括标签、属性和内容。左右组件与属性都是小写,以“-”连接。组件常见的公共属性有id、class、style、hidden、data-*(组件上触发事件时,会发送给时间处理函数,注意是currentTarget才会触发)、bind*、catch*(事件)。

 

获取节点信息

通过节点createSelectorQuery信息查询API获取节点属性、样式、位置。最常见的用法是使用这个接口来查询某个节点的当前位置。

const query = wx.createSelectorQuery();

 

 

 

 

 

 

 

五、小程序运行时

 

 

JS支持情况

不支持动态执行JS代码,不明白这句话,但接下来他说了,也就是不支持使用new Function创建函数

 

运行机制

冷启动和热启动。

 

六、自定义组件

创建自定义组件

自定义组件类似于页面,由4个文件组成,同样也是wxss文件,不是wxs文件。要创建一个自定义组件,首先在json文件中进行自定义组件生命,就是将组件阻断市值为true。然后,在wxml文件里写模板。最后,在wxss文件里写样式。但是wxss文件里面,不能使用id、属性选择器。

{
  "component": true
}

 

在js文件中,使用Component来注册组件,并提供组件的属性和方法。

Component({
  properties: {
    // 这里定义了innerText属性,属性值可以在组件使用时指定
    innerText: {
      type: String,
      value: ‘default value‘,
    }
  },
  data: {
    // 这里是一些组件内部数据
    someData: {}
  },
  methods: {
    // 这里是一个自定义方法
    customMethod() {}
  }
})

 

 

使用自定义组件

在页面的json文件中进行引用声明,里面放的是路径。

 

以上是关于小程序的主要内容,如果未能解决你的问题,请参考以下文章

小程序各种功能代码片段整理---持续更新

Android获取各个应用程序的缓存文件代码小片段(使用AIDL)

提效小技巧——记录那些不常用的代码片段

Android小部件,启动一个片段?

vscode 开发微信小程序环境配置

小程序模板使用