2019-2021 美团技术年货 前端篇在美团外卖的实践 作者:典胜 凌霄 海阔 一、背景 1.1 业务背景 美团外卖商家端业务形态 美团外卖商家端业务围绕数百万商家,在 PC 和 App 上分别提供了交易履约、运营、 广告、营销等一系列功能,且经常有外投 H5 的场景(如外卖学院、商家社区、营销 活动等)。在这种多形态的业务场景下,如何保障多端体验的一致性,以及如何提升 多端迭代的效率,一直是商家端产研关注的重点。 1.1.1 保障多端体验一致性 保障多端体验一致性 由于端能力的不同,导致了业务在 App 和 Web 上存在较大的表现差异,例如:App 上自带动画转场,而在 Web 中的实现成本却较高,往往也就降级舍弃了这部分功能。 此外,即使我们可利用公司内部的 Roo、MTDUI 等多端 UI 组件库来尽量抹平各端 的 UI 差异,但由于组件库在各端的实现不尽相同,很难做到完美的一致性体验。 1.1.2 提升多端迭代效率 形式管理各种工具方法。在官方定义中 Package 包含以下两种类别: ● Dart Package:用 Dart 编写的常规 Package,其中一些可能包含依赖于 Flutter 框架的特定功能,其使用范围仅限于 Flutter,例如 path。 ● Plugin Package:用 Dart 编写 API 多个平台各自实现的特殊 Dart Pack- age。Plugin Package0 码力 | 738 页 | 50.29 MB | 1 年前3
JavaScript 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 年前3
Web 开发技术-JavaScript1.概述 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
阮一峰 《ECMAScript 6入门》 第三版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,而将其他激进的设想扩大范围,放入以后的版 本,由于会议的气氛,该版本的项目代号起名为 是很成熟的设想,则被视为 JavaScript.next.next,在更远的将来再考虑推出。 ECMAScript 6简介 9 TC39 委员会的总体考虑是,ES5 与 ES3 基本保持兼容,较大的语法修正和新功能 加入,将由 JavaScript.next 完成。当时,JavaScript.next 指的是ES6,第六版发布 以后,就指 ES7。TC39 的判断是,ES5 会在2013年的年中成为 JavaScript0 码力 | 679 页 | 2.66 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
[试读]15天学会JavaScript - 第 2 章
ECMAScript语法基础 Java 而开发出来的。如果读者熟悉 Java 语言,就会发现 ECMAScript 语法很容易掌握, 因其主要就是借用了 Java 语言的语法。当然,JavaScript 与 Java 毕竟是两种功能作用不同的编 程语言,ECMAScript 还有一些特殊的语法特性。 2.1.1 ECMAScript 语句 相信读者在学习人生中的第一门编程语言(比如 C 语言、Java 语言等)时,最先要明确 的规定,这样便于初学者对编程语言 的语法语句有深刻的理解。 那么 JavaScript 脚本语言的语句规则是如何定义的呢?通常,一条 JavaScript 语句用于描 述一个完整的变量定义或功能操作,且每一条 JavaScript 语句都要以分号(;)来结束,分号(;) 用来分割各条 JavaScript 语句。 使用分号(;)分割 JavaScript 语句的一个好处就是可以在一行中编写多条 JavaScript 语句。如果没有使用分号(;)来结束,ECMAScript 语法就会将每行代码结尾处的换行作为 JavaScript 语句的结束,不过前提是没有破坏 JavaScript 语句的完整功能。因此,绝大多数的 程序员还是会老老实实地写上分号(;)作为 JavaScript 语句的结束,这样既便于自己管理代码, 也便于给别人阅读。 2.1.2 区分大小写 ECMAScript0 码力 | 52 页 | 3.83 MB | 1 年前3
ECMAScript规范 第三版 中文版ECMAScript 程序中调用的函数。 脚本语言(script language)是一类被 用于操控、自定义和自动控制现有系统设施的编程语 言。在这些系统中,实用的功能可通过一个用户界面来使用,脚本语言就是一种通过程序控制 那些功能的机制。 于是,我们就说此系统为对象和设施提供了一个宿主环境,它们使得脚本语 言的能力变得完备。脚本语言是为了能被专业或非专业程序员所使用而设计的。为了适应 非专 业 4.1 网页脚本 网页浏览器为 ECMAScript 提供了一个宿主环境以进行客户端的计算,例如:代表窗口、 菜单、浮动条、对话框、文本区域、锚点、框架、历史、cookies,以及输入/输出功能的对 象。 深入说来,主机环境提供了一套向事件上附加脚本代码的方法,这些事件有焦点的改变,页面 和图像的载入、卸载,出错和异常终止,点选,提交表单以及鼠标 动作等。脚本代码在 HTML 之间出现, 效数字,首先它不能是指数部分的一部分,且 • 它不是 0;或 • 它的左边是一个非零值,右边是一个不在指数部分中的非零值。 9.4 ToInteger ToInteger 运算符将其参数转换为整数值。此运算符功能如下所示: 1. 对输入参数调用 ToNumber。 2. 如果 Result(1) 是 NaN,返回 +0。 3. 如果 Result(1) 是 +0, -0,+∞, 或 -∞,返回 Result(1)。0 码力 | 58 页 | 563.06 KB | 1 年前3
Hello 算法 1.2.0 繁体中文 JavaScript 版淘寶訂單。購物者下單後,訂單將加入列列中,系統隨後會根據順序處理佇列中的訂單。在雙十一期 間,短時間內會產生海量訂單,高併發成為工程師們需要重點攻克的問題。 ‧ 各類待辦事項。任何需要實現“先來後到”功能的場景,例如印表機的任務佇列、餐廳的出餐佇列等, 佇列在這些場景中可以有效地維護處理順序。 5.3 雙向佇列 在佇列中,我們僅能刪除頭部元素或在尾部新增元素。如圖 5‑7 所示,雙向佇列(double‑ended 稱方向 的操作。為此,我們採用“雙向鏈結串列”作為雙向佇列的底層資料結構。 如圖 5‑8 所示,我們將雙向鏈結串列的頭節點和尾節點視為雙向佇列的佇列首和佇列尾,同時實現在兩端新 增和刪除節點的功能。 圖 5‑8 基於鏈結串列實現雙向佇列的入列出列操作 實現程式碼如下所示: // === File: linkedlist_deque.js === /* 雙向鏈結串列節點 */ 第 5 所有應用場景,同時提供更高的自由度。 我們知道,軟體的“撤銷”功能通常使用堆疊來實現:系統將每次更改操作 push 到堆疊中,然後透過 pop 實 現撤銷。然而,考慮到系統資源的限制,軟體通常會限制撤銷的步數(例如僅允許儲存 50 步)。當堆疊的長 度超過 50 時,軟體需要在堆疊底(佇列首)執行刪除操作。但堆疊無法實現該功能,此時就需要使用雙向佇 列來替代堆疊。請注意,“撤銷”的核心邏輯0 码力 | 379 页 | 18.78 MB | 10 月前3
廖雪峰JavaScript教程《廖雪峰JavaScript教程》 由 进击的皇虫 使用 书栈(BookStack.CN) 进行构 建,生成于 2018-07-13。 书栈(BookStack.CN) 仅提供文档编写、整理、归类等功能,以及对文档内容的生成和导出工 具。 文档内容由网友们编写和整理,书栈(BookStack.CN) 难以确认文档内容知识点是否错漏。如果 您在阅读文档获取知识的时候,发现文档内容有不恰当的地方,请向我们反馈,让我们共同携手,将知 ,然后以 http:// 开头的 地址来正常执行所有JavaScript代码。 不过,开始学习阶段,你无须关心如何搭建开发环境的问题,我们提供在页面输入JavaScript代码并 直接运行的功能,让你专注于JavaScript的学习。 试试直接点击“Run”按钮执行下面的JavaScript代码: 1. // 以//开头直到行末的是注释,将被浏览器忽略 2. // 第一个JavaScript代码: 3], [400, 500, 600], '-']; 3. 4. var x = ??; 5. 6. alert(x); // x应该为500 Array 提供了一种顺序存储一组元素的功能,并可以按索引来读写。 练习:在新生欢迎会上,你已经拿到了新同学的名单,请排序后显示: 欢迎XXX,XXX,XXX和XXX同 学! : 1. 'use strict'; 2. var arr0 码力 | 264 页 | 2.81 MB | 10 月前3
共 18 条
- 1
- 2













