小程序
文章目录
1.用户登录
用户登录参考图:
获取code
开发者需要在开发者服务器后台调用 auth.code2Session来获取code
auth.code2Session:
登录凭证校验。通过 wx.login 接口获得临时登录凭证 code 后传到开发者服务器调用此接口完成登录流程。更多使用方法详见 小程序登录
请求地址
GET https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
3.布局易错点
1.当设置顶层的div的宽高时,如果没有子集div,即使给了html,body的高度。顶层div还是没有显示,这是一个bug记住。
2.有时候设置字体大小单位为px不准,可以尝试使用rpx代替。
4.关于事件方法和App实例
.小程序中触发的一些表单事件不能够直接写在script中的外面,也不能写在methods里面。注意看uni-app官方文档,这里不能使用小程序原生的form表单事件。但两者很类似。
1.从全局APP实例中存值和取值
5.Bug:
1.警告:
[pages/home/index] Some selectors are not allowed in component wxss, including tag name selectors, ID selectors, and attribute selectors.(./pages/home/home-recommend/index.wxss:35:72)
2.小程序自定义tabbar报Component is not found in path “custom-tab-bar/index”
解决办法:只需要在app.json 里面设置的tabbar的custom这个变量去掉
参考地址:https://blog.csdn.net/qq_34672907/article/details/93624433
6.小程序后台
设置小程序基础库版本
7.名词解释
PV和UV的区别
PV指的是一个IP24小时之内(一天)访问网站的次数,关掉网站退出之后第二次打开网站就是2个PV;
UV指的是打开网站之后浏览页面的深度,也就是打开一个网站之后再不关掉的情况下,继续浏览该网站的其他页面,就是UV数量;UV主要体现网站
8.tabBar的注意事项:
1.icon的路径不能使用网络路径
2.icon的路径不能写成绝对路径的样式:
例如:D:\微信开发者工具\框架项目\myUni-app\my-project\src\static\icon\iconBefore\_home.png,小程序错误提示为:iconpath中不能包含 反斜杠\
9.路径事项
如果要写根路径来标识uni-app项目中src目录下的文件,可以这样写:
10.小程序基础库
1.版本配置
如果基础库版本过低,通过兼容处理的话,只有在Mac电脑上可以,其他不行,如下:
2.获取小程序基础库版本:
const version = wx.getSystemInfoSync().SDKVersion;
11.小程序加载注意事项
不管你在小程序初始化时,怎么设置,都不会影响首页的加载(即pages.json文件中的第一个页面配置),本人亲自实验过。
除此之外,其他非首页的页面不会加载。------因为该页面没有打印出页面加载时的日志
这点很重要
即使第一次首页都会被加载,但是如果从其他页面再次跳转到该页面的话,该页面还是会进行重新加载。
12.本地缓存
注意:
存储在本地缓存的文件:只有在代码包被删除过后才会进行清理,其余时间不会进行清理,本地缓存上限为10M。
下面为不知道缓存清理机制进行的试验
获取本地缓存的大小
1.Object wx.getStorageInfoSync()
返回值
Object object
属性 类型 说明
1.keys Array. 当前 storage 中所有的 key
2.currentSize number 当前占用的空间大小, 单位 KB
3.limitSize number 限制的空间大小,单位 KB
验证小程序编译时是否会清空本地缓存
具体做法如下:
需要用到的存储函数:
wx.setStorageSync(“name”, “hjx”);
wx.getStorageSync(“name”);
在初次请求时,在非首页的页面向本地缓存存入一个数据:比如“name”=“hjx”。然后小程序启动的时候在小程序注册的页面App.vue页面看是否能够取出该name的值,如果不能,则证明小程序编译会清空本地缓存。否则,不会清空本地缓存。
终于经过我的一番测试:
所以啊,重新编译虽然小程序会重新进行注册,但是本地的缓存并不会清空。
本地缓存扩展
我们可以利用这一点,将数据库的一些重要信息存入本地缓存,但是官方限制的大小为10M,所以要存储的时候要进行大小的判断,以防溢出,导致不必要的后果。
本地缓存清理策略
本地缓存的清理时机跟代码包一样,只有在代码包被清理的时候本地缓存才会被清理。
隔离策略
同一个微信用户,同一个小程序 storage 上限为 10MB。storage 以用户维度隔离,同一台设备上,A 用户无法读取到 B 用户的数据;不同小程序之间也无法互相读写数据。
插件隔离策略
同一小程序使用不同插件:不同插件之间,插件与小程序之间 storage 不互通。
不同小程序使用同一插件:同一插件 storage 不互通
13.文件系统
文件系统是小程序提供的一套以小程序和用户维度隔离的存储以及一套相应的管理接口。通过 wx.getFileSystemManager() 可以获取到全局唯一的文件系统管理器,所有文件系统的管理操作通过 FileSystemManager 来调用。
文件分类:
代码包文件:代码包文件指的是在项目目录中添加的文件。
本地文件:通过调用接口本地产生,或通过网络下载下来,存储到本地的文件
其中本地文件又分为三种:
本地临时文件:
临时产生,随时会被回收的文件。运行时最多存储 4GB,结束运行后,如果已使用超过
2GB,会以文件为维度按照最近使用时间从远到近进行清理至少于2GB。
本地缓存文件:
小程序通过接口把本地临时文件缓存后产生的文件,不能自定义目录和文件名。跟本地用户文件共计,小程序(含小游戏)最多可存储
200MB。
本地用户文件:
小程序通过接口把本地临时文件缓存后产生的文件,允许自定义目录和文件名。跟本地缓存文件共计,小程序(含小游戏)最多可存储
200MB
代码包文件
由于代码包文件大小限制,代码包文件适用于放置首次加载时需要的文件,对于内容较大或需要动态替换的文件,不推荐用添加到代码包中,推荐在小游戏启动之后再用下载接口下载到本地
访问代码包文件
代码包文件的访问方式是从项目根目录开始写文件路径,不支持相对路径的写法。如:/a/b/c、a/b/c 都是合法的,./a/b/c …/a/b/c 则不合法。
文件清理策略
本地临时文件只保证在小程序当前生命周期内,一旦小程序被关闭就可能被清理,即下次冷启动不保证可用。
本地缓存文件和本地用户文件的清理时机跟代码包一样,只有在代码包被清理的时会被清理。
14.app.js中globalData的使用
在其他页面为globalData增加数据:
const app = getApp()
app.age=14
这样即可为app实例增加一个属性age
那如何访问这个新增加的age属性呢?
使用app.age即可访问。
注意:这里和直接访问globalData中的属性不同。
访问globalData中的属性为:
app.globalData.age
还有一点:
不要在定义于 App() 内的函数中,或调用 App 前调用 getApp() ,使用 this 就可以拿到 app 实例。
通过 getApp() 获取实例之后,不要私自调用生命周期函数。
通过这中增加属性的方式,在其他页面均可以通过getApp()函数访问到全局app实例中的属性值