アプレットのランタイム情報

(1)動作環境:動作環境アプレット

小型のマイクロチャネルは、三端子で動作します:iOS版(iPhone / iPadアプリ)、Androidと開発ツールをデバッグのために。

スリーサイドスクリプトの実行環境、およびレンダリングのための非ネイティブ環境では、同じアセンブリではありません。

  • iOSの、JavaScriptコード実行中のアプレットJavaScriptCoreにおけるロジック層では、層がWKWebView、環境iOS8、iOS9、iOS10をレンダリングするためにビューで構成されます。

  • Android上で、

    • 古いバージョン、アプレットX5 JSCore論理層を実行するJavaScriptコードは、層は、ビューで構成されている  X5  コアをレンダリングするモバイルクロム57基づきます。

    • 新バージョン、小さなプログラム・ロジック層で実行するJavaScriptコード  V8は  、ビュー層は、自習用にXWebエンジンモバイルクローム67個のコアに基づいてレンダリングされます。

  • アプレットのJavaScriptコードは、論理層で実行されているツールの開発では、  NW.js  、層は、クロム60のWebViewをレンダリングするビューで構成されています。

プラットフォームの違い

三端子の環境は非常に似ていますが、まだ少しの違いではあるが。

  • JavaScript APIのサポート文法や矛盾:文法開発者が変えることができます  ES6 転送  ES5 (関数回避するために詳細を);また、アプレットライブラリは、APIの違い(補償するために、基盤必要ポリフィルを建て詳細)。

  • WXSShttps://developers.weixin.qq.com/miniprogram/dev/devtools/codecompile.html#パターン完了)、開発者は、それぞれ、iOSとAndroidの上でアプレットの真の性能をチェックする必要があることをお勧めします。

唯一、デバッグのための開発者ツール、クライアントの最終的な性能が優先します。

 

(2)JavaScriptサポートケース

営業の制限

安全上の理由から、アプレット、すなわち、動的実行JSコードをサポートしていません。

  • サポートされていない  eval コードJSの実装を
  • サポートしていません  new Function 作成機能を

ES6 APIのためのクライアントサポート

小さなマイクロチャネル・プログラムはES6のAPIの最もによって支持されている次のように、それは(いくつかのAPIに依存するシステムのバージョン)APIによってサポートされています。

iOS8 iOS9 iOS10 アンドロイド
codePointAt        
ノーマライズ    
含ま        
startsWith        
endsWith        
繰り返す        
String.fromCodePoint        
アレイ iOS8 iOS9 iOS10 アンドロイド
copyWithin        
見つけます        
findIndex        
埋めます        
エントリー        
キー        
   
含ま      
Array.from        
Array.of        
iOS8 iOS9 iOS10 アンドロイド
isFiniteの方        
ますisNaN        
parseInt        
parseFloatは        
isInteger        
EPSILON        
isSafeInteger        
数学 iOS8 iOS9 iOS10 アンドロイド
TRUNC        
符号        
CBRT        
clz32        
寄付        
fround        
関数hypot        
expm1        
log1p        
log10の        
LOG2        
生れつき        
COSH        
       
ASINH        
ACOSH        
Atnh        
オブジェクト iOS8 iOS9 iOS10 アンドロイド
あります        
割り当てます        
getOwnPropertyDescriptor        
キー        
getOwnPropertyNames        
getOwnPropertySymbols        

他の iOS8 iOS9 iOS10 アンドロイド
シンボル        
セット        
地図        
代理  
リフレクト        
約束する    

(3)アプレットの操作機構

アプレットが起動します

アプレットは、1つの「コールドスタート」、一方があり、2例があるだろう開始し、「ホットスタート。」

  • ホットスタート:ユーザーがアプレットを開いている場合は、アプレットは、単に前面に状態アプレットの背景を切り替え、再起動せずに、一定の時間内に再びこの時間を開いて、このプロセスはホットスタートです。
  • コールドスタート:ユーザーが最初に開いたり、アプレットが積極的にマイクロチャネルが再び開いた破壊された後の状況、アプレットをリロードするには、この時間が開始され、すなわち、コールドスタート。

概念を再起動せずにアプレット。

前景/背景ステータス

当用户点击右上角胶囊按钮关闭小程序,或者按了设备 Home 键离开微信时,小程序并没有直接销毁,而是进入了后台状态;

当用户再次进入微信或再次打开小程序,小程序又会从后台进入前台

小程序销毁

需要注意的是:只有当小程序进入后台一定时间,或者系统资源占用过高,才会被真正的销毁。

  • 当小程序进入后台,客户端会维持一段时间的运行状态,超过一定时间后(目前是5分钟)小程序会被微信主动销毁。
  • 当小程序占用系统资源过高,可能会被系统销毁或被微信客户端主动回收。
    • 在 iOS 上,当微信客户端在一定时间间隔内(目前是 5 秒)连续收到两次及以上系统内存告警时,会主动进行小程序的销毁,并提示用户 「该小程序可能导致微信响应变慢被终止」。
    • 建议小程序在必要时使用 wx.onMemoryWarning 监听内存告警事件,进行必要的内存清理。

基础库 1.1.0 及以上,1.4.0 以下版本: 当用户从扫一扫、转发等入口(场景值为1007, 1008, 1011, 1025)进入小程序,且没有置顶小程序的情况下退出,小程序会被销毁。

再次打开逻辑

基础库 1.4.0 开始支持,低版本需做兼容处理

用户打开小程序的预期有以下两类场景:

A. 打开首页: 场景值有以下几项:

场景值ID 说明
1001 发现栏小程序主入口,「最近使用」列表
1019 微信钱包
1022 聊天顶部置顶小程序入口
1023 安卓系统桌面图标
1038 从另一个小程序返回
1056 音乐播放器菜单

B. 打开小程序指定的某个页面: 场景值为除 A 以外的其他

当再次打开一个小程序逻辑如下:

上一次的场景 当前打开的场景 效果
A A 保留原来的状态
B A 清空原来的页面栈,打开首页(相当于执行 wx.reLaunch 到首页)
A 或 B B 清空原来的页面栈,打开指定页面(相当于执行 wx.reLaunch 到指定页)

 

 

(4)小程序更新机制

未启动时更新

开发者在管理后台发布新版本的小程序之后,如果某个用户本地有小程序的历史版本,此时打开的可能还是旧版本。微信客户端会有若干个时机去检查本地缓存的小程序有没有更新版本,如果有则会静默更新到新版本。总的来说,开发者在后台发布新版本之后,无法立刻影响到所有现网用户,但最差情况下,也在发布之后 24 小时之内下发新版本信息到用户。用户下次打开时会先更新最新版本再打开。

启动时更新

小程序每次冷启动时,都会检查是否有更新版本,如果发现有新版本,将会异步下载新版本的代码包,并同时用客户端本地的包进行启动,即新版本的小程序需要等下一次冷启动才会应用上。

如果需要马上应用最新版本,可以使用 wx.getUpdateManager API 进行处理。

const updateManager = wx.getUpdateManager()

updateManager.onCheckForUpdate(function (res) {
  // 请求完新版本信息的回调
  console.log(res.hasUpdate)
})

updateManager.onUpdateReady(function () {
  wx.showModal({
    title: '更新提示',
    content: '新版本已经准备好,是否重启应用?',
    success(res) {
      if (res.confirm) {
        // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
        updateManager.applyUpdate()
      }
    }
  })
})

updateManager.onUpdateFailed(function () {
  // 新版本下载失败
})

 

 

 

 

 

 

.

おすすめ

転載: www.cnblogs.com/jianxian/p/11106683.html