《玩转webpack》第五章 进阶篇: webpack 构建速度和体积优化策略基础篇:webpack 与构建发展简史 目 录 CONTENTS 01 基础篇:webpack 基础用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略 05 原理篇:通过源码掌握 webpack 打包原理 06 原理篇:编写 Loader 和插件 07 实战篇:React 全家桶 和 webpack 开发商城项目 08 基础篇:webpack 可以分析哪些问题? 依赖的第三方模块文件大小 业务里面的组件代码大小 使用高版本的 webpack 和 Node.js 构建时间降低了 60%-98%! 使用 webpack4:优化原因 V8 带来的优化(for of 替代 forEach、Map 和 Set 替代 Object、includes 替代 indexOf) 默认使用更快的 md4 hash 算法 webpacks AST n 缩小构建目标 比如 babel-loader 不解析 node_modules 目的:尽可能的少构建模块 减少文件搜索范围 优化 resolve.mainFields 配置 优化 resolve.modules 配置(减少模块搜索层级) 优化 resolve.extensions 配置 合理使用 alias 图片压缩 使用:配置 image-webpack-loader 要求:基于0 码力 | 36 页 | 8.13 MB | 1 年前3
2019-2021 美团技术年货 前端篇CODE A BETTER LIFE 【前端篇】 前端 | 2021 1 让 Flutter 在鸿蒙系统上跑起来 1 FlutterWeb 在美团外卖的实践 14 FlutterWeb 性能优化探索与实践 36 设计稿(UI 视图)自动生成代码方案的探索 56 美团外卖终端容器无关化研发框架 74 一款可以让大型 iOS 工程编译速度提升 50% 的工具 96 从预编译的角度理解 中的实践 459 开源 React Native 组件库 beeshell 2.0 发布 473 React Native 在美团外卖客户端的实践 506 Android 静态代码扫描效率优化与实践 530 Probe:Android 线上 OOM 问题定位组件 560 活动 Web 页面人机识别验证的探索与实践 580 React Native 工程中 TSLint 静态检查工具的探索之路 可用于直接绘制的视图对象 鸿蒙系统的 UI 框架提供了很多常用视图组件(Component),比如按钮、文字、图 片、列表等,但我们需要抛开这些上层组件,获得直接绘制的能力。借助官方 媒体播 放器开发指导 文档,可以发现鸿蒙提供了 SurfaceProvider 类,它管理的 Surface 对象可以用于视频解码后的展示。而 Flutter 渲染与视频上屏从原理上是类似的,因 此我们可以借用0 码力 | 738 页 | 50.29 MB | 1 年前3
前端开发者指南(2017)前端开发者是如何诞生的 第二部分:学习前端开发 自学 关于互联网/WEB 学习 Web 浏览器 学习域名系统(又叫 DNS) 学习 HTTP/Networks(包括 CORS 和 WebSockets) 学习网页寄存(通称虚拟主机) 学习前端开发 学习用户界面/交互设计 学习 HTML 和 CSS 学习搜索引擎优化 学习 JavaScript 学习 Web 动画 学习 DOM、BOM 和 jQuery 1.37 1.6.1.38 1.6.2 1.6.2.1 1.6.3 1.6.4 1.7 1.7.1 1.7.2 1.7.3 1.7.4 学习可访问性相关知识 学习 web/浏览器 API 学习 JSON (JavaScript 对象表示法) 学习 JS 模板 学习静态网页生成器 通过JS学习计算机科学 学习前端应用架构 学习数据(例如,JSON)API 的设计 学习 学习命令行的使用 学习 Node.js 学习 JS 模块系统 学习模块加载和打包工具 学习包管理工具 学习版本控制 学习构建及任务自动化技术 学习网站性能优化 学习测试 学习无头浏览器 学习离线开发 学习网络/浏览器/应用的安全 多平台开发学习 导向学习 前端课程 前端开发学习的起点 前端资讯、新闻站和播客 第三部分:前端开发工具 Doc/API 浏览工具 SEO0 码力 | 164 页 | 6.43 MB | 1 年前3
阮一峰 《ECMAScript 6入门》 第三版Netscape 公司,决定将 JavaScript 提交给国际标准化组织ECMA,希望这种语言能够成为国 际标准。次年,ECMA 发布262号标准文件(ECMA-262)的第一版,规定了浏览 器脚本语言的标准,并将这种语言称为 ECMAScript,这个版本就是1.0版。 该标准从一开始就是针对 JavaScript 语言制定的,但是之所以不叫 JavaScript,有 两个原因。一是商标,Java 正式通过,成为国际标准。从2000年算起,这时已经 过去了15年。 部署进度 各大浏览器的最新版本,对 ES6 的支持可以查看kangax.github.io/es5-compat- table/es6/。随着时间的推移,支持度已经越来越高了,超过90%的 ES6 语法特性 都实现了。 Node 是 JavaScript 的服务器运行环境(runtime)。它对 ES6 的支持度更高。除 了那些默认打 上面命令的输出结果,会因为版本的不同而有所不同。 我写了一个工具 ES-Checker,用来检查各种运行环境对 ES6 的支持情况。访问 ruanyf.github.io/es-checker,可以看到您的浏览器支持 ES6 的程度。运行下面的 命令,可以查看你正在使用的 Node 环境对 ES6 的支持程度。 ECMAScript 6简介 10 $ npm install -g es-checker0 码力 | 679 页 | 2.66 MB | 1 年前3
Hello 算法 1.1.0 Dart版10.3 二分查找边界 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 10.4 哈希优化策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 10.5 重识搜索算法 . . . 时间效率:算法运行速度的快慢。 ‧ 空间效率:算法占用内存空间的大小。 简而言之,我们的目标是设计“既快又省”的数据结构与算法。而有效地评估算法效率至关重要,因为只有 这样,我们才能将各种算法进行对比,进而指导算法设计与优化过程。 效率评估方法主要分为两种:实际测试、理论估算。 2.1.1 实际测试 假设我们现在有算法 A 和算法 B ,它们都能解决同一问题,现在需要对比这两个算法的效率。最直接的方法 是找一台 一方面,难以排除测试环境的干扰因素。硬件配置会影响算法的性能。比如在某台计算机中,算法 A 的运行 时间比算法 B 短;但在另一台配置不同的计算机中,可能得到相反的测试结果。这意味着我们需要在各种机 器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输0 码力 | 378 页 | 18.45 MB | 1 年前3
Hello 算法 1.0.0 Dart版10.3 二分查找边界 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 10.4 哈希优化策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 10.5 重识搜索算法 . . . 时间效率:算法运行速度的快慢。 ‧ 空间效率:算法占用内存空间的大小。 简而言之,我们的目标是设计“既快又省”的数据结构与算法。而有效地评估算法效率至关重要,因为只有 这样,我们才能将各种算法进行对比,进而指导算法设计与优化过程。 效率评估方法主要分为两种:实际测试、理论估算。 2.1.1 实际测试 假设我们现在有算法 A 和算法 B ,它们都能解决同一问题,现在需要对比这两个算法的效率。最直接的方法 是找一台 一方面,难以排除测试环境的干扰因素。硬件配置会影响算法的性能。比如在某台计算机中,算法 A 的运行 时间比算法 B 短;但在另一台配置不同的计算机中,可能得到相反的测试结果。这意味着我们需要在各种机 器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输0 码力 | 377 页 | 17.56 MB | 1 年前3
Hello 算法 1.1.0 JavaScript版10.3 二分查找边界 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 10.4 哈希优化策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 10.5 重识搜索算法 . . . 时间效率:算法运行速度的快慢。 ‧ 空间效率:算法占用内存空间的大小。 简而言之,我们的目标是设计“既快又省”的数据结构与算法。而有效地评估算法效率至关重要,因为只有 这样,我们才能将各种算法进行对比,进而指导算法设计与优化过程。 效率评估方法主要分为两种:实际测试、理论估算。 2.1.1 实际测试 假设我们现在有算法 A 和算法 B ,它们都能解决同一问题,现在需要对比这两个算法的效率。最直接的方法 是找一台 一方面,难以排除测试环境的干扰因素。硬件配置会影响算法的性能。比如在某台计算机中,算法 A 的运行 时间比算法 B 短;但在另一台配置不同的计算机中,可能得到相反的测试结果。这意味着我们需要在各种机 器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输0 码力 | 379 页 | 18.46 MB | 1 年前3
Hello 算法 1.1.0 TypeScript版10.3 二分查找边界 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 10.4 哈希优化策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 10.5 重识搜索算法 . . . 时间效率:算法运行速度的快慢。 ‧ 空间效率:算法占用内存空间的大小。 简而言之,我们的目标是设计“既快又省”的数据结构与算法。而有效地评估算法效率至关重要,因为只有 这样,我们才能将各种算法进行对比,进而指导算法设计与优化过程。 效率评估方法主要分为两种:实际测试、理论估算。 2.1.1 实际测试 假设我们现在有算法 A 和算法 B ,它们都能解决同一问题,现在需要对比这两个算法的效率。最直接的方法 是找一台 一方面,难以排除测试环境的干扰因素。硬件配置会影响算法的性能。比如在某台计算机中,算法 A 的运行 时间比算法 B 短;但在另一台配置不同的计算机中,可能得到相反的测试结果。这意味着我们需要在各种机 器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输0 码力 | 383 页 | 18.49 MB | 1 年前3
Hello 算法 1.0.0 JavaScript版10.3 二分查找边界 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 10.4 哈希优化策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 10.5 重识搜索算法 . . . 时间效率:算法运行速度的快慢。 ‧ 空间效率:算法占用内存空间的大小。 简而言之,我们的目标是设计“既快又省”的数据结构与算法。而有效地评估算法效率至关重要,因为只有 这样,我们才能将各种算法进行对比,进而指导算法设计与优化过程。 效率评估方法主要分为两种:实际测试、理论估算。 2.1.1 实际测试 假设我们现在有算法 A 和算法 B ,它们都能解决同一问题,现在需要对比这两个算法的效率。最直接的方法 是找一台 一方面,难以排除测试环境的干扰因素。硬件配置会影响算法的性能。比如在某台计算机中,算法 A 的运行 时间比算法 B 短;但在另一台配置不同的计算机中,可能得到相反的测试结果。这意味着我们需要在各种机 器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输0 码力 | 376 页 | 17.57 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Dart 版10.3 二分查找边界 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 10.4 哈希优化策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 10.5 重识搜索算法 . . . 时间效率:算法运行时间的长短。 ‧ 空间效率:算法占用内存空间的大小。 简而言之,我们的目标是设计“既快又省”的数据结构与算法。而有效地评估算法效率至关重要,因为只有 这样,我们才能将各种算法进行对比,进而指导算法设计与优化过程。 效率评估方法主要分为两种:实际测试、理论估算。 2.1.1 实际测试 假设我们现在有算法 A 和算法 B ,它们都能解决同一问题,现在需要对比这两个算法的效率。最直接的方法 是找一台 图 2‑4 递归调用深度 在实际中,编程语言允许的递归深度通常是有限的,过深的递归可能导致栈溢出错误。 2. 尾递归 有趣的是,如果函数在返回前的最后一步才进行递归调用,则该函数可以被编译器或解释器优化,使其在空 间效率上与迭代相当。这种情况被称为尾递归(tail recursion)。 ‧ 普通递归:当函数返回到上一层级的函数后,需要继续执行代码,因此系统需要保存上一层调用的上下 文。0 码力 | 378 页 | 18.46 MB | 10 月前3
共 70 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7













