大转转FE

其他

这Proxy能干啥?

queryDatabase,在实际应用中,这里会是真实的数据库查询操作。这个函数接受一个查询字符串作为参数,打印出执行的查询,并返回一个包含查询结果的字符串。然后,我们使用
3月19日 上午 9:00
其他

转转前端周刊第九十期

转转前端周刊本刊意在将整理业界精华文章给大家,期望大家一起打开视野如果你有发现一些精华文章想和更多人分享,可以点击我们的公众号名称,将文章链接和你的解读文案发给我们!我们会对内容进行筛选和审核,保留你的推荐人署名,分享给更多的人1、用
2023年11月27日
其他

微前端时代:打造高效、灵活的前端开发体系

微前端的性能优化在微前端架构中,性能优化是一个不能忽视的重要环节。特别是在同时运行多个微应用程序的情况下,需要从多个角度对性能问题进行深入分析。以下是一些常见的性能瓶颈以及相应的优化策略:4.3.1
2023年11月10日
其他

转转Hybrid体系建设历程-客户端视角

什么接口?参数是什么?有没有问题?是离线包引发的问题吗?是否可以通过关闭和打开离线包进行验证和定位问题?···一方面是我们的日志上报还不够全面,另一个是没有方便的小工具可以直接查看,只能通过本地调试
2023年10月18日
其他

前端视角下的转转客服通信过程

当你在转转咨询客服时,你的问题是如何发送到客服的?客服又是如何快速精准回答的呢?这篇文章将从前端的视角,带你了解转转客服通信的整体流程。客服通信的整体架构首先看一看用户与客服通信的整体架构,如下图「入口管理」:不同的客服入口,比如商品详情页、订单详情页、客服中心等,都会相应的机器人或者客服来处理用户的咨询。入口管理用来配置客服入口的不同参数,用以路由到不同的客服服务。「用户服务」:用户服务主要包括了机器人会话、人工会话、用户评价等。机器人会话是指用户与智能机器人聊天,用于快速回复用户一些基础问题。人工会话是指用户与客服的对话,通常是处理一些较复杂的咨询。无论是机器人还是人工,用户都可以对服务进行评价,这也是衡量客服服务水平的一个重要指标。「客服服务」:客服服务主要包括机器人管理和客服工作台。机器人管理是指客服人员对机器人的配置,比如业务线和订单识别规则、机器人的回复、相似问题的匹配逻辑等。客服工作台是指客服人员在工作时操作的界面,也是客服系统中最重要的一个系统,包含了客服与用户沟通的
2023年3月31日
其他

webpack项目瘦身之移除无依赖文件

背景 作者在开发过程中,有遇到以下此场景: PM:请把关于出价场景的逻辑优化下,在出价前进行判断是否命中风控。 FE:安排。 在开发过程中,经常会通过搜索关键词来快速找到对应文件。此次也不例外,当在代码仓库搜索时,结果却有多个对应文件。经过长时间的排查验证发现有些文件是没有被引用的,影响了开发效率。能不能通过一种方式来提高此类问题的开发效率?拆解问题表面原因 项目仓库存在未引用的文件,干扰开发人员的判断,影响开发效率。未引用的文件一开始就是未被引用的?深层原因 人为原因,需求迭代过程中,未及时移除或者标记无用文件。 对于深层原因,不再叙述,因地制宜。 接下来主要聊聊表面原因如何解决,有没有方法可以将仓库中无用的文件检索出来并适当移除?分析整理 构建工具:webpack 技术栈:vue、react 基于这些,可以划定解决的方向:基于webpack搭建的vue或者react项目。 webpack官网有这么一段话: 本质上,webpack
2023年2月17日
其他

多状态页面中的 mock 方案

后期维护阶段也不容易构造对应状态的数据,导致排查页面问题比较耗时。另外一个问题就是从头熟悉业务的话成本比较高,如果有一个直观的页面能够看到页面样式会好很多。以上就是设计一个多状态
2023年1月13日
其他

转转Hybrid离线包治理与优化实践

90%+呢?针对开启率低的问题,经过进一步的相关人员咨询和对离线包整个体系的原因分析,发现主要因素来源于:项目回滚会直接关闭该项目的离线包功能(也就是离线包服务不支持业务项目的回滚)由于某些项目在
2022年8月9日
其他

