浦口区网站建站,阳江招聘网0662,wordpress跑步,哪个省份网站建设便宜在官方的《小程序开发指南》中#xff0c;明确说明了为什么要自定义标签以及这么设计的原因和带来的好处#xff0c;说明如下#xff1a; 6.1.2 管控与安全 基于Web 技术来渲染小程序是存在一些不可控因素和安全风险的。这是因为Web技术是非常开放灵活的#xff0c;我们可以…在官方的《小程序开发指南》中明确说明了为什么要自定义标签以及这么设计的原因和带来的好处说明如下 6.1.2 管控与安全 基于Web 技术来渲染小程序是存在一些不可控因素和安全风险的。这是因为Web技术是非常开放灵活的我们可以利用JavaScript 脚本随意地跳转网页或者改变界面上的任意内容。
我们原本定义了一套内置组件以提供统一的体验用户进入小程序时小程序代码包会被拉到本地第七章将会详细介绍这使得小程序可以离线浏览只要小程序开发者把一些应用数据缓存到了本地但要是开发者通过JavaScript 把渲染小程序的 WebView 跳转到其他在线网页这个体验就变得非常糟。
除此之外我们也提供一种可以展示敏感数据的组件这些数据只能被展示开发者并不能拿到数据若开发者可以通过JavaScript 操作界面DOM树从而直接获取这些敏感数据那小程序毫无安全可言。
为了解决管控与安全问题我们必须阻止开发者使用一些浏览器提供的诸如跳转页面、操作DOM、动态执行脚本的开放性接口。假设我们一个一个禁止那势必会进入一个攻防战这是因为 JavaScript 的灵活性以及浏览器接口的丰富性我们很容易遗漏一些危险的接口而且就算被我们找到所有危险的接口也许在下一次浏览器内核更新而新增了一个可能会在这套体系下产生漏洞的接口这样还是无法完全避免。
因此要彻底解决这个问题我们必须提供一个沙箱环境来运行开发者的JavaScript 代码。这个沙箱环境不能有任何浏览器相关接口只提供纯JavaScript 的解释执行环境那么像HTML5中的ServiceWorker、WebWorker特性就符合这样的条件这两者都是启用另一线程来执行 JavaScript。但是考虑到小程序是一个多 WebView 的架构每一个小程序页面都是不同的WebView 渲染后显示的在这个架构下我们不好去用某个WebView中的ServiceWorker去管理所有的小程序页面。
得益于客户端系统有JavaScript 的解释引擎在iOS下是用内置的 JavaScriptCore框架在安卓则是用腾讯x5内核提供的JsCore环境我们可以创建一个单独的线程去执行 JavaScript在这个环境下执行的都是有关小程序业务逻辑的代码也就是我们前面一直提到的逻辑层。而界面渲染相关的任务全都在WebView线程里执行通过逻辑层代码去控制渲染哪些界面那么这一层当然就是所谓的渲染层。这就是小程序双线程模型的由来。 6.2 组件系统 小程序的视图是在WebView里渲染的那搭建视图的方式自然就需要用到HTML语言。如果我们直接提供HTML的能力那前面章节所介绍的为解决管控与安全而建立的双线程模型就成为摆设了。开发者可以利用A标签实现跳转到其它在线网页也可以动态执行JavaScript等。除管控与安全外还有一些的不足之处
l 标签众多增加理解成本
l 接口底层不利于快速开发
l 能力有限会限制小程序的表现形式。
因此我们设计一套组件框架——Exparser。基于这个框架内置了一套组件以涵盖小程序的基础功能便于开发者快速搭建出任何界面。同时也提供了自定义组件的能力开发者可以自行扩展更多的组件以实现代码复用。
总结为了管控和安全建立一套自己的生态体系以提供最大限度的控制遇到问题处理起来也会更及时
这和经常问的另外一个问题类似为什么我不选择开源框架而选择自研