公司:58同城
58同城(NYSE:WUBA),简称58,是一家位于中国北京市的生活服务及分类信息网站,以在地服务为主,举凡租房、招聘、交友、水电、二手交易等等,由北京五八信息技术有限公司拥有,创始人是姚劲波,成立于2005年12月12日。该网站是中文最大的生活信息网站,该网站的口号是“一个神奇的网站”。
SDK在58集团App体系下Swift混编改造实践
目前58的iOS团队维护了包含58同城、58同镇、赶集网、招才猫、安居客、新英才、车商通等在内的十几款App,为了降低维护成本,团队将一些基础功能进行了组件化改造,提供了大概20个通用的自研基础组件。不同的App对基础组件的使用情况各不相同,同时为了解决部分垂直业务在跨App维护时多App底层差异的问题,团队在基础组件的基础上又增加了中间件层,使依赖关系的复杂度进一步增加。上层逻辑的Swift改造需要底层基础库的支持,加上全面推进Swift的改造,将涉及大量的业务改造,各层模块之间的协同也是不小的挑战。
奇葩说框架之Vue3渲染系统
- vue文件是如何转换成DOM节点,并渲染到浏览器上的?
- 数据更新时,整个的更新流程又是怎么样的?
奇葩说框架之React编译原理
都说JSX会被babel编译成React.createElement方法,那它具体是怎么实现的呢?在React17版本中,又做了哪些改进呢?带着这些问题,我们去React的源码世界里去一探究竟!
奇葩说框架之SFC编译原理
什么是SFC?一个SFC是如何变成浏览器上可执行代码的?点进来,5分钟搞懂。
奇葩说框架之 Vue更新机制
说到Diff,我们可能首先想到的就是Vue或者React中的一种更新算法,目的就是为了找出差异更新DOM树。而算法本质上是一类问题的最优解,Diff本身是差分、不同的意思,还有诸如字符串或者JSON的Diff,Linux系统中经典的文件Diff。这里我们要探讨的其实就是树的Diff,它的发展历程其实是经过了很长的一段时间。
奇葩说框架之 react组件及逻辑复用
代码逻辑复用 是我们开发人员减少代码重复度,进行代码优化的一个重要因素,上期我们的同学分享了关于 Vue 框架的相关逻辑复用的方法及原理,本期我们一起来了解下 React 框架中的逻辑复用。
基于Seq2Seq的信息抽取方法在多轮对话场景的应用
多种特征提取器和优化方案哪种方案效果最优呢?
奇葩说框架之 vue组件及逻辑复用
身为前端工程师,势必听过这个问题:“Vue 与 React 有什么区别?” 的确,Vue和React都是目前最流行、生态最好的框架,整体的功能也非常相似。
对此,我们组织了一次 diff 主题分享,采用奇葩说的模式,针对同一功能讨论下 vue 与react 的异同。本月主题将围绕以下角度带大家更深刻的认识vue和react框架: 组件及逻辑复用,diff算法,编译构建及运行,渲染。
vue与react都推崇组件式的开发理念,那么我们第一篇从组件开始,话不多说,直接进入本篇的正题:vue 组件及逻辑复用的源码解析。
「懒加载」的瀑布流组件你可知晓?
瀑布流布局算是一种比较流行的布局,参差不齐的多列结构,不仅能节省空间,还能在视觉展示上错落有致不拘一格。
Fair在安居拍房App中的实践
随着今年政府对互联网的监管,在不少时候一个紧急需求只给1~2天整改上线,而且整改过程中需求也不是很明确,相关部门也不会给一个详细的需求文档让我们去开发,大家都是“猜测”需求的内容。在这种场景下,如果App具备动态更新的能力,会给公司减少很大的成本。面对需求不确定和紧急修改页面部分元素的能力,给予了动态化最合适的使用场景,而不只是Fix几个BUG。
Fair在58集团内的部分Flutter App中已经落地,终使集成Fair后的App获得了动态化的能力。以下文章内容主要以安居拍房App为例,介绍集成Fair的架构、业务场景所需的能力预埋,以及如何进行原生和动态化代码的维护,持续发挥Flutter的性能。
你真的了解vue模版编译么?
本文的初衷是想让更多的同学知道并了解vue模版编译,所以文中主要以阶段流程为主,不会涉及过多的底层代码逻辑,请耐心观看。
使用“黑魔法”优雅的修改第三方依赖包
Vue项目中使用的element-ui,由于弹窗里表单项太多,一些表单项会在可视范围之外。校验表单时,如果未通过校验的表单项在可视范围外,用户感知不强。所以需要在表单校验未通过时滚动到第一个未通过校验的表单项那里,翻看element-ui文档,发现未提供该API。
起初想到的方案有两种:
- 在业务中封装函数,表单校验失败时调用该函数,根据表单校验失败的className,获取第一个校验失败的dom元素,滚动到指定的dom元素位置。但是如果页面存在多个form表单需要做区分,会增加我们的一个工作量,并且不够优雅。
- 修改element-ui的源码,增加一个API。但是在平台编译时如果重新执行npm install时代码会被覆盖,并且团队协作时也会遇到这个问题,团队开发中有诸多不便。
后面经过一顿搜索后,发现一个“黑魔法”的解决方案。并且该方案上手简单、便携、且一劳永逸。
Fair热更新设计与实现
由于客户端每次更新的时候,都需要经过发布平台的审核,不管是需要紧急修复的bug,还是想要快速上线的需求,都绕不过审核这个问题。而很多开发者都会遇到一个问题,就是审核时间过长。审核过长可能会导致bug不能及时修复,严重者造成巨大的经济损失。也可能导致新的业务无法及时上线,错失业务的最佳推广时机。所以,长久以来,客户端都存在一个热门的话题,那就是热更新。
使用hooks替代redux实践
具体能否完全代替redux,还有待考证,本文仅提供思路。
Fair 逻辑语法糖设计与实现
语法糖(英语:Syntactic Sugar )是指 计算机语言 中添加的某种语法,这种语法对语言的功能没有影响,但是更方便程序员使用。语法糖让程序更加简洁,有更高的可读性。Fair 语法糖 并不是为Dart语法提供易用性的接口,而是为了让Fair在布局和逻辑混编场景下构建更方便。
Fair下发产物-布局DSL生成原理
Flutter在release环境是以AOT模式运行的,这就决定了我们要做动态化的话无法简单的通过动态下发dart代码执行的。根据Fair团队的前期调研,我们对布局动态化和逻辑动态化的实现采用了两套不同的实现方案,对于布局部分,我们在解析dart源文件之后生成DSL产物下发,然后在端上解析DSL构建布局的方式,逻辑动态化的部分,我们采用的是dart源码转js下发的方式。