Vue3.0 响应性原理

作为响应性原理的实现,该方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。Object.defineProperty(obj,
2022年6月14日
其他

一起认识下浏览器的5种观察器

“图片懒加载”,这个词语想必大家再熟悉不过了。传统的实现方法是,监听scroll事件,获取img元素相对于视口的顶点位置el.getBoundingClientRect().top,只要这个值小于浏览器的高度window.innerHeight就说明进入可视区域,当图片进入可视区域时再去加载图片资源。这种方法的缺点是,由于scroll事件密集发生,计算量很大,容易造成性能问题。目前浏览器API中的
2022年6月10日
其他

自己实现一个大文件切片上传+断点续传

,这样即可绕过限制进行上传。那有没有更严格的限制方式呢?当然是有的。那就是通过查看文件的二进制数据来识别其真实的文件类型,因为计算机识别文件类型时,并不是真的通过文件的后缀名来识别的,而是通过
2022年6月7日
其他

Vue灰度发布新功能的那些事

}这里直接这样加载页面级组件会导致此文件体积加大,可以将页面组件的加载方式改为异步组件,提升页面加载速度。components:
2022年4月19日
其他

如何成为一个优秀的复制粘贴工程师

组件复用的困境在平时的搬砖过程中,当我们拿到新需求的设计稿时,为了加快开发的速度,通常会看看是否有曾经写过的组件可以复用。如果能找到类似的组件,有很大概率可以在原有的基础上修修补补就能直接用了。对于自己最常开发的工程,当看到设计稿往往可以立马想起来,某个可以复用的组件位于工程的哪个位置。但是随着工程的壮大,从
2022年3月23日
自由知乎 自由微博
其他

搭建场景下的页面编译提速方案探索

不可能很快。事实上如果公司搭建的页面量不大,搭建服务调用处于较低量级时,是可以选择这种方案的,优势也很明显:组件开发完毕发布即可,构建服务无需对组件做额外处理。基于webpack组件预打包方案
2022年1月26日
其他

转转Hybrid-SDK重构和实践

管理等存在标准不统一、更新不及时的问题。随着转转/找靓机/采货侠等多环境开发场景越来越多,适配不同场景极大的影响了业务迭代效率。所有我们决定重新规划
2022年1月5日
其他

复杂场景下唤起App实践

可以看出,社区开源的方案在设计各有差异,但是可以看出都采用了单一职责原则和功能模块化的设计思想。在架构设计上第二个更清晰更简洁,相对较有参考价值,所以我们选择基于此进行二次开发。
2021年12月9日
其他

Web Worker的正确打开方式

Workers,Web应用程序可以在独立于主线程的后台线程中,运行一个脚本操作。这样做的好处是可以在独立线程中执行费时的处理任务,从而允许主线程(通常是UI线程)不会因此被阻塞/放慢。使用场景Web
2021年11月12日
其他

WebIM原理解析

自身网关压力,会定时清除没有数据收发的连接,具体不在这里详情阐述。但这个过程服务端和用户端都无法感知,从而会影响消息收发。下图(图9)是一些运营商的NAT超时时间图9常用心跳方案TCP
2021年7月8日
其他

见微知著 - 转转离线包设计实践

一、概念离线包,就是在有网络的情况去下载到本地的压缩包,在无网的时候可以进行加载。往常来看,我们要搞离线包,主要有下面两个目的:提升用户体验:通过离线包的方式把页面内静态资源嵌入到应用中并发布,当用户第一次开启应用的时候,就无需依赖网络环境下载该资源,而是马上开始使用该应用。实现动态更新:在推出新版本或是紧急发布的时候,您可以把修改的资源放入离线包,通过更新配置让应用自动下载更新。因此,您无需通过应用商店审核,就能让用户及早接收更新。回到纯前端的领域,H5的离线包,顾名思义就是把页面的html、js、css等静态资源,在有网络的情况下压缩打包预先下载到本地,然后通过客户端的解析,直接从本地加载并运行,从而最大程度地摆脱网络环境对
2021年5月28日
其他

能让你纵享丝滑的SSR技术,转转这样实践

像jsp、asp、php等各种后台模板生成的页面,前端都是拿到整张页面,不用自己去拼接DOM.后来随着前后端分离开发模式,衍生出了最主要的两种渲染方式CSR以及SSR.CSR
2021年4月23日
其他

