• 【第1710期】支付宝移动端 Hybrid 解决方案探索与实践
    Hybrid 方案借助移动开发平台 mPaaS 对外输出,通过 mPaaS 平台,让大家也可以去接触使用到支付宝的 Hybrid 技术。支付宝需要保证这些业务是合法合规的,保障用户的财产安全。Hybrid 方案同时具有跨平台的特征,一份代码同时发布到 iOS 和 Android,节省开发时间。基于 Hybrid 方案开发的业务可以快速发布,而不用考虑 APP 发版实践,给业务很大的灵活性。相比于 Web 开发,Hybrid 方案提供了丰富的设备 API,让更多业务形态成为可能。支付宝 Hybrid 方案建设与演进目前支付宝有 2 套 Hybrid 方案:HTML5 容器与小程序。安全性由支付宝底层 SDK 保障。
  • 【JS】332- 为什么我更喜欢对象而不是 switch 语句
    正文从这里开始~~~最近,我正在跟我的团队伙伴讨论如何去处理这种需要根据不同的值去处理不同的情况的方法,通常对于这种情况下,人们喜欢使用 switch 语句或者使用很多 if 搭配 else if 条件。如果不将 break 关键字添加到 switch 语句,则不会抛出错误。不管怎样,switch 语句已经讲够了,我们来这里是为了讨论一种不同的方法,我们来这里是为了讨论对象。
  • 百度APP-Android H5首屏优化实践 - 百度App技术
    Python开发点击右侧关注,探讨技术话题!因此我们针对落地页这种H5的首屏展现速度进行了长期优化,本文会详细阐述整个优化思路和技术细节二、方法论通过分析用户反馈,发现当时的落地页从点击到首屏展现平均需要3s的时间,每次用户兴致勃勃的想要浏览感兴趣的文章时,却因为过长的loading时间,而不耐烦的选择了back。Hybrid,顾名思义,即混合开发,也就是半原生半Web的方式。页面中的复杂交互功能采用端能力的方式,调用原生API来实现。成本低,灵活性较好,适合偏信息展示类的H5场景。
  • 【JS】336- 拆解 JavaScript 中的异步模式
    callback、promise、generator、async await 甚至 RxJS。JvaScript 中的各种异步模式Callback我们知道在 JavaScript 中,函数是一等公民,当一个函数传入另外一个函数当作参数时,我们就可以把这个函数叫做 Callback 函数。需要澄清的一点是,Callback 并非都是异步执行的。本文关注异步,如果没有特殊说明,文中提到的 CallBack 指的都是异步回调函数。所谓难以理解,令人生畏的回调地狱就是其具体体现。提到 thunk,你可能马上就会想到 redux-thunk,其对自己的定义如下:Redux Thunk middleware allows you to write action creators that return a function instead of an action.同 Callback 一样,thunk 也有同步和异步之分。同步 thunkForm a synchronous perspective , a thunk is a function that has everything already that it needs to do to give your some value back. you do not need to pass any arguments in, you simply call it and it will give you a value b
  • JS中,如何提高展开运算符的性能
    本文主要讲解怎么提高展开运算的性能,在此之前先简单说说展开运算在数组中的工作原理。展开运算符可以放在数组中的任何位置:constnumbers=[1,2,3];[0,...numbers];//=>[0,1,2,3][0,...numbers,4];//=>[0,1,2,3,4][...numbers,4];//=>[1,2,3,4]现在有一个有趣的问题,展开运算符在数组中的位置是否可以提高性能?要在Chrome中提高展开运算符的性能,只需要将展开操作放到数组的开头就哦了。延伸阅读JS 如何创建、读取和删除cookie50 个JS 必须懂的面试题为你助力金九银十JS 前20个常用字符串方法及使用方式
  • 【JS】341- 移动端滚动穿透的6种解决方案
    鉴于此问题是面试的常客,故特地针对滚动穿透这个疑难杂症,整理了六个解决方案。各方法操作难易不同,分别针对弹层和body是否超出一屏可滚动等不同情况。就能阻止滚动穿透。也就是禁止整个弹窗的touchmove的默认事件,以阻止滚动穿透。适用以下场景:1、body可滚动2、触发弹层出现的按钮可以在任意位置3、弹层可以滚动简单来说,就是适用任何场景解决方案:检测touchmove事件,如果touch的目标是弹窗不可滚动区域就禁掉默认事件,反之就不做控制。但是同样的问题是,需要判断滚动到顶部和滚动到底部的时候禁止滚动。
  • 面试问我:在浏览器输入 URL 回车之后发生了什么?我竟然回答不上来...
    大致流程URL 解析DNS 查询TCP 连接处理请求接受响应渲染页面 01URL 解析 地址解析:首先判断你输入的是一个合法的 URL 还是一个待搜索的关键词,并且根据你输入的内容进行自动完成、字符编码等操作。HSTS由于安全隐患,会使用 HSTS 强制客户端使用 HTTPS 访问页面。在建立连接前,会先进行 TCP 三次握手。否则服务器会按照规则把请求重写到 一个 REST 风格的 URL 上。05浏览器接受响应 浏览器接收到来自服务器的响应资源后,会对资源进行分析。
  • 把 WebAssembly 用于提升速度和代码重用[每日前端夜话0xBC]
    对于名称中带有 assembly 的语言,WebAssembly 是低级的。系统语言都具有两个特性,这使它们适合被编译为 WebAssembly。谈到高性能 Web 代码,WebAssembly 并不是唯一的选择。WebAssembly 的概述可以总结如下。几乎所有关于 WebAssembly 语言的文章都提到把近乎原生的速度作为语言的主要目标之一。WebAssembly 在下载方面也有优势。浏览器将 JS 模块作为文本提取,这正是 WebAssembly 能够解决的低效率问题之一。WebAssembly 中的模块是紧凑的二进制格式,可加快下载速度。同样令人感兴趣的是 JS 和 WebAssembly 如何协同工作。冰雹序列和 Collatz 猜想生产级代码案例将使 WebAssembly 代码执行繁重的计算绑定任务,例如生成大型加密
  • 深入 JS 对象属性
    属性决定JS中对象的状态,本文章主要分析这些属性是如何工作的。可以通过Object.isExtensible() 方法判断一个对象是否是可扩展的。它们是属性具有的字段,就像对象具有属性一样。每个属性都有自己对应的属性描述对象,保存该属性的一些元信息。varobj=Object.definePropertyObject.defineProperties: 该方法直接在一个对象上定义一个或多个新的属性或修改现有属性,并返回该对象。
  • JS和TS中的void[每日前端夜话0xBE]
    每日前端夜话0xBE每日前端夜话,陪你聊前端。void 作为运算符存在于 JavaScript 中,而作为基本类型存在于 TypeScript 中。在这两个世界中,void 的工作机制与大多数人习惯的有点不同。JavaScript 中的 voidJavaScript 中的 void 是一个运算符,用于计算它旁边的表达式。无论评估哪个表达式,void总是返回undefined。在公众号内回复“体系”查看高清大图长按二维码,加大鹏老师微信好友拉你加入前端技术交流群唠一唠怎样才能拿高薪往期精选BootstrapVue 入门JavaScript的工作原理:引擎、运行时和调用堆栈用 TypeScript 开发 Node.js 程序快速上手最新的 Vue CLI 3JavaScript 程序员可以从C ++中学到些什么在同一基准下对前端框架进行比较Edge 拥抱 Chromium 对前端工程师意味着什么?
  • 【JS】347- 理解JavaScript中的变量、范围和提升
    JavaScript中有许多不同的变量属性,以及命名变量时必须遵循的一些规则。在JavaScript中,有三个关键字用于声明变量——var、let和const——每个关键字都会影响代码对变量的不同解释。在JavaScript中,变量中包含的值可以是任何JavaScript数据类型,包括数字、字符串或对象。在今天的JavaScript所基于的ECMAScript 2015 语言规范之前,只有一种方法来声明变量——使用var关键字。JavaScript将记住username表示字符串值sammy_shark。password的值是hunter2,但是我们将其重新分配给了hunter3,这是JavaScript从那时起可以识别的值。命名变量变量名在JavaScript中称为标识符。变量作用域JavaScript中的作用域是指代码的当前上下文,它决定了变量对JavaScript的可访问性。
  • JS异常函数之-箭头函数
    在JS中,箭头函数可以像普通函数一样以多种方式使用。出于箭头函数的简洁性,它与常规函数有所不同,换一种看法,箭头函数也许可以把箭头函数看作是异常的 JS 函数。本文主要讲讲箭头函数与常规函数行为的差异,以及咱们如果利用这些差异来更好使用箭头函数。箭头函数永远不能用作构造函数,自然的不能使用new关键字调用它们,因此,对于箭头函数不存在prototype属性。在函数的整个生命周期中,箭头函数内部的值保持不变,并且总是与接近的非箭头父函数中的值绑定。命名函数参数JS中的函数通常用命名参数定义。
  • 大规模应用 TypeScript
    将刚才的代码用 TypeScript 来表达就是这个样子。通过使用 TypeScript,我们在编码时能做更多的事情。这仅涉及了 TypeScript 非常基础的一些功能,但却让你了解到它捕获类型错误的能力,以及支持它的工具。我们将进行改革,我们提议在我们的主仓库中使用 TypeScript,并让它成为前端开发的主要语言。这些数字描绘了我们当时提议使用 TypeScript 所面临的困境。从 2016 年起,Airbnb 已经在一些小规模团队中探索使用 TypeScript。使用 TypeScript,工程师可以更安全快速的迁移代码。这似乎的确需要先将那些包转换成 TypeScript。
  • 你应了解的4种JS设计模式
    JavaScript 网页开发者在创建应用时,频繁地跟设计模式打交道。尽管特定环境下有各种各样的设计模式,JS 开发者还是倾向于使用一些习惯性的模式。揭示性模块模式模块模式的另一种变体称为 揭示性模块模式,它主要是为了在保持封装性的同时,揭示在对象字面量中返回的特定的变量和方法。_Wikipedia_ 原型设计模式图解UML 描述了原型交互是如何被用于克隆具体的代码实施方案的。这样做主要是为了避免订阅者和发布者之间的依赖。