20190910 前端开发周报

React 事件机制 (不完全总结);Vue 3.0:更快、更小、让开发者更轻松;JS截取视频第一帧;扒开 V8 引擎的源码,我找到了你们想要的前端算法;【前端词典】11 个 CSS 知识搭配 11 个 JS 特性 (实用合集);Vue中v-model解析、sync修饰符解析;浏览器的渲染机制以及JS运行机制;那些年读过的前端书籍资源分享(超赞)

  1. Vue 3.0:更快、更小、让开发者更轻松 在11月14日-16日于多伦多举办的 VueConf TO 2018 大会上,尤雨溪发表了名为 “ Vue 3.0 Updates ” 的主题演讲,对 Vue 3.0 的更新计划、方向进行了详细阐述。 可以看到,Vue 3.0 将会: 1、更快 Virtual DOM 完全重写,mounting & patching 提速 100% ; 更多编译时(compile-time)提醒以减少 r…
  2. JS截取视频第一帧 接上篇 js图片/视频预览 – URL.createObjectURL() 当视频能够预览并上传后,非要来一张视频第一帧的截图贴上,第一帧是黑的怎么办,下一帧。 一、文件上传 使用 <input type="file"> 上传, change 事件作为预览 video 的 src 的触发条件 新鲜源码: <video controls width="700&q…
  3. 扒开 V8 引擎的源码,我找到了你们想要的前端算法 算法对于前端工程师来说总有一层神秘色彩,这篇文章通过解读V8源码,带你探索Array.prototype.sort函数下的算法实现。 来,先把你用过的和听说过的排序算法都列出来: 快速排序 冒泡排序 插入排序 归并排序 …
  4. 【前端词典】11 个 CSS 知识搭配 11 个 JS 特性 (实用合集) 这篇文章我会介绍 11 在开发过程中经常遇到的 CSS 相关知识点,以及 11 个有趣亦实用的 JavaScript 特性。 这些都是我在日常开发中总结而来,想必于你也是有或多或少的帮助。 文中的代码发布在 gitHub: github.com/wanqihua/bl… ,想了解的朋友可以前往。 11 个常见的 CSS 知识点 声明,这里也包含了部分 CSS…
  5. Vue中v-model解析、sync修饰符解析 在平时开发是经常用到一些父子组件通信,经常用到 props 、 vuex 等等,这里面记录另外的三种方式 v-model 、 sync 是怎么使用,再说是怎么实现,其实 v-model 、 sync 都是语法糖。还有 $attr 、 $listener 实现父子组件通信。 使用方式 v-model 2.2.0+ 新增 v-mode1 其实就是一个语法糖,默认会利用名为 val…
  6. 浏览器的渲染机制以及JS运行机制 所以浏览器的渲染过程主要包括以下几步: 当浏览器遇到一个 script 标记时,DOM 构建将暂停,直至脚本完成执行,然后继续构建DOM。每次去执行JavaScript脚本都会严重地阻塞DOM树的构建,如果JavaScript脚本还操作了CSSOM,而正好这个CSSOM还没有下载和构建,浏览器甚至会延迟脚本执行和构建DOM,直至完成其CSSOM的下载…
  7. 那些年读过的前端书籍资源分享(超赞)《JavaScript高级程序设计》(第三版) 传说中的红宝书 PDF文件下载链接: [链接] 提取码: i47r
  8. 几道前端笔试题 据称,题目平均难度达到 P6 水平。快看看你都能答对吗?
  9. Vue从甜小白到皮大佬系列(七) Vue Router 官方传送门 Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌,在我们项目中也是必会技能之一。下面我想通过以下几个方面来分享。 一、集成Vue Router 1.如果安装了vue脚手架cli3 在create项目的时候会有安装Vue router的选项,选中敲空格就会默认安装Vue r…
  10. 你不知道 javascript上卷第一部分第二,三,四章 将变量定义在某个函数内部,仅内部使用 相当于将变量隐藏了起来,而且变量不会污染全局变量或者说上级变量 但是函数隐藏变量有两个缺点 1.变量名污染所在作用域 2.必须显式地调用函数名 解决这两个问题的方法就是立即执行函数 不仅仅不会变量污染还会立即执行不需要显式调用 变量和函数提升 提升是先调…
  11. 学会这些 JS 小技巧,提升编码幸福度 本文主要介绍一些 JS 中用到的小技巧,可以在日常 Coding 中提升幸福度~ 类型强制转换 string 强制转换为数字 可以用 *1 来转化为数字 (实际上是调用 .valueOf 方法) 然后使用 Number.isNaN 来判断是否为 NaN ,或者使用 a !== a 来判断是否为 NaN ,因为 NaN !== NaN  复制代码 ’32’*1// 32 ‘ds’*1/…
  12. 一种对开发更友好的前端骨架屏自动生成方案(马蜂窝技术原创内容,公众号 ID:mfwtech) 一份来自 Akamai 的研究报告显示,在对 1048 名网购户进行采访后发现: 约 47% 的用户期望他们的页面在两秒之内加载完成。 如果页面加载时间超过 3s,约 40% 的用户…
  13. VUEX 基本用法 mutations 是提交修改store的状态的唯一方法。每个mutation都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler),回调函数就是我们改变state的方法。 actions跟mutations差不多,但是action不直接修改state,它是提交到mutation上让mutation来修改state。要记住mutation是唯一可以修改state的。actions跟…
  14. 简明 JavaScript 函数式编程——入门篇 写在开头 本文较长,总共分为三大部分:(对于函数式编程以及其优点有一定理解的童鞋,可以直接从开始阅读) 第一部分:首先会通过实际代码介绍一下什么是函数式编程以及使用它的意义。 第二部分:我会着重介绍一下函数式编程中最重要的两个方法:柯里化和函数组合,以及他们的使用方法和实践经验。 第三部分:实…
  15. 前端自动化单元测试初探 本篇文章是我在学习前端自动化单元测试时的一些思路整理,之前也从未接触过单元测试相关工具,如有错漏,请读者斧正。要是觉得不专业…你打我呀~~~ 示例代码的github地址: github.com/BboyAwey/au… 1. 什么是单元测试 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元…
  16. 一道题弄清楚JavaScript继承演化史 写出一个构造函数 Animal 输入:空 输出:一个新对象,该对象的共有属性为 {行动: function(){}},没有自有属性 再写出一个构造函数 Human Human 继承 Animal 输入:一个对象,如 {name: ‘Frank’, birthday: ‘2000-10-10’} 输出:一个新对象,该对象自有的属性有 name …
  17. VUE组件系统极速入门2 vuex 看完了官网vuex一头雾水的,比如vuex中的…mapState、countAlias: ‘count’等。没看过官网也没事,希望对你们有帮助。 下文都是我的个人理解,官网的就引用了代码,也许存在着很多错误的描述或者理解,请各位请教,我会改正的。 这个坑之前就深挖了~现在是时候填了。 为什么要有vuex? 它是管理组件与组件通信的库。 子…
  18. Vuex+localStorage数据状态持久化 在前面文章中,我们详细的讲述了Vuex相关的知识,没有了解的小伙伴可以先去了解一波: 《Vuex是什么?Vuex能做什么?Vuex怎么使用?》 这篇文章主要是讲讲如何使Vuex数据持久化? 顾名思义,浏览器想要数据持久化,必须用到localStorage或者sessionStorage,可能还有不知道这两个东西是干什么的小伙伴,简…
  19. Vue 添加响应式属性的正确姿势原文链接:[链接] 默认此文读者明白简单的 Vue 底层原理,对此陌生的读者可以先看: 你不知道的 Vue 响应式原理 从 vue 源码看观察者模式 此文使用的 Vue 版本是 2.0+,在线例子看这里,下面顺便也把关键代码贴出…
  20. 政采云前端小报第46期 政采云前端小报第46期 浏览更多往期小报,请访问: https://weekly.zoo.team 【前端词典】一文读懂单页应用和多页应用的区别 – 掘金 前言 最近看到一些人在问单页面和多页面应用的区别。因为最近在整理 Vue 相关的内容,所以也就输出这一篇短文希望可以给你一个整体的认识。 这里也会大体介绍单页应用实现…
  21. JavaScript 屏幕录制 API 学习前端屏幕录制?截屏?网页生成图片?帧图?说到录屏,我一开始想到的是前面这些词。大致的想法是持续的生成当前页面的截图,然后把这些帧图再合并成一个视频文件。前端页面生成图片我们应该比较熟悉的是html2canv…
  22. JS中操作DOM是"同步"还是"异步"? 按理说,在js的执行中,对于DOM的操作都是同步执行的, <body></body> <script> var body = document.querySelector(‘body’); console.log(`1`); var cDiv = document.createElement(‘div’); console.log(cDiv) console.log(`2`); body.appendChild(cDiv) console.log(…
  23. 几行代码就能完成 Web 组件的数据绑定 这不是什么难事,一般来说没必要动用虚拟 DOM。 今年早些时候我写了一篇文章,声称 Web 组件最终将取代前端框架 。 这篇文章引起了很多争议,这大大出乎我的意料,但也让我收获良多。有很多人同意我的观点,也有很多人持否定态度,甚至有人觉得我根本就是脑子进水,应该永远禁止我再写代码了。总的来说,争论的双…
  24. [精读源码系列]前端路由Vue-Router 相信用vue开发过项目的小伙伴都不会陌生,vue-router模块帮助我们处理单页面应用的理由跳转的,我们只需要将不同path对应的组件信息传给vue-router,就可以在页面局部刷新的情况下实现路由跳转了,你有没有觉得对这一处理过程感到很好奇,想要揭开这一操作的神秘面纱?来吧,让我们一起开启探索之旅~ vue-router的使用 impo…
  25. 「干货」CSS 不定宽高的垂直水平居中(最全 9 种)垂直居中,在 CSS 中是一个老生常谈的问题,面试的时候也会时常被提及。所以,今天我们就来聊聊 9 种不同的居中方法。
  26. 一行js代码实现时间戳转时间格式javascript时间戳转换,支持自定义格式,可以显示年,月,周,日,时,分,秒多种形式的日期和时间。
  27. JS小奥秘之如何提高扩展运算符的性能扩展运算符,也就是我们常用的三个,让数组展开变成每个小块。 然后使用中括号语法[],重新组装这些小块构造一个新数组。
  28. 是谁,在敲打我窗:CSS 雨滴动画效果 1、扯闲篇 是谁在敲打我窗 是谁在撩动琴弦 那一段被遗忘的时光 渐渐地回升出我心坎 是谁在敲打我窗 是谁在撩动琴弦 记忆中那欢乐的情景 慢慢地浮现在我的脑海 那缓缓飘落的小雨 不停地打在我窗 只有那沉默不语的我 不时地回想过去 是谁在敲打我窗 是谁在撩动琴弦 记忆中那…
  29. JavaScript的诞生以及它的不完美之处 JavaScript最初由Netscape的Brendan Eich设计。 JavaScript是甲骨文公司的注册商标。 Ecma国际以JavaScript为基础制定了ECMAScript标准。 JavaScript也可以用于其他场合,如服务器端编程。完整的JavaScript实现包含三个部分:ECMAScript,文档对象模型,浏览器对象模型。 Netscape在最初将其脚本语言命名为LiveS…
  30. 烧脑JS+Canvas带你体验「偶消奇不消」的智商挑战层叠拼图Plus是一款需要空间想象力和逻辑推理能力完美结合的微信小游戏,偶消奇不消,在简单的游戏规则下却有着无数种可能性,需要你充分发挥想象力去探索,看似简单却具有极大的挑战性和趣味性,这就是其魅力所…
  31. HTML5 – 拖放 前言 拖放(Drag and Drop)在开发中较为常见,并且在 HTML5 标准中得以实现。借助 HTML5 拖放的 api ,我们可以方便的实现拖拽功能。 在深入拖放前,我们需要了解一些知识作为前提。首先是拖放过程涉及到两个角色,一个是被拖动的元素,这个元素会在“拖”的过程触发一系列的 drag 事件。另一个是放置的目的地,这…
  32. 搭建前端自动集成环境直接向远程服务器 push 测试分支代码, 看看流水线是否在构建代码,如果是,则恭喜成功了,以后部署直接 push 一下就完事了,不用手动传了.
  33. Vue从甜小白到皮大佬系列(八) Vuex 阅读时间预计8分钟,读完本文你将收获如下知识点,记得点赞:+1:哦~ 一、啥是Vuex? Vuex是用来管理Vue的所有组件状态,说白了就是组件中通信的一种高级方式。 Vuex官方文档已经讲解的非常详细,建议通读一遍,本文是自己的学习总结实践和归纳,有些概念和语句借鉴官方。 二、为什么使用Vuex? 在之前…
  34. JavaScript的浅拷贝 VS 深拷贝拷贝,我们常常用在把A对象的属性copy到B对象,这样B对象就拥有了A对象的属性。当B对象的属性不是基本数据类型,而是数组或者对象的时候,就会出现浅拷贝和深拷贝的区别,具体看下文的解释:
  35. js图片 视频预览 URL createObjectURL() URL.createObjectURL() 静态方法会创建一个  DOMString ,其中包含一个表示参数中给出的对象的URL。这个 URL 的生命周期和创建它的窗口中的  document 绑定。这个新的URL 对象表示指定的  File 对象或  Blob 对象。 来源: MDN 简单的理解一下就是将一个 file 或 Blob 类型的对象转为 …
  36. ES6的Promise对象的使用 Promise 对象, ES6 新增的一个全新特性,虽然它出现很久了, but 我相信,有很多的小伙伴还是没有怎么用过,今天让我们来好好的学习一下它。 Promise 的诞生 1、Promise 的含义 所谓 Promise ,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个 异步操作 )的结果。从语法上说,…
  37. VUE组件系统极速入门1 如何你没有下面几个问题,那这篇文章真的是一无是处。 组件的创建与引用 父组件与子组件的交互 组件与组件间的交互 0.1 谈谈组件 我一开始是对组件有着深深的误解,我个人直接把web中的组件强行等于安卓中的button啊,listview啊,其实是错的。组件的划分,并没有那么严格,一个按钮可以是一个组件,页面的…
  38. Vue js 如何使用 Socket IO ? 在很多需求业务中,都需要浏览器和服务器实时通信来实现功能,比如:扫码登录(扫码后,手机确认登录,PC网页完成登录并跳转)、订单语言提醒等,这些都是建立在两端实时通信的基础上的。对前端而言,来实现浏览器和服务器实时通信,最好的选择就是Socket.IO库,能够快速的实现两端实时通信功能。 1、什么是 S…
  39. 前端理解依赖注入(控制反转)前端的技术的极速发展,对前端同学来说也是一个不小的挑战,有各种各样的东西需要学,在开发过程中经常会被后端同学嘲讽,对于前端来讲根本就不存在类的概念,很多时候需要把大量的业务代码堆积在页面或者组件中…
  40. webpack-从零开始定制一个自己的vue-cli 用vue的都知道vue-cli是一个强大的构建vue项目的工具。vue-cli3.0前,它所有的配置都能看到,到vue-cli3.0后所有的配置都隐藏了。 既然vue-cli那么好,作为一个搞技术的,往往会想自己能不能也弄一次个类似的出来捏~ emmm..最近刚好有点空闲时间,自己就从零开始搭建了一个自己的vue-cli,顺便也踩踩坑。 在配置中细节…
  41. 如何加快 Node.js 应用的启动速度 关注 Node.js 应用进程启动耗时。
  42. vue中如何使用i18n实现国际化 在4k广告机中需要实现多语言切换,这时候接触到国际化,前端框架无数,其中几种热门的框架都有相匹配的国际化插件工具。比如: vue  +  vue-i18n angular  +  angular-translate react  +  react-intl jquery  +  jquery.i18n.property 在4K广告机…
  43. 深入理解Node.js 中的进程与线程 进程 与 线程 是一个程序员的必知概念,面试经常被问及,但是一些文章内容只是讲讲理论知识,可能一些小伙伴并没有真的理解,在实际开发中应用也比较少。本篇文章除了介绍概念,通过Node.js 的角度讲解 进程 与 线程 ,并且讲解一些在项目中的实战的应用,让你不仅能迎战面试官还可以在实战中完美应用。 文章导览 …
  44. js设计模式(二)深入理解享元模式 享元(flyweight)模式是一种用于性能优化的模式,“fly”在这里是苍蝇的意思, 意为蝇量级。享元模式的核心是运用共享技术来有效支持大量细粒度的对象。 复制代码 如果系统中因为创建了大量类似的对象而导致内存占用过高,享元模式就非常有用了。在JavaScript中,浏览器特别是移动端的浏览器分配的内存并不算多,如何节…
  45. 渗透测试 | 突破前端JS加密限制 现在前端开发为了提高爬虫的难度及加强安全性,都会在数据包提交前进行加密,最典型的就是传参加密,相信大家在测试的时候都遇到过,那么我们在抓取数据包并修改之后,修改之后的参数无法通过后端程序数据完整性的校验,就无法进行进一步测试。如果我们逆向解析出加密的过程,就可以模拟出相同的密文,通过后端接口的校…
  46. Vue之不完美的极致优化如果我们的项目是用脚手架搭建的,大部分的优化脚手架都帮你做了。比如:图片转base64、代码压缩等。
  47. jQuery的前世今生 作者:Danny Guo 翻译:奶爸码农 jQuery曾经是世上最流行的JavaScript库,在2000年后期,它得到了广泛的应用,围绕它也产生了一个丰富的生态系统,诞生了大量的插件、框架。 但是到了最近一段时间,jQuery的地位急剧下降。这篇文章会回顾一下jQuery的前世今生。 jQuery的历史 John Resig在2005年开发了JQuery…
  48. 【Angular系列】1. 使用Angular material主题定义自己的组件库的配色体系 本期为Angular系列的第一篇文章,我会从这里搭建Angular sample项目、组件库、主题、然后每个组件等。使之成为一个比较通用的组件库系列文章,目的有二:1、自己在写系列文章过程中不断夯实基础、不断学习补缺;2、分享给一些不熟悉angular及自定义组件的同学,使之快速上手并提高。 1. 使用Angular CLI命令行工具生成…
  49. 如何拿到9家大厂的前端校招offer 我就读于北京理工大学软件工程专业,是一名大四学生。从大一开始投入以前端为主的全栈开发,独立开发过多个中型和小型项目,是 佬铁|宿舍市集 小程序的社区创始人及独立项目负责人。 在学校里读书的时候,我就是一个闲不住的人。最近因为一个偶然的契机,接触到了校招季,最后定下了本科毕业就工作的规划目标。 于…
  50. vue-router的addRoutes的刷新404和重复路由的终极解决方案 Vue 后台管理项目经常有权限控制,不同角色使用不同权限,常用方法就是用 addRoutes 来动态添加路由,但有两个问题是官方文档上找不到解决方案的 角色切换,addRoutes提示有重复的路由,无法删除之前角色的路由 刷新页面,动态路由消失,提示404 常用解决方案 网上常用的解决方案角色切换的时候刷新页面,这…
  51. 美团 HTTP 服务治理实践 2019 年 7 月 6 日,OpenResty 社区联合又拍云,举办 OpenResty × Open Talk 全国巡回沙龙·上海站,美团基础架构部技术专家张志桐在活动上做了《美团 HTTP 服务治理实践》的分享。 OpenResty x Open Talk 全国巡回沙龙是由 OpenResty 社区、又拍云发起,邀请业内资深的 OpenResty 技术专家,分享 OpenResty 实战经…
  52. 这一次,彻底弄懂 Promise 原理 Promise 必须为以下三种状态之一:等待态(Pending)、执行态(Fulfilled)和拒绝态(Rejected)。一旦Promise 被 resolve 或 reject,不能再迁移至其他任何状态(即状态 immutable)。 基本过程: 初始化 Promise 状态(pending) 执行 then(..) 注册回调处理数组(then 方法可被同一个 promise 调用多次) 立…
  53. 花椒 Web 端多路音频流播放器研发 一、背景 语音交友直播间 Web 端使用 WebRTC (Web Real-Time Communications) 实现多路音频流传输的播放。但由于云服务等原因,看播端我们需要改成 HTTP-FLV 或 HLS 协议的媒体服务。并实现 移动端页面多路音频流同时播放 获取多路音频的可视化数据 …
  54. JavaScript原型系列(二)什么是原型继承 在上一节上面介绍了原型和原型链,即每个对象拥有一个 原型对象 ,通过 __proto__ 指针指向上一个 原型 ,并从中 继承方法和属性 ,同时原型对象也可能拥有原型,这样一层一层,最终指向 null ,这种关系被称为 原型链(prototype chain) 。 继承 是面向对象编程语言的一大核心功能点, JavaScript 是面向对象的只不…
  55. Vue 组件数据通信方案总结 (给前端大全加星标,提升前端技能) 作者:政采云前端团队 公号 / 季节 (本文来自作者投稿) 背景 初识 Vue.js ,了解到组件是 Vue 的主要构成部分,但组件内部的作用域是相对独立的部分,组件之间的关系一般如下图: …
  56. 一看就懂之webpack高级配置与优化所谓打包多页面,就是同时打包出多个html页面,打包多页面也是使用html-webpack-plugin,只不过,在引入插件的时候是创建多个插件对象,因为一个html-webpack-plugin插件对象只能打包出一个html页面。如:
  57. 精读《前端深水区》其实关于前端深水区的讨论,已经有了很多,也有了很多相关的文章。我也想借这篇关于深水区的讨论文章,讲一下自己对于深水区的理解。原文链接:技术路线:前端开发已进入深水区
  58. 浏览器渲染原理 (二)html中的css、javascript、dom之间的解析和相互阻塞关系 我们在看一些前端优化规则的时候,比如雅虎军规等等,都有看到 style 写在 head 中,但是外链 script 写在 body 的最后,以优化性能,都知道应该怎么做,但是不知道其中的原理。 如果还不知道浏览器渲染的原理的,看一看浏览器渲染原理这一篇文章。其实这个就是考验大家对 html 中的 css、javascript、dom 之间的解析和…

关注github前端日报 订阅精彩文章

前端日报栏目数据来自码农头条,每日分享互联网上热门的前端开发、移动开发、设计、资源和资讯等,为开发者提供动力,如果觉得内容对你有用,记得分享给你的小伙伴。进入码农头条查看更多


关注我

我的微信公众号:前端开发博客,在后台回复以下关键字可以获取资源。

  • 回复「小抄」,领取Vue、JavaScript 和 WebComponent 小抄 PDF
  • 回复「Vue脑图」获取 Vue 相关脑图
  • 回复「思维图」获取 JavaScript 相关思维图
  • 回复「简历」获取简历制作建议
  • 回复「简历模板」获取精选的简历模板
  • 回复「加群」进入500人前端精英群
  • 回复「电子书」下载我整理的大量前端资源,含面试、Vue实战项目、CSS和JavaScript电子书等。
  • 回复「知识点」下载高清JavaScript知识点图谱

每日分享有用的前端开发知识,加我微信:caibaojian89 交流