前端开发者指南(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 年前32019-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阮一峰 《ECMAScript 6入门》 第三版
1版发布后,就开始制定6.0版了。因此,ES6 这个词的原 意,就是指 JavaScript 语言的下一个版本。 但是,因为这个版本引入的语法功能太多,而且制定过程当中,还有很多组织和个 人不断提交新功能。事情很快就变得清楚了,不可能在一个版本里面包括所有将要 引入的功能。常规的做法是先发布6.0版,过一段时间再发6.1版,然后是6.2版、 ECMAScript 6简介 7 6.3版等等。 但是 但是,标准的制定者不想这样做。他们想让标准的升级成为常规流程:任何人在任 何时候,都可以向标准委员会提交新语法的提案,然后标准委员会每个月开一次 会,评估这些提案是否可以接受,需要哪些改进。如果经过多次会议以后,一个提 案足够成熟了,就可以正式进入标准了。这就是说,标准的版本升级成为了一个不 断滚动的流程,每个月都会有变动。 标准委员会最终决定,标准在每年的6月份正式发布一次,作为当年的正式版本。 JavaScript 创造 者Brendan Eich为首的Mozilla公司,则坚持当前的草案。 2008年7月,由于对于下一个版本应该包括哪些功能,各方分歧太大,争论过于激 烈,ECMA 开会决定,中止 ECMAScript 4.0 的开发,将其中涉及现有功能改善的 一小部分,发布为 ECMAScript 3.1,而将其他激进的设想扩大范围,放入以后的版 本,由于会议的气氛,该版本的项目代号起名为0 码力 | 679 页 | 2.66 MB | 1 年前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 月前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阮一峰 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 月前3Hello 算法 1.1.0 JavaScript版
淘宝订单。购物者下单后,订单将加入队列中,系统随后会根据顺序处理队列中的订单。在双十一期 间,短时间内会产生海量订单,高并发成为工程师们需要重点攻克的问题。 ‧ 各类待办事项。任何需要实现“先来后到”功能的场景,例如打印机的任务队列、餐厅的出餐队列等, 队列在这些场景中可以有效地维护处理顺序。 5.3 双向队列 在队列中,我们仅能删除头部元素或在尾部添加元素。如图 5‑7 所示,双向队列(double‑ended 实现另一个对称方向 的操作。为此,我们采用“双向链表”作为双向队列的底层数据结构。 如图 5‑8 所示,我们将双向链表的头节点和尾节点视为双向队列的队首和队尾,同时实现在两端添加和删除 节点的功能。 图 5‑8 基于链表实现双向队列的入队出队操作 实现代码如下所示: // === File: linkedlist_deque.js === /* 双向链表节点 */ 第 5 章 栈与队列 这两者的所有应用场景,同时提供更高的自由度。 我们知道,软件的“撤销”功能通常使用栈来实现:系统将每次更改操作 push 到栈中,然后通过 pop 实现撤 销。然而,考虑到系统资源的限制,软件通常会限制撤销的步数(例如仅允许保存 50 步)。当栈的长度超过 50 时,软件需要在栈底(队首)执行删除操作。但栈无法实现该功能,此时就需要使用双向队列来替代栈。请 注意,“撤销”的核心逻辑仍然遵循栈0 码力 | 379 页 | 18.46 MB | 1 年前3Hello 算法 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.47 MB | 10 月前3Hello 算法 1.0.0b5 JavaScript版
淘宝订单。购物者下单后,订单将加入队列中,系统随后会根据顺序依次处理队列中的订单。在双十一 期间,短时间内会产生海量订单,高并发成为工程师们需要重点攻克的问题。 ‧ 各类待办事项。任何需要实现“先来后到”功能的场景,例如打印机的任务队列、餐厅的出餐队列等。 队列在这些场景中可以有效地维护处理顺序。 5.3 双向队列 在队列中,我们仅能在头部删除或在尾部添加元素。如图 5‑7 所示,「双向队列 deque」提供了更高的灵活 实现另一个对称方向 的操作。为此,我们采用“双向链表”作为双向队列的底层数据结构。 如图 5‑8 所示,我们将双向链表的头节点和尾节点视为双向队列的队首和队尾,同时实现在两端添加和删除 节点的功能。 第 5 章 栈与队列 hello‑algo.com 99 图 5‑8 基于链表实现双向队列的入队出队操作 实现代码如下所示。 // === File: linkedlist_deque.js 这两者的所有应用场景,同时提供更高的自由度。 我们知道,软件的“撤销”功能通常使用栈来实现:系统将每次更改操作 push 到栈中,然后通过 pop 实现撤 销。然而,考虑到系统资源的限制,软件通常会限制撤销的步数(例如仅允许保存 50 步)。当栈的长度超过 50 时,软件需要在栈底(即队首)执行删除操作。但栈无法实现该功能,此时就需要使用双向队列来替代栈。 请注意,“撤销”的核心逻辑仍然遵循0 码力 | 375 页 | 30.68 MB | 1 年前3Hello 算法 1.0.0 JavaScript版
淘宝订单。购物者下单后,订单将加入队列中,系统随后会根据顺序处理队列中的订单。在双十一期 间,短时间内会产生海量订单,高并发成为工程师们需要重点攻克的问题。 ‧ 各类待办事项。任何需要实现“先来后到”功能的场景,例如打印机的任务队列、餐厅的出餐队列等, 队列在这些场景中可以有效地维护处理顺序。 5.3 双向队列 在队列中,我们仅能删除头部元素或在尾部添加元素。如图 5‑7 所示,「双向队列 double‑ended 实现另一个对称方向 的操作。为此,我们采用“双向链表”作为双向队列的底层数据结构。 如图 5‑8 所示,我们将双向链表的头节点和尾节点视为双向队列的队首和队尾,同时实现在两端添加和删除 节点的功能。 图 5‑8 基于链表实现双向队列的入队出队操作 实现代码如下所示: // === File: linkedlist_deque.js === /* 双向链表节点 */ 第 5 章 栈与队列 这两者的所有应用场景,同时提供更高的自由度。 我们知道,软件的“撤销”功能通常使用栈来实现:系统将每次更改操作 push 到栈中,然后通过 pop 实现撤 销。然而,考虑到系统资源的限制,软件通常会限制撤销的步数(例如仅允许保存 50 步)。当栈的长度超过 50 时,软件需要在栈底(队首)执行删除操作。但栈无法实现该功能,此时就需要使用双向队列来替代栈。请 注意,“撤销”的核心逻辑仍然遵循栈0 码力 | 376 页 | 17.57 MB | 1 年前3
共 18 条
- 1
- 2