2019-2021 美团技术年货 前端篇
性能优化探索与实践 36 设计稿(UI 视图)自动生成代码方案的探索 56 美团外卖终端容器无关化研发框架 74 一款可以让大型 iOS 工程编译速度提升 50% 的工具 96 从预编译的角度理解 Swift 与 Objective-C 及混编机制 108 美团民宿跨端复用框架设计与实践 165 美团跨端一体化富文本管理技术实践 186 前端 | 2020 202 移动端 在中大型团队的应用实践 610 美团 iOS 工程 zsource 命令背后的那些事儿 627 客户端单周发版下的多分支自动化管理与实践 635 美团外卖前端容器化演进实践 643 Bifrost 微前端框架及其在美团闪购中的实践 664 Litho 的使用及原理剖析 680 Android 兼容 Java 8 语法特性的原理分析 697 美团外卖商家端视频探索之旅 715 让 Flutter 之外再重新开发和维护一套鸿蒙应用,在如今业界越来越注 重开发迭代效率的环境下,所带来的开发成本也是难以估量的。因此,通过打造一套 合适的跨端框架,以相对低的成本移植应用到鸿蒙平台,并利用好该系统的特性能 力,就成为了一个非常重要的选项。 在现有的众多跨端框架当中,Flutter 以其自渲染能力带来的多端高度一致性,在新 系统的适配上有着突出的优势。虽然 Flutter 官方并没有适配鸿蒙的计划,但经过一0 码力 | 738 页 | 50.29 MB | 1 年前3前端开发者指南(2017)
37 HTTP / 网络工具 代码编辑工具 浏览器上的神兵利器 HTML 工具 CSS 工具 DOM 工具 JavaScript 工具 静态网页构建工具 无障碍访问工具 应用程序框架工具(台式机、手机、平板电脑等) 渐进式 Web 应用工具 脚手架工具 常规前端开发工具 模版/数据绑定工具 UI 组件 & 组件包 数据可视化工具(例如图表) 图形工具(例如 SVG、canvas、webGL) 制图工具 HTTP / 网络工具 代码编辑工具 浏览器上的神兵利器 HTML 工具 CSS 工具 DOM 工具 JavaScript 工具 静态网页构建工具 无障碍访问工具 应用程序框架工具(台式机、手机、平板电脑等) 渐进式 Web 应用工具 脚手架工具 常规前端开发工具 模版/数据绑定工具 UI 组件 & 组件包 数据可视化工具(例如图表) 图形工具(例如 SVG、canvas、webGL) JavaScript: 前端开发者使用 WEB 技术(例如 HTML、CSS、 DOM 和 JavaScript)来建造网站和开发应 用。他们使用 WEB 技术在 WEB 平台或非 WEB 框架(比如 NativeScript 框架)上设计程 序。 图片来源:https://www.upwork.com/hiring/development/front-end-developer/ 通常前端开发者通过学习0 码力 | 164 页 | 6.43 MB | 1 年前3新语⾔,新思维 解读⼀个并发问题的多种实现 - 陶召胜
1 JavaScript 不不再有回调地狱,变异步为顺序化思维,程序更更加可读 2 Go ⾼高并发调度,通道让异步编程更更简单 3 Scala (1)简洁的异步编程 (2)AKKA:分布式计算框架 4 Java (1)fork/join (2)CompletableFuture (3)反应式编程(Reactive Programming ) next: JavaScript (2)AKKA:分布式计算框架 2014年年 Scala2.11 2016年年 Scala2.12 2017年年 Scala2.12.4 创建异步任务就是这么简洁 异步任务之间的连续处理理也是这么简洁 例例⼦子Scala实现 对⽐比:Java8 CompletableFuture实现 AKKA分布式计算框架 • 核⼼心概念:Actor,是⾏行行为和状态的容器器 1 JavaScript 不不再有回调地狱,变异步为顺序化思维,程序更更加可读 2 Go ⾼高并发调度,通道让异步编程更更简单 3 Scala (1)简洁的异步编程 (2)AKKA:分布式计算框架 4 Java (1)fork/join (2)CompletableFuture (3)反应式编程(Reactive Programming ) 谢谢! 陶召胜0 码力 | 42 页 | 9.85 MB | 1 年前3JavaScript Promise迷你书(中文版)
org/ 34 https://github.com/azu/promises-book JavaScript Promise 迷你书(中文版) 44 Mocha Mocha是Node.js下的测试框架工具,在这里,我们并不打算对 Mocha35本身进行详细讲 解。对 Mocha36感兴趣的读者可以自行学习。 Mocha可以自由选择BDD、TDD、exports中的任意风格,测试中用到的Assert 方法也 同样可以跟任何其他类库组合使用。 也就是说,Mocha本身只提供执行测试时的框 架,而其他部分则由使用者自己选择。 这里我们选择使用Mocha,主要基于下面3点理由。 • 它是非常著名的测试框架 • 支持基于Node.js 和浏览器的测试 • 支持"Promise测试" 最后至于为什么说 支持"Promise测试" ,这个我们在后面再讲。 要想在本章中使用Mocha,我们需要先通过npm来安装Mocha。 由于测试不会结束,所以直到发生超时时间未知,一直会处于 挂起状态。 通常情况下, assert 失败的时候,会throw一个error, 测试框架会捕获该error,来判断 测试失败。 但是,Promise的情况下 .then 绑定的函数执行时发生的error 会被Promise捕获,而测试 框架则对此error将会一无所知。 JavaScript Promise 迷你书(中文版) 47 我们来改善一下 assert0 码力 | 112 页 | 1010.02 KB | 1 年前3Hello 算法 1.1.0 JavaScript版
忘曲线”来 复习题目,通常在进行 3~5 轮的重复后,就能将其牢记在心。推荐的题单和刷题计划请见此 GitHub 仓库。 3. 阶段三:搭建知识体系。在学习方面,我们可以阅读算法专栏文章、解题框架和算法教材,以不断丰富 知识体系。在刷题方面,可以尝试采用进阶刷题策略,如按专题分类、一题多解、一解多题等,相关的 刷题心得可以在各个社区找到。 如图 0‑8 所示,本书内容主要涵盖“阶段一” 般无法仅凭复杂度来选择 ? = 8 之下的最优解法。但对于 ? = 85 就很好选了,这时增长趋势已经占主导了。 51 第 3 章 数据结构 Abstract 数据结构如同一副稳固而多样的框架。 它为数据的有序组织提供了蓝图,算法得以在此基础上生动起来。 第 3 章 数据结构 hello‑algo.com 52 3.1 数据结构分类 常见的数据结构包括数组、链表、栈、队列、哈希表 根据约束条件剪枝 第 13 章 回溯 hello‑algo.com 278 13.1.3 框架代码 接下来,我们尝试将回溯的“尝试、回退、剪枝”的主体框架提炼出来,提升代码的通用性。 在以下框架代码中,state 表示问题的当前状态,choices 表示当前状态下可以做出的选择: /* 回溯算法框架 */ function backtrack(state, choices, res) {0 码力 | 379 页 | 18.46 MB | 1 年前3Hello 算法 1.2.0 简体中文 JavaScript 版
忘曲线”来 复习题目,通常在进行 3~5 轮的重复后,就能将其牢记在心。推荐的题单和刷题计划请见此 GitHub 仓库。 3. 阶段三:搭建知识体系。在学习方面,我们可以阅读算法专栏文章、解题框架和算法教材,以不断丰富 知识体系。在刷题方面,可以尝试采用进阶刷题策略,如按专题分类、一题多解、一解多题等,相关的 刷题心得可以在各个社区找到。 如图 0‑8 所示,本书内容主要涵盖“阶段一” 般无法仅凭复杂度来选择 ? = 8 之下的最优解法。但对于 ? = 85 就很好选了,这时增长趋势已经占主导了。 51 第 3 章 数据结构 Abstract 数据结构如同一副稳固而多样的框架。 它为数据的有序组织提供了蓝图,算法得以在此基础上生动起来。 第 3 章 数据结构 www.hello‑algo.com 52 3.1 数据结构分类 常见的数据结构包括数组、链表、栈、队列 根据约束条件剪枝 第 13 章 回溯 www.hello‑algo.com 278 13.1.3 框架代码 接下来,我们尝试将回溯的“尝试、回退、剪枝”的主体框架提炼出来,提升代码的通用性。 在以下框架代码中,state 表示问题的当前状态,choices 表示当前状态下可以做出的选择: /* 回溯算法框架 */ function backtrack(state, choices, res) {0 码力 | 379 页 | 18.47 MB | 10 月前3Hello 算法 1.0.0b5 JavaScript版
一个挑战,但请放心,这是很正常的。我们可以按 照“艾宾浩斯遗忘曲线”来复习题目,通常在进行 3‑5 轮的重复后,就能将其牢记在心。 3. 搭建知识体系。在学习方面,我们可以阅读算法专栏文章、解题框架和算法教材,以不断丰富知识体 系。在刷题方面,可以尝试采用进阶刷题策略,如按专题分类、一题多解、一解多题等,相关的刷题心 得可以在各个社区找到。 如图 0‑7 所示,本书内容主要涵盖“第一阶段 多少,所以一般无法仅凭复杂 度来选择 ? = 8 之下的最优解法。但对于 ? = 85 就很好选了,这时增长趋势已经占主导了。 48 第 3 章 数据结构 � 数据结构如同一副稳固而多样的框架。 它为数据的有序组织提供了蓝图,使算法得以在此基础上生动起来。 第 3 章 数据结构 hello‑algo.com 49 3.1 数据结构分类 常见的数据结构包括数组、链表、栈、队列、哈希 避免许多无意义的尝试,从而提高了搜索效率。 图 13‑3 根据约束条件剪枝 13.1.3 框架代码 接下来,我们尝试将回溯的“尝试、回退、剪枝”的主体框架提炼出来,提升代码的通用性。 在以下框架代码中,state 表示问题的当前状态,choices 表示当前状态下可以做出的选择。 第 13 章 回溯 hello‑algo.com 279 /* 回溯算法框架 */ function backtrack(state, choices0 码力 | 375 页 | 30.68 MB | 1 年前3Hello 算法 1.0.0 JavaScript版
,但请放心,这是很正常的。 我们可以按照“艾宾浩斯遗忘曲线”来复习题目,通常在进行 3~5 轮的重复后,就能将其牢记在心。 3. 阶段三:搭建知识体系。在学习方面,我们可以阅读算法专栏文章、解题框架和算法教材,以不断丰富 知识体系。在刷题方面,可以尝试采用进阶刷题策略,如按专题分类、一题多解、一解多题等,相关的 刷题心得可以在各个社区找到。 如图 0‑8 所示,本书内容主要涵盖“阶段一” 是多少,所以一般无法仅凭复杂度来选择 ? = 8 之下的最优解法。但对于 ? = 85 就很好选了,这时增长趋势已经占主导了。 51 第 3 章 数据结构 � 数据结构如同一副稳固而多样的框架。 它为数据的有序组织提供了蓝图,算法得以在此基础上生动起来。 第 3 章 数据结构 hello‑algo.com 52 3.1 数据结构分类 常见的数据结构包括数组、链表、栈、队列、哈希表 回溯 hello‑algo.com 278 图 13‑3 根据约束条件剪枝 13.1.3 框架代码 接下来,我们尝试将回溯的“尝试、回退、剪枝”的主体框架提炼出来,提升代码的通用性。 在以下框架代码中,state 表示问题的当前状态,choices 表示当前状态下可以做出的选择: /* 回溯算法框架 */ function backtrack(state, choices, res) {0 码力 | 376 页 | 17.57 MB | 1 年前3Hello 算法 1.2.0 繁体中文 JavaScript 版
曲線”來 複習題目,通常在進行 3~5 輪的重複後,就能將其牢記在心。推薦的題單和刷題計劃請見此 GitHub 倉庫。 3. 階段三:搭建知識體系。在學習方面,我們可以閱讀演算法專欄文章、解題框架和演算法教材,以不斷 豐富知識體系。在刷題方面,可以嘗試採用進階刷題策略,如按專題分類、一題多解、一解多題等,相 關的刷題心得可以在各個社群找到。 如圖 0‑8 所示,本書內容主要涵蓋“階段一 般無法僅憑複雜度來選擇 ? = 8 之下的最優解法。但對於 ? = 85 就很好選了,這時增長趨勢已經佔主導了。 51 第 3 章 資料結構 Abstract 資料結構如同一副穩固而多樣的框架。 它為資料的有序組織提供了藍圖,演算法得以在此基礎上生動起來。 第 3 章 資料結構 www.hello‑algo.com 52 3.1 資料結構分類 常見的資料結構包括陣列、鏈結串列、堆 根據約束條件剪枝 第 13 章 回溯 www.hello‑algo.com 278 13.1.3 框架程式碼 接下來,我們嘗試將回溯的“嘗試、回退、剪枝”的主體框架提煉出來,提升程式碼的通用性。 在以下框架程式碼中,state 表示問題的當前狀態,choices 表示當前狀態下可以做出的選擇: /* 回溯演算法框架 */ function backtrack(state, choices, res)0 码力 | 379 页 | 18.78 MB | 10 月前3JavaScript 正则表达式迷你书 老姚 - v1.1
(item) { item.style.color = 'red'; }); 7.3.2. 使用字符串保存数据 一般情况下,我们都愿意使用数组来保存数据。但我看到有的框架中,使用的却是字符串。 使用时,仍需要把字符串切分成数组。虽然不一定用到正则,但总感觉酷酷的,这里分享如下: var utils = {}; "Boolean|Number|String|Fun 77 页 后记 我竟然写了一本书!想想就挺开心的。 这是个人的第一本书,虽然不厚,但也算是完成了个人的一个小梦想了。 说起正则表达式,我之所以会去详细地研究它,最初的动机是,当我分析前端常见的框架和库的源码时,发 现一般被卡住的地方就是它。后来逐渐学习并看懂了“天书”,仿佛进入了一个新世界。 有些工具就是这样,当你没有它时,可能并未觉得有啥不好,可是一旦你拥有了它,再也放不下手了。掌握 足感的。带着问题去研究去学习,这是一种问题思维。然而一时的解决方案还不够,后来我详细地阅读了 Asciidoc 使用手册,也经常有“原来,还可以这样写!”的体会。 这一点,跟我们平常工作很像,以项目为导向,用啥学啥。比如初学一个框架,先干起来,边看文档,边敲 代码。代码敲完了,还要详细地看一遍文档,届时会发现还有更好的实现方式。不只有眼前的苟且,还会有 明天的迭代。 另外一点,我深深体会到了,干着简单繁杂的工作是怎样的体0 码力 | 89 页 | 3.42 MB | 10 月前3
共 15 条
- 1
- 2