2019-2021 美团技术年货 前端篇
在美团外卖的实践 作者:典胜 凌霄 海阔 一、背景 1.1 业务背景 美团外卖商家端业务形态 美团外卖商家端业务围绕数百万商家,在 PC 和 App 上分别提供了交易履约、运营、 广告、营销等一系列功能,且经常有外投 H5 的场景(如外卖学院、商家社区、营销 活动等)。在这种多形态的业务场景下,如何保障多端体验的一致性,以及如何提升 多端迭代的效率,一直是商家端产研关注的重点。 1.1.1 保障多端体验一致性 保障多端体验一致性 由于端能力的不同,导致了业务在 App 和 Web 上存在较大的表现差异,例如:App 上自带动画转场,而在 Web 中的实现成本却较高,往往也就降级舍弃了这部分功能。 此外,即使我们可利用公司内部的 Roo、MTDUI 等多端 UI 组件库来尽量抹平各端 的 UI 差异,但由于组件库在各端的实现不尽相同,很难做到完美的一致性体验。 1.1.2 提升多端迭代效率 18 > 2021年美团技术年货 上图为 MTFlutter + Web 架构图,由图可知 Flutter Web 页面要满足投产要求,还 有大量的工作(上图黄色部分所示),主要包括: ● 扩展基础依赖(如:Request、Router、埋点等)在 Web 侧的支持。 ● 完善工程化建设,例如:静态资源优化、构建与部署自动化。 ● 深入滚动性能与页面加载性能优化,使得 Flutter0 码力 | 738 页 | 50.29 MB | 1 年前3阮一峰 《ECMAScript 6入门》 第三版
23 1.24 1.25 1.26 1.27 目錄 前言 ECMAScript 6简介 let 和 const 命令 变量的解构赋值 字符串的扩展 正则的扩展 数值的扩展 函数的扩展 数组的扩展 对象的扩展 Symbol Set 和 Map 数据结构 Proxy Reflect Promise 对象 Iterator 和 for...of 循环 Generator 1版发布后,就开始制定6.0版了。因此,ES6 这个词的原 意,就是指 JavaScript 语言的下一个版本。 但是,因为这个版本引入的语法功能太多,而且制定过程当中,还有很多组织和个 人不断提交新功能。事情很快就变得清楚了,不可能在一个版本里面包括所有将要 引入的功能。常规的做法是先发布6.0版,过一段时间再发6.1版,然后是6.2版、 ECMAScript 6简介 7 6.3版等等。 但是 JavaScript 创造 者Brendan Eich为首的Mozilla公司,则坚持当前的草案。 2008年7月,由于对于下一个版本应该包括哪些功能,各方分歧太大,争论过于激 烈,ECMA 开会决定,中止 ECMAScript 4.0 的开发,将其中涉及现有功能改善的 一小部分,发布为 ECMAScript 3.1,而将其他激进的设想扩大范围,放入以后的版 本,由于会议的气氛,该版本的项目代号起名为0 码力 | 679 页 | 2.66 MB | 1 年前3JavaScript Promise迷你书(中文版)
Promises,即JavaScript的标准规范为基础 的、Promise的相关知识为主要讲解内容。 在Firefox和Chrome这样技术比较超前的浏览器上,不需要安装额外的插件就能使用 Promise功能,此外ES6 Promises的规范来源于Promises/A+社区,它有很多版本的实 现。 我们将会从基础API开始介绍可以在浏览器的原生支持或者通过插件支持的Promise功 能。 也希望各位 而不会像回调函数方式那样可以自己自由的定义回调函数的参数,而必须严格 遵守固定、统一的编程方式来编写代码。 这样,基于Promise的统一接口的做法, 就可以形成基于接口的各种各样的异步处理模 式。 所以,promise的功能是可以将复杂的异步处理轻松地进行模式化, 这也可以说得上是 使用promise的理由之一。 接下来,让我们在实践中来学习JavaScript的Promise吧。 JavaScript Promise 该异常原因(Error对 象)会作为 .catch 方法的参数被调用。 其实 .catch 只是 promise.then(undefined, onRejected) 的别名而已, 如下代码也可以完 成同样的功能。 getURL(URL).then(onFulfilled, onRejected); onFulfilled, onRejected 是和刚才相同的函数 一般说来,使用 .catch 来将r0 码力 | 112 页 | 1010.02 KB | 1 年前3前端开发者指南(2017)
Safari 无头浏览器(Headless Browsers) 无头浏览器是一种没有用户图形界面的 WEB 浏览器,我们可以用命令行界面编程控制该浏览 器,达到自动化运行 Web 页面(比如功能测试、网站检索、单元测试等)的目的。可将无头 浏览器看作网页浏览器,不过你用命令行来检索、遍历网页。 最常见的无头浏览器: PhantomJS slimerjs trifleJS Webviews JSX,而如今他们已经享受其中。 一种可用的 CSS 模块模式(CSS encapsulation)已经实现并投入使用,因此对许多人 来说,CSS in JS 成为一种切实可行的解决方案。 越来越多人着手进行 UI 的功能性、整合性测试,其中包含例如可视化 CSS 和 RWD(译 注:响应式网页设计,全称 Responsive web design)回归测试的概念。 得益于老版本 IE 使用、开发程度的大幅度降低,为浏览器 成为企业级开发者的明智之选(也就是说受到支持!)。 Webpack 采取措施并巩固了优势地位,更胜一筹的 JSPM 解决方案暂居其下。 HTTPS,嗯,这个我们很重视 BASH 在 windows 系统上展露头脚。 通知功能 API 可以被使用了,并在 chrome 上有些滥用,但这只会发生在你授予它权限 之后。 FireBug 调试工具退出历史舞台。 2016年,CSS 20 岁了。 Immutability0 码力 | 164 页 | 6.43 MB | 1 年前3Web 开发技术-JavaScript
1.概述 Web 开发技术-JavaScript VCG JavaScript 2020/4/28 2 内容提要 1 JavaScript 简史 2 JavaScript 功能、脚本语言 3 JavaScript 实现 ECMAScript DOM BOM 4 在 HTML 中使用 JavaScript 直接嵌入 外部引入 JS 代码压缩 2 VCG 释式程序 JavaScript 功能、脚本语言 5 VCG JavaScript 2020/4/28 6 2. JavaScript 功能 主要功能 向 HTML 页面添加交互行为 读写 HTML 元素 在数据被提交到服务器之前验证数据 检测访客的浏览器信息 控制 cookies 和本地存储 JavaScript 功能、脚本语言 JavaScript 特点 JavaScript 2020/4/28 7 主要功能 向 HTML 页面添加交互行为 读写 HTML 元素 在数据被提交到服务器之前验证数据 检测访客的浏览器信息 控制 cookies 和本地存储 VCG JavaScript 2020/4/28 8 2. JavaScript 功能 其他功能,如 网络服务器(Node.js) 处理 Web0 码力 | 21 页 | 1.02 MB | 1 年前3廖雪峰JavaScript教程
Canvas 7 jQuery 7.1 选择器 7.1.1 层级选择器 7.1.2 查找和过滤 7.2 操作DOM 7.2.1 修改DOM结构 7.3 事件 7.4 动画 7.5 扩展 8 underscore 8.1 Collections 8.2 Arrays 8.3 Functions 8.4 Objects 8.5 Chaining 9 Node.js 9 《廖雪峰JavaScript教程》 由 进击的皇虫 使用 书栈(BookStack.CN) 进行构 建,生成于 2018-07-13。 书栈(BookStack.CN) 仅提供文档编写、整理、归类等功能,以及对文档内容的生成和导出工 具。 文档内容由网友们编写和整理,书栈(BookStack.CN) 难以确认文档内容知识点是否错漏。如果 您在阅读文档获取知识的时候,发现文档内容有不恰当的地方,请向我们反馈,让我们共同携手,将知 ,然后以 http:// 开头的 地址来正常执行所有JavaScript代码。 不过,开始学习阶段,你无须关心如何搭建开发环境的问题,我们提供在页面输入JavaScript代码并 直接运行的功能,让你专注于JavaScript的学习。 试试直接点击“Run”按钮执行下面的JavaScript代码: 1. // 以//开头直到行末的是注释,将被浏览器忽略 2. // 第一个JavaScript代码:0 码力 | 264 页 | 2.81 MB | 10 月前3Hello 算法 1.1.0 JavaScript版
的表示方式包含指数位,导致其取值范围远大于 int 。根据以上计算, float 可表示的最大正数为 2254−127 × (2 − 2−23) ≈ 3.4 × 1038 ,切换符号位便可得到最小负数。 尽管浮点数 float 扩展了取值范围,但其副作用是牺牲了精度。整数类型 int 将全部 32 比特用于表示数字, 数字是均匀分布的;而由于指数位的存在,浮点数 float 的数值越大,相邻两个数字之间的差值就会趋向越 大。 hello‑algo.com 60 图 3‑6 ASCII 码 然而,ASCII 码仅能够表示英文。随着计算机的全球化,诞生了一种能够表示更多语言的 EASCII 字符集。它 在 ASCII 的 7 位基础上扩展到 8 位,能够表示 256 个不同的字符。 在世界范围内,陆续出现了一批适用于不同地区的 EASCII 字符集。这些字符集的前 128 个字符统一为 ASCII 码,后 128 个字符定义不同,以适应不同语言的需求。 1980 年发布了 GB2312 字符集,其收录了 6763 个汉字,基本满足了汉字的 计算机处理需要。 然而,GB2312 无法处理部分罕见字和繁体字。GBK 字符集是在 GB2312 的基础上扩展得到的,它共收录了 21886 个汉字。在 GBK 的编码方案中,ASCII 字符使用一个字节表示,汉字使用两个字节表示。 3.4.3 Unicode 字符集 随着计算机技术的蓬勃发展,字符集0 码力 | 379 页 | 18.46 MB | 1 年前3Hello 算法 1.2.0 简体中文 JavaScript 版
的表示方式包含指数位,导致其取值范围远大于 int 。根据以上计算, float 可表示的最大正数为 2254−127 × (2 − 2−23) ≈ 3.4 × 1038 ,切换符号位便可得到最小负数。 尽管浮点数 float 扩展了取值范围,但其副作用是牺牲了精度。整数类型 int 将全部 32 比特用于表示数字, 数字是均匀分布的;而由于指数位的存在,浮点数 float 的数值越大,相邻两个数字之间的差值就会趋向越 大。 hello‑algo.com 60 图 3‑6 ASCII 码 然而,ASCII 码仅能够表示英文。随着计算机的全球化,诞生了一种能够表示更多语言的 EASCII 字符集。它 在 ASCII 的 7 位基础上扩展到 8 位,能够表示 256 个不同的字符。 在世界范围内,陆续出现了一批适用于不同地区的 EASCII 字符集。这些字符集的前 128 个字符统一为 ASCII 码,后 128 个字符定义不同,以适应不同语言的需求。 1980 年发布了 GB2312 字符集,其收录了 6763 个汉字,基本满足了汉字的 计算机处理需要。 然而,GB2312 无法处理部分罕见字和繁体字。GBK 字符集是在 GB2312 的基础上扩展得到的,它共收录了 21886 个汉字。在 GBK 的编码方案中,ASCII 字符使用一个字节表示,汉字使用两个字节表示。 3.4.3 Unicode 字符集 随着计算机技术的蓬勃发展,字符集0 码力 | 379 页 | 18.47 MB | 10 月前3Hello 算法 1.0.0 JavaScript版
的表示方式包含指数位,导致其取值范围远大于 int 。根据以上计算, float 可表示的最大正数为 2254−127 × (2 − 2−23) ≈ 3.4 × 1038 ,切换符号位便可得到最小负数。 尽管浮点数 float 扩展了取值范围,但其副作用是牺牲了精度。整数类型 int 将全部 32 比特用于表示数字, 数字是均匀分布的;而由于指数位的存在,浮点数 float 的数值越大,相邻两个数字之间的差值就会趋向越 大。 hello‑algo.com 60 图 3‑6 ASCII 码 然而,ASCII 码仅能够表示英文。随着计算机的全球化,诞生了一种能够表示更多语言的「EASCII」字符 集。它在 ASCII 的 7 位基础上扩展到 8 位,能够表示 256 个不同的字符。 在世界范围内,陆续出现了一批适用于不同地区的 EASCII 字符集。这些字符集的前 128 个字符统一为 ASCII 码,后 128 个字符定义不同,以适应不同语言的需求。 1980 年发布了「GB2312」字符集,其收录了 6763 个汉字,基本满足了汉 字的计算机处理需要。 然而,GB2312 无法处理部分罕见字和繁体字。「GBK」字符集是在 GB2312 的基础上扩展得到的,它共收录 了 21886 个汉字。在 GBK 的编码方案中,ASCII 字符使用一个字节表示,汉字使用两个字节表示。 3.4.3 Unicode 字符集 随着计算机技术的蓬勃发展,字符0 码力 | 376 页 | 17.57 MB | 1 年前3阮一峰 JavaScript 教程
《阮一峰 JavaScript 教程》 由 进击的皇虫 使用 书栈(BookStack.CN) 进行构建,生成于 2018-02-26。 书栈(BookStack.CN) 仅提供文档编写、整理、归类等功能,以 及对文档内容的生成和导出工具。 文档内容由网友们编写和整理,书栈(BookStack.CN) 难以确认 文档内容知识点是否错漏。如果您在阅读文档获取知识的时候,发现文 档内容有不恰当的 - 9 - 本文档使用 书栈(BookStack.CN) 构建 从语法角度看,JavaScript 语言是一种“对象模型”语言。各种宿主 环境通过这个模型,描述自己的功能和操作接口,从而通过 JavaScript 控制这些功能。但是,JavaScript 并不是纯粹的“面 向对象语言”,还支持其他编程范式(比如函数式编程)。这导致几乎 任何一个问题,JavaScript 都有多种解决方法。阅读本书的过程 法构造(比如操作符、控制结构、语句)和标准库(就是一系列具有各 种功能的对象比如 Array 、 Date 、 Math 等)。除此之外,各种宿 主环境提供额外的 API(即只能在该环境使用的接口),以便 JavaScript 调用。以浏览器为例,它提供的额外 API 可以分成三 大类。 浏览器控制类:操作浏览器 DOM 类:操作网页的各种元素 Web 类:实现互联网的各种功能 如果宿主环境是服务器,则会提供各种操作系统的0 码力 | 540 页 | 3.32 MB | 10 月前3
共 19 条
- 1
- 2