什么是分包?
分包指的是把一个完整的小程序项目,按照需求划分为不同的子包,构建的时候打包成不同的分包,按需加载
分包的好处?
- 可以减少小程序首次启动的下载时间
- 可以多人开发中根号的解耦协作
分包前后的项目构成?
-
分包前,小程序中所有的页面和资源打包到一起,导致整个项目体积过大,影响小程序的启动时间
-
分包后,小程序分为主宝和多个分包组成
- 主包:一般只包含项目的启动页,tabbar页面,以及所有分包都需要用到的公共资源
- 分包:只包含和当前分包有关的页面和私有资源
分包加载的规则?
- 在小程序启动时,默认会下载主包饼启动主包内的页面
- 当用户进入分包某个页面时,客户端会把分包页面下载下来,下载完成后再进行展示
- 非tabBar页面可以按照功能的不同,划分为不同的分包之后,进行按需下载
分包的体积的限制?
整个小程序,主包加分包不能超过20MB,单个包不能超过2M
使用分包:
在app.json的subpackages节点中声明分包的结构
小程序的登录流程
- 通过 wx.login() 获取到用户的code判断用户是否授权读取用户信息,调用wx.getUserInfo 读取用户数据。
- 由于小程序后台授权域名无法授权微信的域名,所以需要自身后端调用微信服务器获取用户信息。
- 通过 wx.request() 方法请求业务方服务器,后端把 appid , appsecret 和 code 一起发送到微信服务器。
appid 和 appsecret 都是微信提供的,可以在管理员后台找到。
- 微信服务器返回了 openid 及本次登录的会话密钥 session_key。
- 后端从数据库中查找 openid ,如果没有查到记录,说明该用户没有注册,如果有记录,则继续往下走。
- session_key 是对用户数据进行加密签名的密钥。为了自身应用安全,session_key 不应该在网络上传输。
- 然后生成 session并返回给小程序。
- 小程序把 session 存到 storage 里面。
- 下次请求时,先从 storage 里面读取,然后带给服务端。
- 服务端对比 session 对应的记录,然后校验有效期。