 2019-2021 美团技术年货 前端篇杂层布局的准确率较低、 可解释程度不高导致后续无法持续优化。方案二中 Sketch 源文件信息量丰富、算法 自定义程度高、优化空间大。因此,我们调研了业界基于 Sketch 的代码自动生成方 案(已对外公布或者开源),发现了一些不足并尝试解决,下面从算法准确率、代码可 读性、研发流程覆盖度等方面做一下对比(该对比结果仅考察业界方案对我们自己业 务的适用性,实际结果可能存在差异): 前端 问题的。 2.2 整体方案设计 2.2.1 RN 与小程序复用的技术方案 图 2 RN 与小程序复用技术方案图 整体架构分为两个部分:编译过程、运行过程。它的渲染方式与上文描述重运行时方 案类似,都是通过 MP-Renderer 来处理 React 代码。下面我们来简要分析这两个 过程: (1) 编译过程:该阶段对 RN 源码进行一定的转换处理,用于运行过程,编译后主要 产生有以下产物: 关联了官网中该组件的使用说明,是代码组件库与官网的纽带。 外卖 UI 一致性解决方案 2.2 接入指南 1. 设计师逐步将设计语言沉淀为设计规范(包括组件、颜色、字体、图片等)上 传至官网供整个设计团队查阅,同时将其量化并内置于积木 Sketch 插件中; 开发同学则将其代码化,针对 Android/iOS/MRN 三端进行组件库开发。 2. 设计师使用积木 Sketch 插件绘制设计稿,可以保证设计元素均从既定的设计0 码力 | 738 页 | 50.29 MB | 1 年前3 2019-2021 美团技术年货 前端篇杂层布局的准确率较低、 可解释程度不高导致后续无法持续优化。方案二中 Sketch 源文件信息量丰富、算法 自定义程度高、优化空间大。因此,我们调研了业界基于 Sketch 的代码自动生成方 案(已对外公布或者开源),发现了一些不足并尝试解决,下面从算法准确率、代码可 读性、研发流程覆盖度等方面做一下对比(该对比结果仅考察业界方案对我们自己业 务的适用性,实际结果可能存在差异): 前端 问题的。 2.2 整体方案设计 2.2.1 RN 与小程序复用的技术方案 图 2 RN 与小程序复用技术方案图 整体架构分为两个部分:编译过程、运行过程。它的渲染方式与上文描述重运行时方 案类似,都是通过 MP-Renderer 来处理 React 代码。下面我们来简要分析这两个 过程: (1) 编译过程:该阶段对 RN 源码进行一定的转换处理,用于运行过程,编译后主要 产生有以下产物: 关联了官网中该组件的使用说明,是代码组件库与官网的纽带。 外卖 UI 一致性解决方案 2.2 接入指南 1. 设计师逐步将设计语言沉淀为设计规范(包括组件、颜色、字体、图片等)上 传至官网供整个设计团队查阅,同时将其量化并内置于积木 Sketch 插件中; 开发同学则将其代码化,针对 Android/iOS/MRN 三端进行组件库开发。 2. 设计师使用积木 Sketch 插件绘制设计稿,可以保证设计元素均从既定的设计0 码力 | 738 页 | 50.29 MB | 1 年前3
 Hello 算法 1.2.0 繁体中文 JavaScript 版演算法猶如美妙的交響樂,每一行程式碼都像韻律般流淌。 願這本書在你的腦海中輕輕響起,留下獨特而深刻的旋律。 第 0 章 前言 www.hello‑algo.com 2 0.1 關於本書 本專案旨在建立一本開源、免費、對新手友好的資料結構與演算法入門教程。 ‧ 全書採用動畫圖解,內容清晰易懂、學習曲線平滑,引導初學者探索資料結構與演算法的知識地圖。 ‧ 源程式碼可一鍵執行,幫助讀者在練習 圖 0‑4 克隆倉庫與下載程式碼 第三步:執行源程式碼。如圖 0‑5 所示,對於頂部標有檔案名稱的程式碼塊,我們可以在倉庫的 codes 檔案 夾內找到對應的源程式碼檔案。源程式碼檔案可一鍵執行,將幫助你節省不必要的除錯時間,讓你能夠專注 於學習內容。 圖 0‑5 程式碼塊與對應的源程式碼檔案 除了本地執行程式碼,網頁版還支持 Python 程式碼的視覺化執行(基於 pythontutor 第 1 章 初識演算法 www.hello‑algo.com 13 圖 1‑3 貨幣找零過程 在以上步驟中,我們每一步都採取當前看來最好的選擇(儘可能用大面額的貨幣),最終得到了可行的找零方 案。從資料結構與演算法的角度看,這種方法本質上是“貪婪”演算法。 小到烹飪一道菜,大到星際航行,幾乎所有問題的解決都離不開演算法。計算機的出現使得我們能夠透過程 式設計將資料結構儲存在記憶體中,同時編寫程式碼呼叫0 码力 | 379 页 | 18.78 MB | 10 月前3 Hello 算法 1.2.0 繁体中文 JavaScript 版演算法猶如美妙的交響樂,每一行程式碼都像韻律般流淌。 願這本書在你的腦海中輕輕響起,留下獨特而深刻的旋律。 第 0 章 前言 www.hello‑algo.com 2 0.1 關於本書 本專案旨在建立一本開源、免費、對新手友好的資料結構與演算法入門教程。 ‧ 全書採用動畫圖解,內容清晰易懂、學習曲線平滑,引導初學者探索資料結構與演算法的知識地圖。 ‧ 源程式碼可一鍵執行,幫助讀者在練習 圖 0‑4 克隆倉庫與下載程式碼 第三步:執行源程式碼。如圖 0‑5 所示,對於頂部標有檔案名稱的程式碼塊,我們可以在倉庫的 codes 檔案 夾內找到對應的源程式碼檔案。源程式碼檔案可一鍵執行,將幫助你節省不必要的除錯時間,讓你能夠專注 於學習內容。 圖 0‑5 程式碼塊與對應的源程式碼檔案 除了本地執行程式碼,網頁版還支持 Python 程式碼的視覺化執行(基於 pythontutor 第 1 章 初識演算法 www.hello‑algo.com 13 圖 1‑3 貨幣找零過程 在以上步驟中,我們每一步都採取當前看來最好的選擇(儘可能用大面額的貨幣),最終得到了可行的找零方 案。從資料結構與演算法的角度看,這種方法本質上是“貪婪”演算法。 小到烹飪一道菜,大到星際航行,幾乎所有問題的解決都離不開演算法。計算機的出現使得我們能夠透過程 式設計將資料結構儲存在記憶體中,同時編寫程式碼呼叫0 码力 | 379 页 | 18.78 MB | 10 月前3
 前端开发者指南(2017)践。 本书内容偏向于 WEB 技术(HTML、CSS、DOM、JavaScript)和以这些技术为根基直接构 建而成的开源技术。书中引用和讨论的材料要么就是同类翘楚,要么就是解决问题的流行方 案。 本书不是一本囊括所有前端可用资源的综合纲领。其价值在于为恰好够用的分类信息搜罗简 洁、聚焦且符合时宜的甄选内容,以免在特别话题下钻了牛角尖。 预期本书每年都迭代一次内容。 本书分为三部分。 图片来源:http://stateofjs.com/ 测试工具 141 图片来源:http://stateofjs.com/ 测试工具 142 测试工具 143 前端数据存储工具 (例如. 客户端的数据存储方 案) AlaSQL Dexie.js ForerunnerDB LocalForage LokiJS Lovefield lowdb Pouchdb NeDB YDN-DB 前端数据存储工具0 码力 | 164 页 | 6.43 MB | 1 年前3 前端开发者指南(2017)践。 本书内容偏向于 WEB 技术(HTML、CSS、DOM、JavaScript)和以这些技术为根基直接构 建而成的开源技术。书中引用和讨论的材料要么就是同类翘楚,要么就是解决问题的流行方 案。 本书不是一本囊括所有前端可用资源的综合纲领。其价值在于为恰好够用的分类信息搜罗简 洁、聚焦且符合时宜的甄选内容,以免在特别话题下钻了牛角尖。 预期本书每年都迭代一次内容。 本书分为三部分。 图片来源:http://stateofjs.com/ 测试工具 141 图片来源:http://stateofjs.com/ 测试工具 142 测试工具 143 前端数据存储工具 (例如. 客户端的数据存储方 案) AlaSQL Dexie.js ForerunnerDB LocalForage LokiJS Lovefield lowdb Pouchdb NeDB YDN-DB 前端数据存储工具0 码力 | 164 页 | 6.43 MB | 1 年前3
 Hello 算法 1.1.0 JavaScript版31 元。 第 1 章 初识算法 hello‑algo.com 13 图 1‑3 货币找零过程 在以上步骤中,我们每一步都采取当前看来最好的选择(尽可能用大面额的货币),最终得到了可行的找零方 案。从数据结构与算法的角度看,这种方法本质上是“贪心”算法。 小到烹饪一道菜,大到星际航行,几乎所有问题的解决都离不开算法。计算机的出现使得我们能够通过编程 将数据结构存储在内存中,同时编写代码调用 上。换句话说,我们只能从第 ? − 1 阶或第 ? − 2 阶迈向第 ? 阶。 由此便可得出一个重要推论:爬到第 ? − 1 阶的方案数加上爬到第 ? − 2 阶的方案数就等于爬到第 ? 阶的方 案数。公式如下: ??[?] = ??[? − 1] + ??[? − 2] 这意味着在爬楼梯问题中,各个子问题之间存在递推关系,原问题的解可以由子问题的解构建得来。图 14‑2 展示了该递推关系。 例如零钱兑换问题,我们虽然能够容易地举出反例,对贪心选择性质进行证伪,但证实的难度较大。如果问: 满足什么条件的硬币组合可以使用贪心算法求解?我们往往只能凭借直觉或举例子来给出一个模棱两可的答 案,而难以给出严谨的数学证明。 Quote 有一篇论文给出了一个 ?(?3) 时间复杂度的算法,用于判断一个硬币组合能否使用贪心算法找出任 意金额的最优解。 Pearson, D. A polynomial‑time0 码力 | 379 页 | 18.46 MB | 1 年前3 Hello 算法 1.1.0 JavaScript版31 元。 第 1 章 初识算法 hello‑algo.com 13 图 1‑3 货币找零过程 在以上步骤中,我们每一步都采取当前看来最好的选择(尽可能用大面额的货币),最终得到了可行的找零方 案。从数据结构与算法的角度看,这种方法本质上是“贪心”算法。 小到烹饪一道菜,大到星际航行,几乎所有问题的解决都离不开算法。计算机的出现使得我们能够通过编程 将数据结构存储在内存中,同时编写代码调用 上。换句话说,我们只能从第 ? − 1 阶或第 ? − 2 阶迈向第 ? 阶。 由此便可得出一个重要推论:爬到第 ? − 1 阶的方案数加上爬到第 ? − 2 阶的方案数就等于爬到第 ? 阶的方 案数。公式如下: ??[?] = ??[? − 1] + ??[? − 2] 这意味着在爬楼梯问题中,各个子问题之间存在递推关系,原问题的解可以由子问题的解构建得来。图 14‑2 展示了该递推关系。 例如零钱兑换问题,我们虽然能够容易地举出反例,对贪心选择性质进行证伪,但证实的难度较大。如果问: 满足什么条件的硬币组合可以使用贪心算法求解?我们往往只能凭借直觉或举例子来给出一个模棱两可的答 案,而难以给出严谨的数学证明。 Quote 有一篇论文给出了一个 ?(?3) 时间复杂度的算法,用于判断一个硬币组合能否使用贪心算法找出任 意金额的最优解。 Pearson, D. A polynomial‑time0 码力 | 379 页 | 18.46 MB | 1 年前3
 Hello 算法 1.2.0 简体中文 JavaScript 版第 1 章 初识算法 www.hello‑algo.com 13 图 1‑3 货币找零过程 在以上步骤中,我们每一步都采取当前看来最好的选择(尽可能用大面额的货币),最终得到了可行的找零方 案。从数据结构与算法的角度看,这种方法本质上是“贪心”算法。 小到烹饪一道菜,大到星际航行,几乎所有问题的解决都离不开算法。计算机的出现使得我们能够通过编程 将数据结构存储在内存中,同时编写代码调用 上。换句话说,我们只能从第 ? − 1 阶或第 ? − 2 阶迈向第 ? 阶。 由此便可得出一个重要推论:爬到第 ? − 1 阶的方案数加上爬到第 ? − 2 阶的方案数就等于爬到第 ? 阶的方 案数。公式如下: ??[?] = ??[? − 1] + ??[? − 2] 这意味着在爬楼梯问题中,各个子问题之间存在递推关系,原问题的解可以由子问题的解构建得来。图 14‑2 展示了该递推关系。 例如零钱兑换问题,我们虽然能够容易地举出反例,对贪心选择性质进行证伪,但证实的难度较大。如果问: 满足什么条件的硬币组合可以使用贪心算法求解?我们往往只能凭借直觉或举例子来给出一个模棱两可的答 案,而难以给出严谨的数学证明。 Quote 有一篇论文给出了一个 ?(?3) 时间复杂度的算法,用于判断一个硬币组合能否使用贪心算法找出任 意金额的最优解。 Pearson, D. A polynomial‑time0 码力 | 379 页 | 18.47 MB | 10 月前3 Hello 算法 1.2.0 简体中文 JavaScript 版第 1 章 初识算法 www.hello‑algo.com 13 图 1‑3 货币找零过程 在以上步骤中,我们每一步都采取当前看来最好的选择(尽可能用大面额的货币),最终得到了可行的找零方 案。从数据结构与算法的角度看,这种方法本质上是“贪心”算法。 小到烹饪一道菜,大到星际航行,几乎所有问题的解决都离不开算法。计算机的出现使得我们能够通过编程 将数据结构存储在内存中,同时编写代码调用 上。换句话说,我们只能从第 ? − 1 阶或第 ? − 2 阶迈向第 ? 阶。 由此便可得出一个重要推论:爬到第 ? − 1 阶的方案数加上爬到第 ? − 2 阶的方案数就等于爬到第 ? 阶的方 案数。公式如下: ??[?] = ??[? − 1] + ??[? − 2] 这意味着在爬楼梯问题中,各个子问题之间存在递推关系,原问题的解可以由子问题的解构建得来。图 14‑2 展示了该递推关系。 例如零钱兑换问题,我们虽然能够容易地举出反例,对贪心选择性质进行证伪,但证实的难度较大。如果问: 满足什么条件的硬币组合可以使用贪心算法求解?我们往往只能凭借直觉或举例子来给出一个模棱两可的答 案,而难以给出严谨的数学证明。 Quote 有一篇论文给出了一个 ?(?3) 时间复杂度的算法,用于判断一个硬币组合能否使用贪心算法找出任 意金额的最优解。 Pearson, D. A polynomial‑time0 码力 | 379 页 | 18.47 MB | 10 月前3
 Hello 算法 1.0.0b5 JavaScript版31 元。 第 1 章 初识算法 hello‑algo.com 12 图 1‑3 货币找零过程 在以上步骤中,我们每一步都采取当前看来最好的选择(尽可能用大面额的货币),最终得到了可行的找零方 案。从数据结构与算法的角度看,这种方法本质上是“贪心”算法。 小到烹饪一道菜,大到星际航行,几乎所有问题的解决都离不开算法。计算机的出现使我们能够通过编程将 数据结构存储在内存中,同时编写代码调用 CPU 上。换句话说,我们只能从第 ? − 1 阶或第 ? − 2 阶前往第 ? 阶。 由此便可得出一个重要推论:爬到第 ? − 1 阶的方案数加上爬到第 ? − 2 阶的方案数就等于爬到第 ? 阶的方 案数。公式如下: ??[?] = ??[? − 1] + ??[? − 2] 这意味着在爬楼梯问题中,各个子问题之间存在递推关系,原问题的解可以由子问题的解构建得来。图 14‑2 展示了该递推关系。 例如零钱兑换问题,我们虽然能够容易地举出反例,对贪心选择性质进行证伪,但证实的难度较大。如果问: 满足什么条件的硬币组合可以使用贪心算法求解?我们往往只能凭借直觉或举例子来给出一个模棱两可的答 案,而难以给出严谨的数学证明。 第 15 章 贪心 hello‑algo.com 351 � 有一篇论文给出了一个 ?(?3) 时间复杂度的算法,用于判断一个硬币组合是否可以使用贪心 算法找出任何金额的最优解。0 码力 | 375 页 | 30.68 MB | 1 年前3 Hello 算法 1.0.0b5 JavaScript版31 元。 第 1 章 初识算法 hello‑algo.com 12 图 1‑3 货币找零过程 在以上步骤中,我们每一步都采取当前看来最好的选择(尽可能用大面额的货币),最终得到了可行的找零方 案。从数据结构与算法的角度看,这种方法本质上是“贪心”算法。 小到烹饪一道菜,大到星际航行,几乎所有问题的解决都离不开算法。计算机的出现使我们能够通过编程将 数据结构存储在内存中,同时编写代码调用 CPU 上。换句话说,我们只能从第 ? − 1 阶或第 ? − 2 阶前往第 ? 阶。 由此便可得出一个重要推论:爬到第 ? − 1 阶的方案数加上爬到第 ? − 2 阶的方案数就等于爬到第 ? 阶的方 案数。公式如下: ??[?] = ??[? − 1] + ??[? − 2] 这意味着在爬楼梯问题中,各个子问题之间存在递推关系,原问题的解可以由子问题的解构建得来。图 14‑2 展示了该递推关系。 例如零钱兑换问题,我们虽然能够容易地举出反例,对贪心选择性质进行证伪,但证实的难度较大。如果问: 满足什么条件的硬币组合可以使用贪心算法求解?我们往往只能凭借直觉或举例子来给出一个模棱两可的答 案,而难以给出严谨的数学证明。 第 15 章 贪心 hello‑algo.com 351 � 有一篇论文给出了一个 ?(?3) 时间复杂度的算法,用于判断一个硬币组合是否可以使用贪心 算法找出任何金额的最优解。0 码力 | 375 页 | 30.68 MB | 1 年前3
 Hello 算法 1.0.0 JavaScript版31 元。 第 1 章 初识算法 hello‑algo.com 13 图 1‑3 货币找零过程 在以上步骤中,我们每一步都采取当前看来最好的选择(尽可能用大面额的货币),最终得到了可行的找零方 案。从数据结构与算法的角度看,这种方法本质上是“贪心”算法。 小到烹饪一道菜,大到星际航行,几乎所有问题的解决都离不开算法。计算机的出现使得我们能够通过编程 将数据结构存储在内存中,同时编写代码调用 上。换句话说,我们只能从第 ? − 1 阶或第 ? − 2 阶迈向第 ? 阶。 由此便可得出一个重要推论:爬到第 ? − 1 阶的方案数加上爬到第 ? − 2 阶的方案数就等于爬到第 ? 阶的方 案数。公式如下: ??[?] = ??[? − 1] + ??[? − 2] 这意味着在爬楼梯问题中,各个子问题之间存在递推关系,原问题的解可以由子问题的解构建得来。图 14‑2 展示了该递推关系。 例如零钱兑换问题,我们虽然能够容易地举出反例,对贪心选择性质进行证伪,但证实的难度较大。如果问: 满足什么条件的硬币组合可以使用贪心算法求解?我们往往只能凭借直觉或举例子来给出一个模棱两可的答 案,而难以给出严谨的数学证明。 � 有一篇论文给出了一个 ?(?3) 时间复杂度的算法,用于判断一个硬币组合能否使用贪心算法 找出任意金额的最优解。 Pearson, D. A polynomial‑time0 码力 | 376 页 | 17.57 MB | 1 年前3 Hello 算法 1.0.0 JavaScript版31 元。 第 1 章 初识算法 hello‑algo.com 13 图 1‑3 货币找零过程 在以上步骤中,我们每一步都采取当前看来最好的选择(尽可能用大面额的货币),最终得到了可行的找零方 案。从数据结构与算法的角度看,这种方法本质上是“贪心”算法。 小到烹饪一道菜,大到星际航行,几乎所有问题的解决都离不开算法。计算机的出现使得我们能够通过编程 将数据结构存储在内存中,同时编写代码调用 上。换句话说,我们只能从第 ? − 1 阶或第 ? − 2 阶迈向第 ? 阶。 由此便可得出一个重要推论:爬到第 ? − 1 阶的方案数加上爬到第 ? − 2 阶的方案数就等于爬到第 ? 阶的方 案数。公式如下: ??[?] = ??[? − 1] + ??[? − 2] 这意味着在爬楼梯问题中,各个子问题之间存在递推关系,原问题的解可以由子问题的解构建得来。图 14‑2 展示了该递推关系。 例如零钱兑换问题,我们虽然能够容易地举出反例,对贪心选择性质进行证伪,但证实的难度较大。如果问: 满足什么条件的硬币组合可以使用贪心算法求解?我们往往只能凭借直觉或举例子来给出一个模棱两可的答 案,而难以给出严谨的数学证明。 � 有一篇论文给出了一个 ?(?3) 时间复杂度的算法,用于判断一个硬币组合能否使用贪心算法 找出任意金额的最优解。 Pearson, D. A polynomial‑time0 码力 | 376 页 | 17.57 MB | 1 年前3
 阮一峰 《ECMAScript 6入门》 第三版但是,标准的制定者不想这样做。他们想让标准的升级成为常规流程:任何人在任 何时候,都可以向标准委员会提交新语法的提案,然后标准委员会每个月开一次 会,评估这些提案是否可以接受,需要哪些改进。如果经过多次会议以后,一个提 案足够成熟了,就可以正式进入标准了。这就是说,标准的版本升级成为了一个不 断滚动的流程,每个月都会有变动。 标准委员会最终决定,标准在每年的6月份正式发布一次,作为当年的正式版本。 接下来的时间, 个异步的读取文件操作,只要执行 run 函数,这 些操作就会自动完成。这样一来,异步操作不仅可以写得像同步操作,而且一行代 码就可以执行。 Thunk 函数并不是 Generator 函数自动执行的唯一方案。因为自动执行的关键是, 必须有一种机制,自动控制 Generator 函数的流程,接收和交还程序的执行权。回 调函数可以做到这一点,Promise 对象也可以做到这一点。 co 模块 基本用法0 码力 | 679 页 | 2.66 MB | 1 年前3 阮一峰 《ECMAScript 6入门》 第三版但是,标准的制定者不想这样做。他们想让标准的升级成为常规流程:任何人在任 何时候,都可以向标准委员会提交新语法的提案,然后标准委员会每个月开一次 会,评估这些提案是否可以接受,需要哪些改进。如果经过多次会议以后,一个提 案足够成熟了,就可以正式进入标准了。这就是说,标准的版本升级成为了一个不 断滚动的流程,每个月都会有变动。 标准委员会最终决定,标准在每年的6月份正式发布一次,作为当年的正式版本。 接下来的时间, 个异步的读取文件操作,只要执行 run 函数,这 些操作就会自动完成。这样一来,异步操作不仅可以写得像同步操作,而且一行代 码就可以执行。 Thunk 函数并不是 Generator 函数自动执行的唯一方案。因为自动执行的关键是, 必须有一种机制,自动控制 Generator 函数的流程,接收和交还程序的执行权。回 调函数可以做到这一点,Promise 对象也可以做到这一点。 co 模块 基本用法0 码力 | 679 页 | 2.66 MB | 1 年前3
共 8 条
- 1













