IMWebConf 2017 前端开发者大会
Fiber 天猪 阿里游戏前端负责人,EggJS 核心开发者。 Egg & Node.js 从小 工坊走向企业级开发 Egg 是阿里 Node.js 的核心 基础框架,通过「微内核 + 插件机制 + 框架定制能 力」,完美达成生态共建和 差异化定制的平衡点。Egg 已开源近一年,本次分享将 介绍 Egg 的设计理念和特 点,演示在团队里如何渐进 式演进,希望能帮助开发者 定制适合自己团队的上层框 将WebSocket作为基础能力集成到TSW组件 里,并为qcloud的小程序打包方案提供 WebSocket双工通信服务,本次主要分享 WebSocket基础,socket.io的多机多进程部 署,ws在TSW里的应用,心跳检测,多机多进 程部署以及广播等 深入浅出WebSocket 1.WebSocket简介 2.TSW里的WebSocket实现 以及多机器多进程部署 3.TSW +WebSocket+qcloud0 码力 | 8 页 | 698.99 KB | 1 年前32019-2021 美团技术年货 前端篇
视图)自动生成代码方案的探索 56 美团外卖终端容器无关化研发框架 74 一款可以让大型 iOS 工程编译速度提升 50% 的工具 96 从预编译的角度理解 Swift 与 Objective-C 及混编机制 108 美团民宿跨端复用框架设计与实践 165 美团跨端一体化富文本管理技术实践 186 前端 | 2020 202 移动端 UI 一致性解决方案 202 美团外卖 Flutter 1M,未 Gzip) 和 图片等静态资源,缺少 JS 拆包、文件 Hash、资源上传 CDN 等优 化工作,极大影响了页面的加载性能。 ● 由于 Flutter Web 自身实现了一套页面滚动机制,页面滚动过程中,会频繁计 算位置信息,引起滚动区域内容被重新创建,最终导致页面滚动性能较差。 2.2 MTFlutter 现状 虽然 MTFlutter 做了诸多 Flutter Native js 体积依然维持在 1.1M。单一文件加载、解析时间过长, 且静态资源缺少 CDN 化的支持,势必会影响首屏的渲染时间。 ● 滚动性能较差。 Flutter Web 自身实现了一套页面滚动机制,在页面滚动过程 中,会频繁的创建 Canvas,最终导致滚动性能问题,甚至引起页面 Crash。 通过下图对浏览器网络监控情况的展示,可以清晰的反映出以上问题: 浏览器网络监控 页面滚动过程中,内存的占用情况0 码力 | 738 页 | 50.29 MB | 1 年前3阮一峰 《ECMAScript 6入门》 第三版
这实际上说明,对象的解构赋值是下面形式的简写(参见《对象的扩展》一章)。 let { foo: foo, bar: bar } = { foo: "aaa", bar: "bbb" }; 也就是说,对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变 量。真正被赋值的是后者,而不是前者。 let { foo: baz } = { foo: "aaa", bar: "bbb" }; baz // "aaa" 对象。否则,回调函数运行 时, this.doSomething 这一行会报错,因为此时 this 指向 document 对象。 this 指向的固定化,并不是因为箭头函数内部有绑定 this 的机制,实际原因 是箭头函数根本没有自己的 this ,导致内部的 this 就是外层代码块 的 this 。正是因为它没有 this ,所以也就不能用作构造函数。 所以,箭头函数转成 ES5 indexOf(afterValue) + 1, 0, value); return array; }})}); insert(2).into([1, 3]).after(1); //[1, 2, 3] 下面是一个部署管道机制(pipeline)的例子,即前一个函数的输出是后一个函数 的输入。 const pipeline = (...funcs) => val => funcs.reduce((a, b) =>0 码力 | 679 页 | 2.66 MB | 1 年前3阮一峰 JavaScript 教程
null,undefined 和布尔值 数值 字符串 对象 函数 数组 运算符 算术运算符 比较运算符 布尔运算符 二进制位运算符 其他运算符,运算顺序 语法专题 数据类型的转换 错误处理机制 编程风格 console 对象与控制台 标准库 Object 对象 属性描述对象 Array 对象 包装对象 Boolean 对象 - 1 - 本文档使用 书栈(BookStack JavaScript 里面, null 就像在 Java 里一 样,被当成一个对象,Brendan Eich 觉得表示“无”的值最好不是对 象。其次,那时的 JavaScript 不包括错误处理机制,Brendan Eich 觉得,如果 null 自动转为0,很不容易发现错误。 因此,他又设计了一个 undefined 。区别是这样的: null 是一个表 示“空”的对象,转为数值时为 length // 2 上面代码定义了空函数 f ,它的 length 属性就是定义时的参数个 数。不管调用时输入了多少个参数, length 属性始终等于2。 length 属性提供了一种机制,判断定义时和调用时参数的差异,以便 实现面向对象编程的”方法重载“(overload)。 函数的 toString 方法返回一个字符串,内容是函数的源码。 1. function f() {0 码力 | 540 页 | 3.32 MB | 10 月前3JavaScript Promise迷你书(中文版)
实际上即使使用回调方式的写法也能完成上面同样的工作,而使用Promise方式的话有 什么优点么?在本小节中我们没有讲到两者的对比及Promise的优点。在接下来的章节 中,我们将会对Promise优点之一,即错误处理机制进行介绍,以及和传统的回调方式 的对比。 Chapter.2 - 实战Promise 本章我们将会学习Promise提供的各种方法以及如何进行错误处理。 Promise.resolve 一般情况下我们都会使用 就像我们有时称具有 .length 方法的非数组对象为Array like一样,thenable指的是一个 具有 .then 方法的对象。 这种将thenable对象转换为promise对象的机制要求thenable对象所拥有的 then 方法应 该和Promise所拥有的 then 方法具有同样的功能和处理过程,在将thenable对象转换为 promise对象的时候,还会巧妙的利用thenable对象原来具有的 Promises标准,所 以即使看上去这个对象转换成了一个promise对象,但是会出现缺失 部分信息的问题。 这个问题的根源在于jQuery的 Deferred Object21 的 then 方法机制与 promise不同。 所以我们应该注意,即使一个对象具有 .then 方法,也不一定就能 作为ES6 Promises对象使用。 • JavaScript Promises: There and0 码力 | 112 页 | 1010.02 KB | 1 年前3Hello 算法 1.2.0 简体中文 Dart 版
如果感觉以下内容理解困难,可以在读完“栈”章节后再来复习。 那么,迭代和递归具有什么内在联系呢?以上述递归函数为例,求和操作在递归的“归”阶段进行。这意味 着最初被调用的函数实际上是最后完成其求和操作的,这种工作机制与栈的“先入后出”原则异曲同工。 事实上,“调用栈”和“栈帧空间”这类递归术语已经暗示了递归与栈之间的密切关系。 1. 递:当函数被调用时,系统会在“调用栈”上为该函数分配新的栈帧,用于存储函数的局部变量、参数、 。有了这些地址,程序便可以访问内存中的数据。 图 3‑2 内存条、内存空间、内存地址 Tip 值得说明的是,将内存比作 Excel 表格是一个简化的类比,实际内存的工作机制比较复杂,涉及地址 空间、内存管理、缓存机制、虚拟内存和物理内存等概念。 内存是所有程序的共享资源,当某块内存被某个程序占用时,则通常无法被其他程序同时使用了。因此在数 据结构与算法的设计中,内存资源是一个重要的考虑 选择 10 作为初始容量。 ‧ 数量记录:声明一个变量 size ,用于记录列表当前元素数量,并随着元素插入和删除实时更新。根据 此变量,我们可以定位列表尾部,以及判断是否需要扩容。 ‧ 扩容机制:若插入元素时列表容量已满,则需要进行扩容。先根据扩容倍数创建一个更大的数组,再将 当前数组的所有元素依次移动至新数组。在本示例中,我们规定每次将数组扩容至之前的 2 倍。 // === File:0 码力 | 378 页 | 18.46 MB | 9 月前3Hello 算法 1.0.0 Dart版
如果感觉以下内容理解困难,可以在读完“栈”章节后再来复习。 那么,迭代和递归具有什么内在联系呢?以上述递归函数为例,求和操作在递归的“归”阶段进行。这意味 着最初被调用的函数实际上是最后完成其求和操作的,这种工作机制与栈的“先入后出”原则异曲同工。 事实上,“调用栈”和“栈帧空间”这类递归术语已经暗示了递归与栈之间的密切关系。 1. 递:当函数被调用时,系统会在“调用栈”上为该函数分配新的栈帧,用于存储函数的局部变量、参数、 编号,确保每个内存空间都有唯一的内存地址。有了这些地址,程序便可以访问内存中的数据。 图 3‑2 内存条、内存空间、内存地址 � 值得说明的是,将内存比作 Excel 表格是一个简化的类比,实际内存的工作机制比较复杂,涉 及地址空间、内存管理、缓存机制、虚拟内存和物理内存等概念。 内存是所有程序的共享资源,当某块内存被某个程序占用时,则无法被其他程序同时使用了。因此在数据结 构与算法的设计中,内存资源是一个重要的考虑因素 选择 10 作为初始容量。 ‧ 数量记录:声明一个变量 size ,用于记录列表当前元素数量,并随着元素插入和删除实时更新。根据 此变量,我们可以定位列表尾部,以及判断是否需要扩容。 ‧ 扩容机制:若插入元素时列表容量已满,则需要进行扩容。先根据扩容倍数创建一个更大的数组,再将 当前数组的所有元素依次移动至新数组。在本示例中,我们规定每次将数组扩容至之前的 2 倍。 // === File:0 码力 | 377 页 | 17.56 MB | 1 年前3Hello 算法 1.1.0 Dart版
如果感觉以下内容理解困难,可以在读完“栈”章节后再来复习。 那么,迭代和递归具有什么内在联系呢?以上述递归函数为例,求和操作在递归的“归”阶段进行。这意味 着最初被调用的函数实际上是最后完成其求和操作的,这种工作机制与栈的“先入后出”原则异曲同工。 事实上,“调用栈”和“栈帧空间”这类递归术语已经暗示了递归与栈之间的密切关系。 1. 递:当函数被调用时,系统会在“调用栈”上为该函数分配新的栈帧,用于存储函数的局部变量、参数、 。有了这些地址,程序便可以访问内存中的数据。 图 3‑2 内存条、内存空间、内存地址 Tip 值得说明的是,将内存比作 Excel 表格是一个简化的类比,实际内存的工作机制比较复杂,涉及地址 空间、内存管理、缓存机制、虚拟内存和物理内存等概念。 内存是所有程序的共享资源,当某块内存被某个程序占用时,则无法被其他程序同时使用了。因此在数据结 构与算法的设计中,内存资源是一个重要的考虑因素 选择 10 作为初始容量。 ‧ 数量记录:声明一个变量 size ,用于记录列表当前元素数量,并随着元素插入和删除实时更新。根据 此变量,我们可以定位列表尾部,以及判断是否需要扩容。 ‧ 扩容机制:若插入元素时列表容量已满,则需要进行扩容。先根据扩容倍数创建一个更大的数组,再将 当前数组的所有元素依次移动至新数组。在本示例中,我们规定每次将数组扩容至之前的 2 倍。 // === File:0 码力 | 378 页 | 18.45 MB | 1 年前3Hello 算法 1.2.0 简体中文 JavaScript 版
如果感觉以下内容理解困难,可以在读完“栈”章节后再来复习。 那么,迭代和递归具有什么内在联系呢?以上述递归函数为例,求和操作在递归的“归”阶段进行。这意味 着最初被调用的函数实际上是最后完成其求和操作的,这种工作机制与栈的“先入后出”原则异曲同工。 事实上,“调用栈”和“栈帧空间”这类递归术语已经暗示了递归与栈之间的密切关系。 1. 递:当函数被调用时,系统会在“调用栈”上为该函数分配新的栈帧,用于存储函数的局部变量、参数、 。有了这些地址,程序便可以访问内存中的数据。 图 3‑2 内存条、内存空间、内存地址 Tip 值得说明的是,将内存比作 Excel 表格是一个简化的类比,实际内存的工作机制比较复杂,涉及地址 空间、内存管理、缓存机制、虚拟内存和物理内存等概念。 内存是所有程序的共享资源,当某块内存被某个程序占用时,则通常无法被其他程序同时使用了。因此在数 据结构与算法的设计中,内存资源是一个重要的考虑 选择 10 作为初始容量。 ‧ 数量记录:声明一个变量 size ,用于记录列表当前元素数量,并随着元素插入和删除实时更新。根据 此变量,我们可以定位列表尾部,以及判断是否需要扩容。 ‧ 扩容机制:若插入元素时列表容量已满,则需要进行扩容。先根据扩容倍数创建一个更大的数组,再将 当前数组的所有元素依次移动至新数组。在本示例中,我们规定每次将数组扩容至之前的 2 倍。 // === File:0 码力 | 379 页 | 18.47 MB | 9 月前3Hello 算法 1.0.0 JavaScript版
如果感觉以下内容理解困难,可以在读完“栈”章节后再来复习。 那么,迭代和递归具有什么内在联系呢?以上述递归函数为例,求和操作在递归的“归”阶段进行。这意味 着最初被调用的函数实际上是最后完成其求和操作的,这种工作机制与栈的“先入后出”原则异曲同工。 事实上,“调用栈”和“栈帧空间”这类递归术语已经暗示了递归与栈之间的密切关系。 1. 递:当函数被调用时,系统会在“调用栈”上为该函数分配新的栈帧,用于存储函数的局部变量、参数、 编号,确保每个内存空间都有唯一的内存地址。有了这些地址,程序便可以访问内存中的数据。 图 3‑2 内存条、内存空间、内存地址 � 值得说明的是,将内存比作 Excel 表格是一个简化的类比,实际内存的工作机制比较复杂,涉 及地址空间、内存管理、缓存机制、虚拟内存和物理内存等概念。 内存是所有程序的共享资源,当某块内存被某个程序占用时,则无法被其他程序同时使用了。因此在数据结 构与算法的设计中,内存资源是一个重要的考虑因素 选择 10 作为初始容量。 ‧ 数量记录:声明一个变量 size ,用于记录列表当前元素数量,并随着元素插入和删除实时更新。根据 此变量,我们可以定位列表尾部,以及判断是否需要扩容。 ‧ 扩容机制:若插入元素时列表容量已满,则需要进行扩容。先根据扩容倍数创建一个更大的数组,再将 当前数组的所有元素依次移动至新数组。在本示例中,我们规定每次将数组扩容至之前的 2 倍。 // === File:0 码力 | 376 页 | 17.57 MB | 1 年前3
共 38 条
- 1
- 2
- 3
- 4