[TOC]
# 運行環境
微信小程序運行在三端:iOS、Android 和 用于調試的開發者工具。
三端的腳本執行環境聚以及用于渲染非原生組件的環境是各不相同的:
* 在 iOS 上,小程序的 javascript 代碼是運行在 **JavaScriptCore** 中,是由 **WKWebView** 來渲染的,環境有 iOS8、iOS9、iOS10
* 在 Android 上,小程序的 javascript 代碼是通過 **X5 JSCore** 來解析,是由 X5 基于 **Mobile Chrome 53 內核**來渲染的
* 在 開發工具上, 小程序的 javascript 代碼是運行在 **nwjs **中,是由 **Chrome Webview** 來渲染的
> 引用:[https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/details.html](https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/details.html)
正由于腳本執行環境的不同,所以真機與開發者工具有些表現還是差異挺大的,特別表現在原生組件方面(后面會講到部分原生組件注意點),iOS以及Android都需要多加測試才能保證程序沒有問題。
同時因為是在JsCore中執行,JsCore沒有窗口對象,所以沒有window、document等等(所以很多外部生態插件/庫無法直接使用,需要稍作修改)
# App Service
https://blog.csdn.net/qq_26545305/article/details/79402738
微信小程序主要由 App Service 和 View 構成,今天主要說的是邏輯層。
? ? ? 小程序開發框架的邏輯層由JavaScript編寫。邏輯層的功能就是將數據進行處理后發送給視圖層,同時接受視圖層的事件反饋。
在原生JavaScript的基礎上又增加了一下新的方法。
? ? ?①增加App和Page方法,進行**程序和頁面**的注冊。
? ? ?②增加getApp和getCurrentPages方法,分別用來獲取App實例和當前頁面棧。
? ? ?③提供豐富的API,如掃一掃、微信支付等微信特有能力。
? ? ?④每個頁面有獨立的作用域,并提供模塊化能力。
? ? ?⑤由于框架并非運行在瀏覽器中,所以js在web中一些能力都無法使用,如document、window等。
----
[小程序 與 App 與 H5 之間的區別](https://blog.csdn.net/freekiteyu/article/details/84316183)
[基于 CentOS 搭建微信小程序服務](https://cloud.tencent.com/developer/labs/lab/10004)
# 來源
[微信小程序 App Service](https://blog.csdn.net/qq_26545305/article/details/79402738
)