同学们大家好,我是小伊同学,介绍完API的相关知识,我们继续来学习一些更加复杂的js知识,今天我们先来看一下全局数据读写。
在讲解全局数据之前,我们先来回顾一下,之前在讲解小程序架构的时候,我们曾说过,小程序根目录下,有三个以app开头的文件,后缀分别为js、wxss和json,我们说js是全局的逻辑,wxss是全局的样式,json是全局配置。那么全局数据就是在这里的app.json中。app.json文件中的内容和页面的js文件其实是差不多的。开头的App表明了注册一个小程序,必须在app.js中调用一次且只能一次,小程序才能正常运行。花括号的内容中也可以书写onLunch等函数,之前我们讲过页面的,这里同理,是小程序初始化回调函数。对于小程序的全局其实也是存在生命周期的,可以类比我们前面讲的页面的生命周期,不过因为这部分基本用不到,我们就不过多讲解了。在花括号中除了回调函数之外,还可以看到有一个globalData对象,那么这就是全局变量,那么默认创建的全局变量中,只有一个,变量名为userInfo,初始赋值为null,如果写多个变量,同样需要用逗号进行分隔。这里的globalData并不是固定的,大家也可以改成其他名称,只要是app中的js对象都能作为全局变量使用,但是我们按照命名规范更加推荐这种。
下面,我们来看一下,各个页面是如何与全局数据进行交互的,这里我们使用的语句是getApp,这个对象可以在js中的任何位置当作一个变量被调用,它指向了当前小程序的全局对象,即app.js文件。下面给出了一个示例,如果我们在app.json中定义了globalData如右边所示,在页面的js文件的onLoad函数中可以使用getApp点globalData点变量名进行读取和修改。这里getApp就相当于是app.json中的全局即App部分,globalData则对应了花括号中的globalData,abc对应了其中的abc属性。
如图所示,分别为app.js和页面js文件,下方窗口显示了打印输出的情况。我们在页面中读取了全局数据中的test变量,以及全部的全局数据,然后对test变量进行了修改,再次打印后可以看到对于全局变量的修改是成功的。这就是全局数据与页面进行的交互,如果我们希望将数据传递给其他页面那么就可以将数据放入全局数据中,然后在其他页面再从全局数据中读取即可。
本节的内容到此结束,数据处理是js的两个核心功能之一,下面一节我们将讲解数据处理部分的页面间数据传递,我们明天继续。
我单独建立一个globalData.js 导出全局数据,在任何页面或组件想用的时候 import导入他,这和getApp().globalData有上面不同么????
一般我都用 global 这个全局,不需要 getApp 。更方便,但是据说更不保险,毕竟这个对象官方没有对外公布。
这个在任何文档中都没有提及,但是他就是能用。