多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] # 小程序超过2M限制的方法——分包加载 2017.01.09 小程序上线时,微信限制了代码包不能超过1MB 大小,(现在是2M了)限制大小是出于对小程序启动速度的考虑,希望用户在使用任何一款小程序时,都能获得一种“秒开”体验。然而,2MB 的大小也限制了小程序功能的扩展,小程序业务的发展可能需要更大的体积。 那么,能否有一种方案,在增加小程序包大小的同时,也能保持不错的启动速度呢? 为了解决这个矛盾点,微信推出了「[分包加载](https://developers.weixin.qq.com/miniprogram/dev/framework/subpackages.html)」这个技术方案。 ## 注意 微信 6.6.0 版本开始支持分包加载,而对于低于这个版本的客户端,我们做了兼容处理,开发者不需要对老版本微信客户端做兼容。 所以在老版本的微信客户端下,是依然采取整包加载的方式加载的,建议开发者尽量控制代码包的大小。 # 字体和图片 微信小程序不支持加载本地字体/图片 [微信小程序设置苹方字体](https://www.jianshu.com/p/5108a0a130a9) # 微信小程序 换行 空格&连续空格 view不自动换行 换行 1、必须在 `<text/>` 里, 才能用 `\n` 来换行 ; 2、`<view>` 里的不能用 `\n` 换行,想在 `view` 里换行,只能再包含一个 `text` 换行例子: ``` <view class='outer_box'> <text class='inner-box'> 1、第一行文字 \n 2、第二行文字 </text> </view> ``` 来源:https://blog.csdn.net/abs1004/article/details/81772176 # 背景图片 1. 使用网络图片 2. 使用base64格式 3. 使用image来装载本地的图片,然后作为 界面背景 # 为什么要用wx.checkSession()—— 有时候,我们会因为 `session_key` 不正确而导致解密或者校验签名失败。有几方面的原因: 1、因为 `wx.login()` 被调用时,用户的 `session_key` 会被更新导致就 `session_key` 失效。所以,在调用 `wx.login()` 的时候应该要明确需要登录之后再调用。 2、另外,微信不会把 `session_key` 的有效期告诉我们,用户越频繁使用微信,`session_key` 的有效期就更长。 因为,就需要调用`wx.checkSession()` 来校验当前用户的 `session_key` 是否有效。 ``` onLoad: function () {   wx.checkSession({     success: function(res){       console.log("处于登录态");     },     fail: function(res){       console.log("需要重新登录");       wx.login({})       }   }) } ``` > https://segmentfault.com/a/1190000009658302 # Video 组件限制 1. `custom-cache="{{false}}"` 一般缓存为一级缓存、二级缓存、和自定义缓存,换而言之`custom-cache="{{false}}"`就是不使用自定义缓存的意思。为什么用了视频组件会卡loading加载不出来呢,可能是因为微信设置的自定义缓存的位置有容量限制,因此将它关闭了以后会自动使用系统缓存,可能就没有这个问题了。 # 微信小程序的一些限制 1. 不支持HTML、没有 Dom。网页用的 JS、CSS 基本要全部重写,WXML 的语法和 HTML 差异还挺大,基本是一个个照着手册的属性去改。**CSS 选择器不支持级联**。 2. 小程序源码打包后的大小限制为1M,超大传不上去。单次通过 wx.request传输的数据最大也是1M。 3. MINA 框架实现的 tab bar,最多5个 tab;通过 wx. navigateTo 推入后台的页面最多5层,超过会无法打开新页面。 4. 小程序没有 webview 控件,自带的 view 和 text 又不支持图文混排,还不能动态 set WXML …… 所以小程序上的富文本也就只能做到固定焦点图+纯文本+emoji了 [二哈] 5. 不支持 a 标签,无法打开普通网页。 整体上来讲,小程序本身被设计为处理简单逻辑的「工具型」应用;同时具有很强的内容封闭性。 # 解决小程序页面路径最多只能十层限制 小程序[文档](https://developers.weixin.qq.com/miniprogram/dev/api/wx.navigateTo.html)里跳转路径的方法。 讲一下业务背景吧!随着项目越来越大,页面的跳转也越来越多,使用 `navigateTo` 方法添加的页面栈也越来越多了,不知不觉可能就到了十层了 再用 `navigateTo`去跳转就跳不动了,这个时候需要 `redirectTo` **当前页面栈删除**来跳转或者用`reLaunch`**删除所有页面栈**来跳转 用那就要看业务场景了。 ## 页面栈的处理: | 路由方式 | 页面栈表现 | API | | --- | --- | --- | | 初始化 | 新页面入栈 | 初次进入,首页打开 | | 打开新页面 | 新页面入栈 | `navigateTo` | | 页面重定向 | 当前页面出栈,新页面入栈 |`redirectTo` | | 页面返回 | 页面不断出栈 ,直到目标返回页,新页面入栈 | `navigateBack` | | Tab 切换 | 页面全部出栈,只留下新的 Tab 页面 | `switchTab` | | 重加载 | 页面全部出栈,只留下新的页面 | `reLanch` | ## 什么时候到了十层了呢? 这个时候关键的 api [`getCurrentPages()`](https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/page.html#getcurrentpages) 来了!它返回的是一个数组,那么就可以获取它的 `length` 来做判断了! [小程序无限层级路由方案(无框架依赖)](https://juejin.im/post/5c09d82e51882517165dd485)