来,一起偷偷优化前端请求性能,然后惊艳所有人

前言在这互联网高速发展的时代,人们对于网页打开的速度要求越来越高。加载时间过长,兼容处理不够全面等很容易造成用户流失。作为一名前端开发,优化用户体验是一件永无止境的事情,没有最优,只有更优。前端性能优化方向有很多,今天主要讲解在网络请求上的优化。因涉及的优化方向较多,对于具体细节不再赘述。总体按以下三个方向优化:请求数据控制请求体积减少请求尽其所能~~请求之数量减少减少DNS查询DNS查询首先查看浏览器缓存是否存在,不存在则访问本机DNS缓存,再不存在则访问本地DNS服务器,在这期间浏览器是无法下载其他任何内容资源,这是一笔不小的开销。所以理想的方法是将静态资源尽可能的放在同一个域下,这样就只会发生一次DNS查找,但这也会引发另一个问题,浏览器的并行下载数量是有限制的,不同的浏览器有所差异,超出限制就会排队等待,建议一个站点使用2-4个域请求资源,不要太分散,也不要太集中。请求合并一个网页加载完成所需要的请求数量少则几十,多则上百。这里面包括XHR,JS,CSS,Img,Font,Doc等等。不同的浏览器对请求的并发数量都是有限制的,如果你已升级HTTP2.0,那么这个优先级可以放后。针对同类型资源排查是否有合并请求的可能性,合并的前提也要考虑业务场景及合并后的体积是否会过大。图片资源小图标考虑雪碧图(CSS
2021年4月20日
其他

门神——转转前端代码校验系统

日志是系统通过遍历插件扫描项目的返回值,用于判断是否需要拦截项目上线。目标在于发现项目中不被察觉的低级错误和潜在的安全问题。插件根据自己的规则,返回统一的返回值,分为三个级别:error
2021年2月20日
其他

埋点自动收集方案-路由依赖分析

为什么公共组件Card在收集依赖的时候,只收集到一次?这个问题如果不解决,意味着只有首页的商品点击埋点被收集到,其他引用这个组件的页面商品点击就会丢失。有问题,就有机会,机会意味着解决问题的可能性。
2020年11月6日
其他

埋点自动收集方案-概述

另外公司的现状就是有自己的数据平台,但如果采用全埋点上报,在数据分析层面会有非常大的负担,而且各业务线本身采用的是代码主动上报方式。
2020年11月5日
其他

SSR同构降级策略

部分代码在该文件中,可以根据请求url参数、err异常错误、获取全局配置文件等方式,判断是否执行SSR的renderToString方法构建Html字符串,还是降级为CSR直接返回SPA
2020年10月16日
其他

iframe 接班人-微前端框架 qiankun 在中后台系统实践

ReactDOM.unmountComponentAtNode(document.getElementById('root-content')
2020年9月25日
其他

umi中后台项目实践

新建项目根据公司内的脚手架工具选择中台模板可快速创建带有权限、布局、代码规范、通用页面等功能的初始项目,可以很大的避免重复工作。
2020年9月23日
其他

转转Hybrid体系建设

环境下载)了各业务全量包的基础上,为了减少每次下载更新的资源包的体积,我们采用了增量更新策略。该策略具体为:每次发布版本的时候,如果此业务线之前已有离线包,则通过离线系统生成差分包放在
2020年9月14日
其他

唤起 App 在转转的实践

唤端的细节判断比较多,一篇文章很难说清楚,我们把转转使用的一个稳定版本的唤端库开源,方便大家交流学习,代码写的一般,主要供大家参考,同时也欢迎大家对代码进行吐槽,你们的吐槽是我们重构的源动力
2020年9月7日
其他

离线预渲染OPR:0成本接入 媲美SSR效果

script:并行下载,按照书写顺序执行,不阻碍DOM渲染,阻碍DOMContentLoaded时间async
2020年7月7日
其他

Nuxt实现的SSR页面性能优化的进一步探索与实践

王金录前言本文之前,先简单介绍以下几个概念:SSR指服务端渲染,即页面是通过服务端渲染生成后返回给客户端的,SSR主要为了提高页面加载速度,改善用户体验,也可用于SEO搜索引擎优化。Nuxt.js
2019年5月22日
其他

Node.js微服务实践(一)

的优势,创建了一个新的服务端技术栈,从而改变了工程师们编写新软件的方式。那么,将这些语言的技术栈结合起来会有什么问题吗?平心而论,这是一个优势:
2019年3月1日
其他

持续迭代的电商可视化运营页面生成系统

对于分享及其他native拓展能力来说,各个app提供的API并不相同,甚至在某些容器中没有相应的功能,为了让模拟器正常工作,我们需要一种抹平多端差异的公共库,使得各端不会抛出错误。
2019年2月13日
其他

GraphQL-前端开发的利剑与桥梁

'GET,HEAD,PUT,POST,DELETE,PATCH,OPTIONS'}4.开启graphql中间件//config/config.default.jsexports.middleware
2018年12月21日
其他

