マイクロ手紙は記事の学習の基本原則と操作機構をアプレット

参考資料

原理といくつかの考えを根底アプレット

  • セキュリティと制御のために、デュアルスレッド実行
  • ほとんどの機能を実行するためのUIスレッド、ウェブワーカーは、ユーザーコードを実行します。
  • 図の例。

マイクロチャネルアーキテクチャの原則アプレット

  • MVVMテンプレートの構文は、動的にページを変更するだけで、BOMの動作をサポートしていません。
  • コンパイルプロセス:
    • .xmlのJSスクリプト、入ってくるのjsスクリプト右のパスを生成WCCコンパイルされた実行可能ファイルは、仮想DOMツリーを得ました。
  • WAWebview.js
    • WXは、最終的にWeixinJSBrigeメソッドを呼び出し、APIの下に登録されています。
    • WX要素との間のマッピングを提供するwxparserオブジェクトDOM、素子動作管理、イベント管理機能
    • 組立部は、例えば、ネイティブコードを使用して実装:wx-videowx-canvaswx-mapwx-textarea、等
    • ネイティブアセンブリは、WebViewの上方に吊り下げ、成分のほとんどはフロントエンドを達成するために使用されます。
  • WeixinJSBridge
    • wx.request実際の呼び出しWeixinJSBridge、コールはブラウザ環境を区別する。
  • WAService.js
    • WX API; APP()、ページ();ページは、モジュラーを提供するために、スコープを持ち、データバインディング、イベント配信;ライフサイクル;ルーティングします。
  • 特定のアーキテクチャは、2つのWebViewからなる:UI層、ロジック層
    • 最初のWebViewのUI層の実行、コンテンツコードとコンパイルWAWebviewある操作と対話DOMイベント応答を行います
    • 別のJSエンジンにおけるロジック層の実行:IOS:JavaScriptCoreにおける、アンドロイド:X5、開発ツール:? Nwjsクロムカーネル
    • 論理層は、サービスコードとWAService.jsを備え、
    • 二つの層の間に(ネイティブ)の間WeixinJSBridge、=>?相互作用によって
  • 図の例。

小さなマイクロチャネルアーキテクチャプログラム分析(上)

  • プログラムは、より多くのWebViewで複数のビューを持っています
  • 小さなプログラムは、唯一のサービスプロセスを持っていますが、また背景に固有のプログラムのライフサイクルを実行するのWebView、
  • 两者都通过WeixinJSBridge和后台通信
  • view模块和service模块均使用postMessage进行通信
  • contentScript.js的代码提供了message消息到chrome.runtime通信接口的转换

浅谈小程序运行机制

  • 使用客户端提供的JavaScript引擎, 沙箱只是单纯的提供JavaScript解释环境, 没有浏览器任何接口
  • 小程序的基础库分别注入到视图层和逻辑层运行
    • 视图层: 提供各类组件来组建界面
    • 逻辑层: 提供各种API来处理逻辑
    • 处理数据绑定, 组件系统, 事件系统, 通信系统等一系列框架
    • 基础库不会打包到某个小程序代码, 会提前内置在微信客户端
  • 基于shadow dom模型
  • 启动机制
    • 热启动: 打开过小程序, 在一定时间内再次打开
    • 冷启动: 首次打开或者被微信销毁后打开
    • 没有重启概念
    • 进入后台后, 维持一段时间的运行后被销毁, 目前是五分钟.
    • 短时间(5s), 连续收到两次系统内存告警, 会进行小程序销毁.
  • 更新机制
    • 冷加载读取缓存/检查更新
    • 热加载直接后台切前台
    • 冷启动时发现有新版本, 会异步下载新版本的代码包, 并同时用客户端本地的包进行启动
    • 即新版小程序发布后, 需要经历两次冷启动, 才会应用
    • 如果需要新版本, 可以使用指定API进行更新
  • 更新メカニズムで開始
  • setData
    • webview和jsCore是单独模块
    • 两边都通过evaluateJavaScript实现, 即用户传输的数据.
    • 需要将其转换成一份JS脚本, 通过执行脚本进行执行

小程序更新机制

  • 未启动时更新
    • 微信客户端有若干个时机检查本地缓存的小程序有没有新版本, 有静默升级
    • 发布新版本后, 无法同步所有的用户, 24小时, 同步所有新版本信息到用户手机
    • 下次进行冷启动时, 先更新最新版本再打开.
  • 启动时更新
    • 每次冷启动都会检查更新, 异步下载最新的版本的代码包, 但会用本地的包进行启动
    • 新版本在下一次冷启动时, 应用.

疑问

  • なぜ、論理スレッドにあり、小さなマイクロチャネル2のWebViewプログラムは、何のwindowオブジェクトが存在しないか、WebViewの中で実行されていますか?
  • JSは、オペレーティングシステム環境でそれを説明した紹介の書き方?
  • それは何shadowdom?

おすすめ

転載: www.cnblogs.com/zhangrunhao/p/12068683.html