声明:本文是对美团技术团队唐笛《深入理解JSCore》一文的学习笔记,如要查看原文,请点击文末的“阅读原文”。
动态化作为移动客户端技术的一个重要分支,一直是业界积极探索的方向。目前业界流行的动态化方案,如Facebook的React Native,阿里巴巴的Weex都采用了前端系的DSL方案,而它们在iOS系统上能够顺利的运行,都离不开一个背后的功臣:JavaScriptCore(以下简称JSCore),它建立起了Objective-C(以下简称OC)和JavaScript(以下简称JS)两门语言之间沟通的桥梁。无论是这些流行的动态化方案,还是WebView Hybrid方案,亦或是之前广泛流行的JSPatch,JSCore都在其中发挥了举足轻重的作用。作为一名iOS开发工程师,了解JSCore已经逐渐成为了必备技能之一。
为了大家能更好的开发出一些高质量、高性能的小程序,这里带大家理解一下小程序在不同端上架构体系的区分,更好的让大家理解小程序一些特有的代码写作方式。
作为微信小程序底层 API 维护者之一,经历了风风雨雨、各种各样的吐槽。为了让大家能更好的写一手小程序,特地梳理一篇文章介绍。如果有什么吐槽的地方,欢迎去 developers.weixin.qq.com/ 开发者社区吐槽。 01 简述小程序的通信体系 为了大家能更好的开发出一些高质量、高性能的小程序,这里带大家理解一下小程序在不同端上架构体系的区分,更好的让大家理解小程序一些特有的代码写作方式。 整个小程序开发生态主要可以分为两部分: · 桌面 nwjs 的微信开发者工具(PC 端) · 移动 AP
之前啊我们公众号的内容要求可严了,要么技术上有原创性,要么是程序员小哥哥们自己实践经验的总结。可是你们知道吗,美团技术同学都可爱学习了,内部Wiki里积累了好多好多深入研究和学习性的技术文章。美美一直觉得这些对其他公司的工程师小哥哥也是好东西,所以就和院长说选出一些能对外分享的,开个新专栏吧。围着他说啊说啊好半天,他老人家终于同意啦~~
1.通过了解浏览器线程的一些知识我们知道浏览器进程中GUI线程是与JS引擎线程互斥的。 2.小程序的架构是JsCore执行js逻辑代码+webview页面渲染双线程,两个线程并不互斥。
碰巧RN也是通过JsCore与手机的原生语言通信的,简单来说它只不过是以 JavaScript 的形式告诉 Objective-C /java该执行什么代码 反正我们知道它能直接调用微信本身的控件就行了
总体来说,JavaScriptCore为原生编程语言Objective-C、Swift提供调用JavaScript程序的动态能力,还能为JavaScript提供原生调用能力以弥补前端能力的不足。正因JavaScriptCore的这种桥梁作用,故而出现了出多使用JavaScriptCore开发APP的框架,比如ReactNative、Weex、小程序、WebView Hybrid等框架。
public static void main(String[] args) {
页面渲染 1.在渲染层,宿主环境会把WXML可以先转成JS对象,然后再渲染出真正的Dom树。 2.在逻辑层发生数据变更的时候,需要通过宿主环境提供的setData方法把数据从逻辑层传递到渲染层 3.对比前后差异,把差异应用在原来的Dom树上,渲染出正确的UI界面
有赞零售 App 上线至今,为了降低商家硬件迁移成本,同时提高商家硬件采购的选择多样性,陆陆续续对接了市面上 Top 20+ 的智能硬件,包括打印机、电子秤、扫码枪、摄像头、一体机等, 在硬件对接过程中团队投入了大量的人力进行支持,受限于硬件架构不成体系、硬件类目划分不清晰、通信协议多样性、多端重复适配造轮子等因素,导致硬件线上问题较多,且投入的开发成本很高,也影响了商家的正常经营。为了彻底解决这些问题,提高新设备对接效率,并确保硬件交互质量,有赞零售移动团队对硬件体系做了几次重构演进,目前一款新硬件的对接与适配成本已经控制在一到两个工作日内,相较2019年人力投入降低了50%。同时通过不断完善硬件 FAQ 文档,协助商家与硬件支持同学快速定位解决问题,硬件开发同学直接处理的线上问题数量相较2019下半年环比下降55%,技术支持同学对接的硬件问题也环比下降了33%,提效比较明显。
记录下H5与小程序技术方案的主要差异 H5 小程序 运行环境 浏览器/webview 三种环境:IOS(JSCore+WKWebView)安卓(JSCore+Chrome57/V8+Chrome67)开发者工具(nw.js+Chrome60) 系统权限 弱(重度依赖浏览器、兼容性有限) 强(微信开放API蓝牙、WiFi、NFC、罗盘...) 直接分享朋友圈 能(分享链接容易被屏幕) 不能(分享卡片的体验好) 扫码识别 能 能 支付能力 多种 微信支付 性能 一般(需要请求很多资源) 好(微信做了解析优化
::: tip 通信方式 系统层的WeixinJsBridage 两边提供的 evaluateJavascript 所实现。 即用户传输的数据,需要将其转换为字符串形式传递,同时把转换后的数据内容拼接成一份 JS 脚本,再通过执行 JS 脚本的形式传递到两边独立环境。
所谓的“浏览器内核”无非指的是一个浏览器最核心的部分——“Rendering Engine”,直译这个词汇叫做“渲染引擎”,不过我们也常称其为“排版引擎”、“解释引擎”。这个引擎的作用是帮助浏览器来渲染网页的内容,将页面内容和排版代码转换为用户所见的视图。
最近接触了较多关于H5页面的测试,H5页面的测试除了业务逻辑功能测试外,其他部分的测试方法基本是可以通用的,在此对H5页面和小程序的一些通用测试方法进行总结分享给大家。
[简约webAPI]分别以asp|jsp|php简单粗暴实现webAPI,输出json数据
现阶段,小程序越发的火,微信也给了巨量的流量诱惑。很多公司都有进行小程序开发。 那么小程序可以进行自动化测试吗? 当然是可以的!
微信小程序开发者和开发需求者必读的40条技巧分享: Q:为什么脚本内不能使用window等对象 A:页面的脚本逻辑是在JsCore中运行,JsCore是一个没有窗口对象的环境,所以不能在脚本中使用window,也无法在脚本中操作组件 Q:为什么 zepto/jquery 无法使用 A:zepto/jquery 会使用到window对象和document对象,所以无法使用。 Q:wx.navigateTo无法打开页面 A:一个应用同时只能打开5个页面,当已经打开了5个页面之后,wx.navigateTo不能正
微信小程序开发者者必读,内容涵盖小程序开发实战需要注意的40个技术点,供大家参考: Q:为什么脚本内不能使用window等对象 A:页面的脚本逻辑是在JsCore中运行,JsCore是一个没有窗口对象的环境,所以不能在脚本中使用window,也无法在脚本中操作组件 Q:为什么 zepto/jquery 无法使用 A:zepto/jquery 会使用到window对象和document对象,所以无法使用。 Q:wx.navigateTo无法打开页面 A:一个应用同时只能打开5个页面,当已经打开了5个页面之后,
A:页面的脚本逻辑是在JsCore中运行,JsCore是一个没有窗口对象的环境,所以不能在脚本中使用window,也无法在脚本中操作组件
技术点:unity导出的目标工程Unity-iPhone.xcodeproj 与原生进行融合
来源:微信公众号:Coding学院(ID:ke-coding) 目录 ---- 一、小程序介绍和演示 二、小程序架构 三、小程序视图层 四、小程序逻辑层 五、小程序开发经验 正文 ---- 一、小程序特点 二、小程序架构 三、小程序视图层 1.View - WXML WXML(WeiXin Markup Language) 支持数据绑定 支持逻辑算术、运算 支持模板、引用 支持添加事件(bindtap) 2.View - WXSS WXSS(WeiXin Style Sheets) 支持大部分CS
导语 微信小程序开发者和开发需求者必读,内容涵盖小程序开发实战需要注意的40个技术点,供大家参考: 问答 Q Q1:为什么脚本内不能使用window等对象 A:页面的脚本逻辑是在JsCore中运行,J
小程序的渲染层和逻辑层分别由两个线程管理,两个线程的通信由微信客户端(Native)做中转。
官方文档:https://developers.weixin.qq.com/miniprogram/dev/framework/quickstart/framework.html#渲染层和逻辑层
css样式不能引用本地图片资源,只能引用线上资源(background-image),引用本地图片资源只能用<image>标签。
导语 微信小程序的公测掀起了学习小程序开发的浪潮,天生跨平台,即用即走、媲美原生体验、完善的文档、高效的开发框架,小程序给开发者带来了很多惊喜。通过这篇文章和大家一起分析小程序的架构,分享开发经验。 一、小程序介绍 1、小程序特点 2、小程序演示 视频地址: https://v.qq.com/x/page/w0353d7co6y.html 3、小程序为什么那么快 Page Frame Native预先额外加载一个WebView 当打开指定页面时,用默认数据直接渲染,请求数据回来时局部更新 返回显示历史
JSContext是native代码执行JS代码的上下文,native可以向JSContext中注入方法和属性以供JS调用,相当于在JS的window对象上挂属性和方法,示例代码:
上篇文章大致总结了前端开发人员在开发过程中需要考虑的问题。今天聊一下Taro开发小程序扩展全局调用API的实践。
其实,小程序开发过程中我们面对的是iOS和Android微信客户端和辅助开发的小程序开发者工具。根据官方文档,这三大运行环境也是有所区别的:
吃鸡手游的成功,让手游多了一种引擎选择:UE4。于是陆续有人来问xLua的UE4版本。要做UE4版本,由于宿主语言的不同其实相当于完全重新开发。我想既然都重新开发了,能否重新考虑当年xLua的一些技术决策点,放在UE,放在那么多年后的今天是否仍然合适。
Weex 是一个动态化的高扩展跨平台解决方案,也就是说开发人员只需要写一份代码就可以同时在移动端(Android端、iOS端)、Web端运行,这有别于React Native,从技术实现上也略有区别。
原文链接:https://godbasin.github.io/2018/09/08/wxapp-page-and-navigate/
懒加载,前端人都知道的一种性能优化方式,简单的来说,只有当图片出现在浏览器的可视区域内时,才设置图片正真的路径,让图片显示出来。这就是图片懒加载。
在之前的几篇文章里,我们讨论了MINA的一些原理。晚上在想着怎么结合Vux + Virtual Dom实现一个名为WINV框架的时候,在探索WCC功能才发现:自己又忽略掉了一个很重要的性能优化细节。这个WCC如果内置在浏览器里,就是可以实时的将DOM转换为以JSON表示的DOM。 先将DOM转换为Virtual Dom,再转换回去的优点是可以分离数据和样式。这也就是为什么React的学习成本高的原因之一了。 Virtual Dom的表现形式 为了将真实的DOM转换为Virtual DOM,我们需要将DOM以
之前公司技术总监说小程序就是个浏览器,有其它同事也有说过小程序类似浏览器这种观点。通过这篇文章来探讨一下这种说法。
| 导语 前端的框架太多让人眼花缭乱,很多相似的地方,优秀的地方大家都会借鉴,同时又会有各自的一些特点。小程序也好,其他框架也好,理解他们的设计缘由、实现原理,还是能学到很多很多东西的。 技术选型 目前来说,页面渲染的方式主要有三种: 一、Web 渲染。 二、Native 原生渲染。 三、Web 与 Native 两者掺杂,也即我们常说的 Hybrid 渲染。 前面也说过,小程序最终的呈现形式,是 WebView + 原生组件,Hybrid 方式。我们结合之前对小程序的期望来看: 开发门槛:Web
这篇文章不聊具体的技术内容,只是蹭蹭今天 iOS 领域最大的一个热点,关于一些应用收到 Apple 警告的问题。
作者:billgong,腾讯IEG前端开发工程师。 微信小程序,简称小程序,英文 mini program。是一种不需要下载安装即可在微信中使用的应用,用户扫描小程序码或搜索小程序即可打开,触手可及,用完即走,不用关心是否安装太多应用的问题。 小程序技术演进 内部开放微信原生能力 使用 WeixinJSBridge 预览图片 此类 API 最初是提供给腾讯内部一些业务使用,很多外部开发者发现了之后,依葫芦画瓢地使用了,逐渐成为微信中网页开发的事实标准。 JS-SDK 发布 2015 年初,微信发
小程序是一种不需要下载安装即可使用的应用,它实现了应用「触手可及」的梦想,用户扫一扫或者搜一下即可打开应用。也体现了「用完即走」的理念,用户不用关心是否安装太多应用的问题。应用将无处不在,随时可用,但又无需安装卸载。 想要理解小程序,不得不提一下张小龙的演讲。在 2016 年 1 月 11 日的微信公开课 PRO 版现场,张小龙献出了他的首次公开演讲,阐述了自己对于微信的设想,还讲述了微信的四个价值观。 一切以用户价值为依归:大家都明白用户很重要,但真正把用户价值第一做到产品里面去的不多,大部分只是把这个作
原文链接:https://godbasin.github.io/2018/09/02/wxapp-technology-architecture/
前端的框架太多让人眼花缭乱,很多相似的地方,优秀的地方大家都会借鉴,同时又会有各自的一些特点。小程序也好,其他框架也好,理解他们的设计缘由、实现原理,还是能学到很多很多东西的。
Web技术是非常开放灵活的,我们可以利用JavaScript脚本随意地跳转网页或者改变界面上的任意内容。
接触小程序有一段时间了,总得来说小程序开发门槛比较低,但其中基本的运行机制和原理还是要懂的。“比如我在面试的时候问到一个关于小程序的问题,问小程序有window对象吗?他说有吧”,但其实是没有的。感觉他并没有了解小程序底层的一些东西,归根结底来说应该只能算会使用这个工具,但并不明白其中的道理。
哈喽大家好,本期是微信小程序专栏第十一期,本期主要是通过将post.wxml页面的数据移植到post.js中来学习数据绑定。 注意:每期内容是连载呢,建议大家可以看看往期内容,更好理解噢~
领取专属 10元无门槛券
手把手带您无忧上云