浅谈react

vnode的更新相对简单,可以简单的理解为对比虚拟dom的nodeName,相同表明真实dom可以复用,只更新属性和子节点即可,不同则创建新的dom并删除掉旧的dom节点。component
2018年12月14日
其他

JavaScript 复杂判断的更优雅写法

}}通过代码可以看到这个按钮的点击逻辑:根据不同活动状态做两件事情,发送日志埋点和跳转到对应页面,大家可以很轻易的提出这段代码的改写方案,switch出场:/**
2018年11月9日
其他

事件循环机制的那些事

console.log(4);});console.log(5);当代码中遇到了异步请求的事件,又该如何执行,根据上面总结的执行机制,又该得到什么样的结果?第一轮循环同样从全局任务入口,遇到宏任务
2018年11月9日
其他

编写支持SSR的通用组件指南

注意:请注意以kebab-case(如:make-red而不是makeRed)传递你的指令。否则,他们将无法被识别!这是vue-server-renderer中的错误(有关详细信息,请看官方文档)。
2018年10月30日
其他

当初要是看了这篇,React高阶组件早会了。

这个高阶组件会直接读取输入组件中的props,state,然后控制了输入组件的render展示 只有在props.time和state.success同时为真的时候才会展示
2018年10月12日
其他

小程序多业务线融合【完整分包业务接入】

作为分包时,所有页面的跳转路径都要加主包的跳转前缀(建议通过包装跳转方法navigateTo、redirectTo、reLaunch、navigateBack实现,建议配合webpack统一处理)
2018年9月5日
其他

大转转FE

/zh|en/)4]减少请求数manifest.js文件内联(app.css可以自行选择,当小于10k是最好内联),webpack推荐配置如下:
2018年5月11日
其他

知心王姐小饭桌 IM消息应用开发:一看看懂Protocol Buffer(协议篇)

PB开发者文档时,看到17年下半年google发布了官方的js的版本,配合websocket,可以与PB协议进行配合,在实现原理上,优于现有的ajax轮询或者是long
2018年3月31日
其他

在 React、Vue项目中使用 SVG

svg使用代码把这些简单的图标画出来,并且,因为这些图标是用代码描述出来的,所以如果想要修改这些图标,例如改变图标的颜色、图标的形状、大小等,都只是改几行代码的事情,非常简单,根本无需美工返工重做。
2018年2月6日
其他

这一次带你彻底了解Cookie

网络上的流量可以被网络上任何计算机拦截,特别是未加密的开放式WIFI。这种流量包含在普通的未加密的HTTP清求上发送Cookie。在未加密的情况下,攻击者可以读取网络上的其他用户的信息,包含HTTP
2017年12月8日
其他

常见函数错误引发的思考

大家看到之后,第一反应肯定会认为是个语法错误,可是自己仔细想想,这是什么原因?似乎还不能解释清楚,好奇宝宝模式立即启动,经过查阅相关资料得到了答案,接下来我们一起来探讨下其中的原理。
2017年12月1日
其他

实战系列之Node.js玩转Java

java.callStaticMethodSync('com.nearinfinity.nodeJava.MyClass',
2017年10月5日
其他

你做的拷贝是真的深拷贝吗

所以深拷贝并不是简单的复制引用,而是在堆中重新分配内存,并且把源对象实例的所有属性都新建复制,以保证复制的对象的引用不指向任何原有对象上或其属性内的任何对象,复制后的对象与原来的对象是完全隔离的。
2017年9月1日