[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
)