Quantcast

深度解读 | 姜文《让子弹飞》

苗怀明:经审查,四大名著皆存在严重问题,应予以销毁!

推女郎73期安沛蕾无圣光性感私房写真

金刻羽再撰文深度解析:为什么说我们可能面临1930年代的经济大萧条?

优秀辩护词 | 涉嫌煽动颠覆国家政权案最终控方撤诉

Facebook Twitter RSS

分享到微信朋友圈

点击图标下载本文截图到手机
即可分享到朋友圈。如何使用?

为了鼓励更多的人参与到自由互联网的开发,我们最新推出了GreatFire悬赏计划,请参赛者在下列任务中任选其中一个或多个,完成其中的任务目标,即可获得对应金额的奖励。

前端大全

动图演示11个必备 VS Code 插件

有助于你认识到你引入的文件大小。它以内联方式显示每个导入的大小,如果导入大于正常大小,则显示红色和黄色警告颜色。
2月21日 上午 11:50

性能测试:Firefox 73 vs Chrome 80

https://phoronix.com/scan.php?page=article&item=firefox-73-benchmarks
2月19日 下午 8:00

我写CSS的常用套路(附demo的效果实现与源码)

https://juejin.im/post/5e070cd9f265da33f8653f0
2月15日 下午 8:56

Chrome 80发布,新特性将对用户产生深远影响

引入更安静的消息通知机制就是本次更新的第二项重大更改。简单描述此机制就是,网页请求发送通知权限时,横幅或者弹窗通知会以更安静、更低调的方式呈现,而不再像原来那样在网页中间或顶部/底部占用空间。
2月9日 下午 8:05

前端性能优化之利用 Chrome Dev Tools 进行页面性能分析

这里列出的都是做的好的地方,本文例子共有16条,不过即使做的好,依然值得我们进去仔细看一下,因为像所有条目一样,这里的每个条目也有一个showmore,我们可以点进去仔细学习背后的知识和原理!
2月8日 下午 9:07

干货:快速开发一个Antd级别的组件库

Shaking就是基于ES6模块化的,在编译打包节点可以在AST(抽象语法树)中静态分析,将没有用到的代码剔除掉。我们经过编译打包后的es5代码是无法进行Tree
2月7日 下午 8:13

复制黏贴上传图片和跨浏览器自动化测试

'2436b48115486de952296f2b5295aeb90d284761278661102e7dda990c3f67022133080fb1bcd99d7f94678a991c57f1'
2月3日 下午 9:15

TypeScript和JavaScript混合开发,这或许是配上单元测试的最佳实践

当你有项目需要从javaScript迁移到TypeScript中时,有一部分同学做法是,把所有到文件从.js全部改成.ts,然后加上所有类型为any,这样完成快速迁移,但是其实不需要这样。
2月2日 下午 9:26

Typescript 那些好用的技巧

它只有当S类型是T类型的子集,或者T类型是S类型的子集时,S能被成功断言成T.
1月9日 下午 8:10

2008 至今,Chrome 如何成长为霸主

月,当时谷歌对浏览器中处理插页式视频广告等自动播放媒体的方式进行了更改,这个看似很小的更新被称为“统一自动播放”,使用户可以更好地控制自己的浏览体验。用户现在还可以有选择地禁用特定网站的音频播放。
1月1日 下午 10:10

你连 HTTPS 原理都不懂,还讲“中间人攻击”?

其实这就是非加密对称中公私钥的用处,虽然中间人可以得到证书,但私钥是无法获取的,一份公钥是不可能推算出其对应的私钥,中间人即使拿到证书也无法伪装成合法服务端,因为无法对客户端传入的加密数据进行解密。
2019年12月30日

来自新时代的 CSS

https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#optional-chaining[3]
2019年12月20日

性能!!让你的 React 组件跑得再快一点

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/is
2019年12月18日

如何实现一个高性能可渲染大数据的Tree组件

从上面的分析可以看出引发的性能问题都是因为渲染的节点过多导致,那么要解决这个问题就是尽量减少节点的渲染,然而在业界中与之相类似的解决方案就是虚拟列表虚拟列表的核心概念就是
2019年12月15日

你可能不知道的 CSS 计数器

中是通过两个属性控制的,'counter-increment'[1]和'counter-reset'[2]。通过这些属性定义的计数器用于'content’[3]属性的
2019年12月14日

让你的组件千变万化,Vue slot 剖玄析微

的后备内容:为一个插槽设置具体后备(默认)内容是很有用的,当父组件不添加任何插槽内容时,默认渲染该后备内容的值。-->
2019年12月13日

80%的求职者都不懂 Vue

因为它上手相对简单,小项目马上可以见效,中文资料也多,所以往往也是新手入门的首选框架。Vue
2019年12月11日

读 koa2 源码后的一些思考与实践

洋葱是由很多层组成的,你可以把每个中间件看作洋葱里的一层,根据app.use的调用顺序中间件由外层到里层组成了整个洋葱,整个中间件执行过程相当于由外到内再到外地穿透整个洋葱
2019年12月11日

ES7、ES8、ES9、ES10新特性大盘点

在ES10中,try-catch语句中的参数变为了一个可选项。以前我们写catch语句时,必须传递一个异常参数。这就意味着,即便我们在catch里面根本不需要用到这个异常参数也必须将其传递进去
2019年12月10日

基于 Vue 的两层吸顶踩坑总结

及以上的浏览器。乍一看不就是个吸顶嘛,应该不难吧,事实证明还是踩了很多坑才出来。兼容性问题多到吐血,我太难了。废话不多说,先看一下两层吸顶的最终实现效果,如下图所示。
2019年12月9日

前端领域的 Docker 与 Kubernetes

域名等一系列资源,然后登录主机自行搭建所需环境,部署应用上线,这样不仅不利于大规模操作,而且还增加了出错的可能,运维或开发这常常自己写脚本自动化完成,遇到一些差异再手动修改脚本,非常痛苦。
2019年12月8日

可能是最全的 “文本溢出截断省略” 方案合集

本文介绍了几种目前常见的文本截断省略的方案,各有利弊,各位同学可根据实际开发情况及需求选择方案。如果你还知道更好其他实现方案,欢迎在评论区留下宝贵评论。
2019年12月7日

不容错过的 Babel 7 知识汇总

_interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));var
2019年12月5日

万字长文之 Serverless 实战详细指南

https://service-r3uca4yw-1253736472.gz.apigw.tencentcs.com/release/test
2019年12月4日

网易云音乐前端性能监控实践

提供了三种方式供模拟较差的宿主机环境,其背后的逻辑是,如果页面能够在较差的环境下达到一个较好的测试分数、那么大部分用户对页面的直观感受都会较好。
2019年12月3日

关于前端埋点统计方案思考

https://developer.mozilla.org/zh-CN/docs/Web/API/Window/onbeforeunload
2019年12月2日

TCP为啥要3次握手和4次挥手?握两次手不行吗?

SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步挥手。
2019年12月1日

Vue CLI 首屏优化技巧

当打包构建应用时,JavaScript包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了。
2019年11月30日

为什么 Facebook 会选择微软 VS Code 作为内部开发工具?

Code,但大多数开发工作,都是直接在数据中心内的开发服务器上完成的。无缝、高性能地访问这些服务器上的代码,对提高生产率至关重要。远程开发是一个新兴趋势,FB
2019年11月28日

渲染树怎么形成的你真的很懂吗?

看完这篇文章赶紧检测一下你写的前端代码,脑补一下渲染树形成过程,想想自己代码有没有需要改善的地方,系列文章会继续分享,下篇该系列文章渲染树的布局与绘制以及虚拟DOM树出现的必要性,感谢观看。
2019年11月27日

一行 CSS 代码搞定响应式布局

然而,上面列子并没有给出我们想要的响应性,因为网格总是三列宽。我们希望网格能根据容器的宽度改变列的数量。要做到这一点,你必须学习如下三个概念:
2019年11月26日

10 个 CSS 高频面试题,你都会吗?

三栏布局,顾名思义就是两边固定,中间自适应。三栏布局在开发十分常见,那么什么是三栏布局?即左右模块固定宽度,中间模块随浏览器变化自适应,想要完成的最终效果如下图所示:下面列出四种实现方式,
2019年11月25日

一个阿里前端工程师的成长之路

开发就会开始理解你,他会感受到前端技术原来要比想象中难很多,原来玉伯团队是很不容易的。一旦有了这种感觉,你跟他的情感沟通、一些链接就建立起来了,他对你的感受就不一样了,后续有很多合作机会也就会出现。
2019年11月24日

JavaScript 中的位运算和权限设计

位运算在权限系统中的使用传统的权限系统里,存在很多关联关系,如用户和权限的关联,用户和角色的关联。系统越大,关联关系越多,越难以维护。而引入位运算,可以巧妙的解决该问题。
2019年11月23日

React 函数式组件性能优化指南

合理拆分组件还有很多其他好处,比如好维护,而且这是学习组件化思想的第一步,合理的拆分组件又是一门艺术了,如果拆分得不合理,就有可能导致状态混乱,多敲代码多思考。
2019年11月21日

前端代码质量:怎样实现一个支持多语言、高扩展性的 Linter

工具运行环境的不同,展现的形式也不一样。比如命令行工具一般会告诉程序员在哪个文件的哪行的哪一列违反了哪一条规则,这时候程序员需要找到这个文件的这一行的这一列针对这个规则进行修改;而在
2019年11月19日

JS 框架安全报告:jQuery 下载次数超过 1.2 亿次

中,迄今为止被跟踪影响到所有版本的六个漏洞,其中四个属于中等级别的跨站点脚本漏洞,一个属于中等级别的原型污染漏洞(Prototype
2019年11月18日

深入理解 Node.js 进程与线程

子进程,这个过程中也会通过环境变量(NODECHANNELFD)告诉子进程这个IPC通道的文件描述符。子进程在启动的过程中,根据文件描述符去连接这个已存在的IPC通道,从而完成父子进程之间的连接。
2019年11月17日

详细 preact hook 源码逐行解析

可以看出,useContext会在初始化的时候,当前组件对应的Context.Provider会把该组件加入订阅回调(provider.sub(currentComponent)),当
2019年11月16日

移动端体验优化经验总结与实践

骨架屏也是在移动端页面首屏优化的一个重要手段,在页面数据未准备好的情况,相比与枯燥的白屏页面而言,展示骨架屏能给用户一个好的感官体验。但是如何生成质量高的骨架屏也是一个难点,需要综合考虑
2019年11月15日

经常被面试官考的 JavaScript 数据类型知识你真的懂吗?

对象类型也叫引用类型,array和function是对象的子类型。对象在逻辑上是属性的无序集合,是存放各种值的容器。对象值存储的是引用地址,所以和基本类型值不可变的特性不同,对象值是可变的。
2019年11月14日

9 个项目助你在 2020 年成为前端大神!

https://www.telerik.com/blogs/building-a-blog-with-vue-and-markdown-using-gridsome
2019年11月13日

一文搞懂 Web 中暗藏的密码学

_0xa1cc=["\x48\x65\x6C\x6C\x6F\x2C\x20","\x6C\x6F\x67","\x4E\x65\x77\x20\x75\x73\x65\x72"];function
2019年11月12日

setTimeout 的实现原理和使用注意

毫秒。可以看下源码(https://cs.chromium.org/chromium/src/third_party/blink/renderer/core/frame/dom_timer.cc)
2019年11月11日

JavaScript 运行原理

是一门高级语言,但是最终计算机能理解只有1和0。那么我们编写的代码是如何被计算机理解的呢?掌握所学编程语言的基础知识将让您能编写出更好的代码。在本文中,我们仅探讨一个问题:JavaScript
2019年11月10日

一篇文章彻底搞定富文本原理 + 实战

Range,而现在只有一个,所以写0)。看得一头雾水😴?没关系,看下面两张图就懂了😮:一句话说就是:通过上面那句命令我们能够获取到当前的选中信息,一般会先保存下来,然后在需要的时候还原。此外
2019年11月9日

腾讯CDC团队:前端异常监控解决方案

为了确保上报是成功的,在上报时需要有一个确认机制,由于在服务端接收到上报日志之后,并不会立即存入数据库,而是放到一个队列中,因此,前后端在确保日志确实已经记录进数据库这一点上需要再做一些处理。
2019年11月8日

这一次,彻底弄懂 Promise 原理

}Finally方法在实际应用的时候,我们很容易会碰到这样的场景,不管Promise最后的状态如何,都要执行一些最后的操作。我们把这些操作放到
2019年11月7日

20 个让你效率更高的 CSS 代码技巧

border-box;}上面的代码看起来有些霸道,将所有元素的内外边距都设置为0了,而正是没有了这些默认内外边距的影响,使得我们后面的CSS设置会更加的容易。同时box-sizing:
2019年11月6日

NPM 如何管理依赖包版本

主工程依赖了很多子模块,都是团队成员开发的npm包,此时建议把版本前缀改为~,如果锁定的话每次子依赖更新都要对主工程的依赖进行升级,非常繁琐,如果对子依赖完全信任,直接开启^每次升级到最新版本。
2019年11月5日

Typescript 严格模式有多严格?

user.username.toLowerCase();方案#3:在构造函数中赋值最有用的解决方案是向username构造函数添加参数,然后将其分配给username属性。
2019年11月4日

炫技,从 12.67s 到 1.06s 的网站性能优化实战

其实在chrome中,也为我们提供了相关插件供我们查看页面渲染层的分布情况,以及GPU的占用率:(所以说,平时我们得多去尝试尝试chrome的那些莫名其妙的插件,真的会发现好多东西都是神器)
2019年11月3日

vue-router 的超神之路

状态对象可以是能被序列化的任何东西。原因在于Firefox将状态对象保存在用户的磁盘上,以便在用户重启浏览器时使用,我们规定了状态对象在序列化表示后有640k的大小限制。如果你给
2019年11月1日

浅谈:前端如何赋能业务

在不少缺前端的公司,这部分通常也由后端用jQuery一把梭。但后端撸出来系统,通常都欠缺交互意识(无导航、报错信息等设计)、撸不出稍微复杂的布局(见过被float和flex难住的)、缺少动效、SPA
2019年10月31日

Chrome 浏览器垃圾回收机制与内存泄漏分析

浏览器,调出调试面板(DevTools),点击Performance选项(低版本是Timeline),勾选Memory复选框。一种比较好的做法是使用强制垃圾回收开始和结束记录。在记录时点击
2019年10月30日

代码美化的艺术

这段代码或许还不是最典型的例子,但是也能看出两者的不同,在实际的业务当中,类似的折行可能更多,而从我个人的角度来看,过多的折行反而破坏了代码的完整度。目前常用的代码宽度有三种,分别是
2019年10月29日

React Hooks异步操作二三事

写法的组件也就完全可以被函数式组件替代。虽然是否要把老项目中所有类组件全部改为函数式组件因人而异,但新写的组件还是值得尝试的,因为代码量的确减少了很多,尤其是重复的代码(例如
2019年10月27日

JavaScript 手写代码无敌秘籍

在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。
2019年10月26日

微信 H5 页面兼容性解决方案

微信H5页面其实很多知识,登陆授权,jssdk授权,这里就只做了分享,当然还有上传图片、微信支付等功能,都可能会遇到坑,以上几个坑也是比较常遇到的,如果有更好的解决方案的话,欢迎在留言区分享
2019年10月25日

2019 年了,你还不会 CSS 动画?

的特例。它们被称为贝塞尔曲线。除了开发者工具外,《CSS揭秘》作者也写了的一个在线调试贝塞尔曲线的网站:cubic-bezier.com。贝塞尔曲线这个知识点很有用,canvas
2019年10月22日

Vue 3.0前的 TypeScript 最佳入门实践

接口里的属性不全都是必需的。有些是只在某些条件下存在,或者根本不存在。例如给函数传入的参数对象中只有部分属性赋值了。带有可选属性的接口与普通的接口定义差不多,只是在可选属性名字定义的后面加一个
2019年10月21日

如何使用 Proxy 来代理 JavaScript 里的类

如果你希望监测是谁给一个对象的属性赋的值,或者一个函数执行了多久、执行了多少次、谁执行的,这个库将非常有用。我知道可能还有其他更好的工具来实现上面的功能,但是在这里我创建这个库就是为了用一用这个
2019年10月20日

如何用120行代码,实现一个交互完整的拖拽上传组件?

每个effect都可以返回一个清除函数。如此可以将添加(componentDidMount)和移除(componentWillUnmount)
2019年10月19日

JavaScript 工具函数大全

`sampleSize`:在指定数组中获取指定长度的随机数此代码段可用于从数组中获取指定长度的随机数,直至穷尽数组。使用Fisher-Yates算法对数组中的元素进行随机选择。
2019年10月18日

解读HTTP/2与HTTP/3 的新特性

协议,主要解决HTTP/1.1效率不高的问题。谷歌推出SPDY,才算是正式改造HTTP协议本身。降低延迟,压缩header等等,SPDY的实践证明了这些优化的效果,也最终带来HTTP/2的诞生。
2019年10月17日

深入了解 ES6 强大的 ... 运算符

'Charmander';pokemon.abilities.push('Surf');console.log(squirtleClone);//Result:
2019年10月16日

axios 是如何封装 HTTP 请求的

});从上面的代码,我们可以知道:发送请求之前,我们可以对请求的配置参数(config)做处理;在请求得到响应之后,我们可以对返回数据做处理。当请求或响应失败时,我们还能指定对应的错误处理函数。
2019年10月14日

动手实现一个 react-redux

【一起学习造轮子(三):从零开始写一个React-Redux】https://juejin.im/post/5b32f145f265da596a3682b4
2019年10月13日

Chrome Devtools 高级调试指南(新)

对象节点:console.dir()打印出该对象的所有属性和属性值.console.dir()和console.log()的作用区别并不明显。若用于打印字符串,则输出一摸一样。
2019年10月12日

一文搞懂浏览器缓存机制

降低服务器压力:给网络资源设定有效期之后,用户可以重复使用本地的缓存,减少对源服务器的请求,间接降低服务器的压力。同时,搜索引擎的爬虫机器人也能根据过期机制降低爬取的频率,也能有效降低服务器的压力。
2019年10月11日

面向对象之 7 大基本原则(JS版)

面向对象编程有自己的特性与原则,如果对于面向对象有一些了解的话,面向对象三大特征,封装、继承、多态,如果对面向对这三个概念不太了解,请参考面向对象之三个基本特征(javaScript)。
2019年10月10日

2019 大龄前端如何准备面试?

面试之前要复习自己所有的基础知识。算法比较难准备,要提前几个月来看。基础知识相对容易准备,可以相对延后。算法可以陆续把leetcode上简单的题目都做一做。基础知识按照自己的脑图来准备。
2019年10月9日

WebWorker 在文本标注中的应用

https://github.com/xiaoiver/custom-mapbox-layer/blob/master/src/layers/TextLayer.ts#L105-L118import
2019年10月8日

如何实现 React 中的状态自动保存?

状态缓存是应用中十分常见的需求,在需要处理的数据量较少时,使用手动状态缓存就可以解决大多数问题,但当情况复杂时,还需要尝试将缓存功能单独拎出来解决,以便在业务开发过程中更好地进行关注点分离
2019年10月7日

JavaScript 中的“黑话”

那么它们到底有什么用呢?其实位运算就是用计算机底层电路所有运算的基础,为了让计算机的运算更加简单,而不用去辨别符号位,所有值都采用加法运算,因此,人们设计了原码,通过符号位来标识数字的正负:
2019年10月6日

终于来了!Vue 3.0 源码开放

传送门:https://github.com/vuejs/vue-next
2019年10月5日

大前端时代,浅谈 JavaScript 开发重型跨平台应用以及架构

你甚至可以看成Electron给web网页套上一层壳,你可以在主进程写你的Node.js去实现功能,渲染进程你怎么写怎么写,还可以呼叫封装好的原生接口。遇到特别复杂的需求,用C++插件去实现吧
2019年10月2日

一看就懂之 webpack 高级配置与优化

对于多入口情况,如果某个或某些模块,被两个以上文件所依赖,那么可以将这个模块单独抽离出来,不需要将这些公共的代码都打包进每个输出文件中,这样会造成代码的重复和流量的浪费,即如果有两个入口文件
2019年9月30日

从零开始手写 redux

store.dispatch);//派发时counter.add(number);counter.minus(number);这里看起来并没有精简太多,后面在分析
2019年9月29日

非常全面的前端协作规范

笔者个人是比较喜欢这个API规范,但是我发现很多开发者并不能真正(或者说没心思)理解它,设计出来的接口,跟我想象的相差甚远。换句话说,对于RESTful,开发者之间很难达成一致的理解,容易产生分歧。
2019年9月28日

做笔记的心得分享

关于如何改进,我想大家都很清楚:一是在态度上要端正——树立终身学习,不断精进的理念;二是在方法上要注重内在规律的学习和剖析模式的归纳(剖析模式,在这里可以理解为解决某一类问题的一般套路、模式)。
2019年9月27日

JS 引擎 V8 如何与 Lite 模式两开花?

1KB)之后,延迟分配反馈向量。由于大多数函数不经常执行,因此在大多数情况下避免使用反馈向量分配,但会在需要的地方快速分配它们以避免性能回退,并仍然允许优化代码。
2019年9月25日

基于 Vue 和 TS 的 Web 移动端项目实战心得

因为公司在这方面没有太多技术沉淀,所以在开发期间遇到了很多坑,经过一年多的技术攻克积累,最终形成了这套比较完善的解决方案,总结出来希望能够帮助到大家,尤其是对一些中小公司这方面经验不足的(PS:
2019年9月23日

透过现象看本质: 常见的前端架构风格和案例

NodeJS是单线程的,为了利用多核资源,NodeJS标准库提供了一个cluster模块,它可以根据CPU数创建多个Worker进程,这些Worker进程可以共享一个服务器端口,对外提供同质的服务,
2019年9月22日

JS 服务器推送技术 WebSocket 入门指北

服务端收到客户端发送来的握手请求后,如果数据包数据和格式正确、客户端和服务端的协议版本号匹配等等,就接受本次握手连接,并给出相应的数据回复,同样回复的数据包也是采用HTTP协议传输。
2019年9月21日

前端 Web Workers 到底是什么?

在某些渲染场景下,比如渲染复杂的canvas的时候需要计算的效果比如反射、折射、光影、材料等,这些计算的逻辑可以使用Worker线程来执行,也可以使用多个Worker线程,这里有个射线追踪的示例。
2019年9月20日

探寻浏览器渲染的秘密

了解了上面的浏览器的架构,下面我们说说今天的主角渲染进程,关于浏览器多进程之间是如何配合最后在屏幕上展示内容的,这个后面会写文章记录。现在我们说说渲染进程的事儿。
2019年9月19日

烧脑!JS+Canvas 带你体验「偶消奇不消」的智商挑战

true}注:该章节内容图片均来自网络,如有侵权,请告知删除。另外有兴趣的同学可以使用其他方法来实现判断一个点是否在任意多边形内部。如何判断游戏结果是否正确?探索的过程固然精彩,而结果却更令我们期待
2019年9月18日

Google 员工吐槽 TypeScript :类型检查不太好

boolean;两者看起来可能非常相似。但试想一下,一个函数接受了一个谓词并返回一个数组过滤器,并像上面的代码一样使用:function
2019年9月17日

如何让你的 JS 写得更漂亮

这里你可能会有疑问了,有些人喜欢用==,有些人喜欢用===,大家的风格不一样,你为什么要强制别人用===呢?习惯用==的人,不能仅仅是因为==比===少敲了一次键盘。为什么不提倡用==呢?
2019年9月16日

5分钟搭一个企业级脚手架

笔者认为,只有够精简,才能降低入门门槛,才能强化记忆;因此,本文的案例,在成熟的脚手架上进行不断删减,剔除掉哪些徒增记忆负担的部分,只保留精髓和核心,旨在快速在脑海里建模出一个企业级脚手架
2019年9月15日

不要再问React Hooks能否取代 Redux 了

Hooks确实提供了一些选择去管理应用的状态。尤其是useState、useReducer和useContext方法,提供来新的方式去维护你的状态,这被证明比先前React提供的选项更好、更有条理。
2019年9月14日

一文搞懂 Webpack 多入口配置

最近在做项目的时候遇到了一个场景:一个项目有多个入口,不同的入口,路由、组件、资源等有重叠部分,也有各自不同的部分。由于不同入口下的路由页面有一些是重复的,因此我考虑使用
2019年9月13日

React高频面试题梳理,看看面试怎么答?(上)

以前我写的源码分析的文章,并没有很多人看,因为大部分情况下你不需要深入源码也能懂得其中原理,并解决实际问题,这也是我总结这些面试题的原因,让你在更短的时间内获得更大的收益。
2019年9月12日

浏览器垃圾回收机制与 Vue 项目内存泄漏场景分析

相同,如果垃圾回收器回收的内存分配量低于程序占用内存的15%,说明大部分内存不可被回收,设的垃圾回收触发条件过于敏感,这时候把临街条件翻倍,如果回收的内存高于
2019年9月11日

Chrome 让人失望,是时候转到 Firefox 或 Edge ?

“虽然这会对收入造成负面影响,但出版商认为这是一个短期问题。许多出版商回应反追踪技术说,他们已经在开发基于个人信息的定向广告的替代品。从本质上说,他们认为隐私符合他们的长期战略商业利益。”
2019年9月10日

愿未来没有 Webpack

https://github.com/xitu/gold-miner/blob/master/TODO1/pika-web-a-future-without-webpack.md
2019年9月9日

深入理解图片和框架的原生懒加载功能

值成为默认选项,世界上最流行的浏览器即将对视口外的图片和框架应用懒加载技术。决堤般的通信量会大面积击溃那些健壮性不足的网站,而且,蜂拥而至的图片探测请求也会伤及网络服务器。
2019年9月8日

新手学习 React 迷惑的点(完整版)

我的回答是执行过程代码同步的,只是合成事件和钩子函数的调用顺序在更新之前,导致在合成事件和钩子函数中没法立马拿到更新后的值,形式了所谓的“异步”,所以表现出来有时是同步,有时是“异步”。
2019年9月6日

十分钟快速了解 JS 中的 offset、scroll、client

offsetParent的父级元素中最近的(在包含层次中最靠近的),并且是已进行过CSS定位的容器元素。如果这个容器元素未进行CSS定位,
2019年9月5日

Vue 组件数据通信方案总结

https://cn.vuejs.org/v2/api/index.html?_sw-precache=a7a4d39c5138496b644f27256d087649#ref
2019年9月4日

增长最快的TypeScript ,你不得不看!

和其他一些诸如泛型、类型定义、命名空间等特征的集合,而且能够编译成普通的JavaScript
2019年9月3日

Web 页面录屏实现

};}sssssssssssssssssssssssssssssssssssssssssssssssssssssss通过以上代码,我们可以将整个documentElement转化为Virtual
2019年9月3日

面试加分项之 Nginx 反向代理与负载均衡

突然想起了deno项目发布的时候,一个搞笑的issue,“求别更新了,老子学不动了”。虽然看起来是一个玩笑的issue,但却道出了前端们不得不表现出来的疲态,知识点越来越庞大,学习的内容越来越多
2019年9月2日

多图预警,Chrome 浏览器前端调试技巧大揭秘

document.querySelector()方法的别名。不过比较少为人知的应该是它的第二个参数。指定从哪个节点开始选择。有时候想减少范围时,尤其管用!
2019年9月1日

JavaScript Errors 指南

Chrome也没有正确得计算行内脚本中发生错误的行数。访问如下链接,了解更多关于行内脚本内容:https://bugs.chromium.org/p/v8/issues/detail?id=3920
2019年8月31日

28 道 JavaScript 面试题,看看能错几道?

getUser函数接收一个对象。对于箭头函数,如果只返回一个值,我们不必编写花括号。但是,如果您想从一个箭头函数返回一个对象,您必须在圆括号之间编写它,否则不会返回任何值!下面的函数将返回一个对象:
2019年8月30日

Webpack优化——将你的构建效率提速翻倍

构建太慢了、太“重”了。就以笔者本次近期为团队优化的项目为例,如下图所示,我们可以看到,随着项目的不断堆砌以及一些不正确的引用,团队内的项目单次构建时长已经达到了40s,这就造成了工程师如果需要重启
2019年8月29日

CSS @supports实现的级联网页设计

Grid发布,我们在网络演变中又抵达了一个里程碑。网络的美妙之处在于其向后兼容和容错能力。浏览器功能很多程度上是锦上添花,保持基础的部分并在它们之上构建更多能力,同时弃用不能很好工作的部分。
2019年8月28日

策略模式实现动态表单验证

Pattern)又称政策模式,其定义一系列的算法,把它们一个个封装起来,并且使它们可以互相替换。封装的策略算法一般是独立的,策略模式根据输入来调整采用哪个算法。关键是策略的实现和使用分离。
2019年8月27日

享元模式与资源池

在上面的例子中,驾考车相当于有限资源,考生作为访问者根据资源的使用情况从资源池中获取资源,如果资源池中的资源都正在被占用,要么资源池创建新的资源,要么访问者等待占用的资源被释放。
2019年8月26日

前端应该如何准备数据结构和算法?

贪心算法与动态规划的不同在于它对每个子问题的解决方案都作出选择,不能回退,动态规划则会保存以前的运算结果,并根据以前的结果对当前进行选择,有回退功能,而回溯算法就是大量的重复计算来获得最优解。
2019年8月25日

送你58道JavaScript面试题(上)

前两天去看了看已经更新到101题了,这些题目中已经有很多小伙伴贡献了中文翻译,我利用空闲时间也把剩余题目翻译完成并提交了
2019年8月24日

你发现没?www和https://又被Chrome地址栏隐藏了

chrome://flags/#omnibox-ui-hide-steady-state-url-scheme-and-subdomains,然后按回车
2019年8月22日

详解 React 16 的 Diff 策略

函数来的,只是传递的参数不同而已。这个参数叫shouldTrackSideEffects,他的作用是判断是否要增加一些effectTag,主要是用来优化初次渲染的,因为初次渲染没有更新操作。
2019年8月21日

Deep In React之浅谈 React Fiber 架构(一)

把渲染更新过程拆分成多个子任务,每次只做一小部分,做完看是否还有剩余时间,如果有继续下一个任务;如果没有,挂起当前任务,将时间控制权交给主线程,等主线程不忙的时候在继续执行。这种策略叫做
2019年8月20日

一文搞定前端 Jenkins 自动化部署

选项,增加构建后执行的script,具体也可以参考文章:jenkins部署maven项目构建后部署前执行shell脚本
2019年8月19日

前端开发 20 年变迁史

第一次浏览器战争年代非常久远了,但其结局告诉我们,其实技术强弱并不重要。那时技术保护并没有这么重视,否则微软的行为可能会被告(谷歌的openSDK仅抄袭几十行代码,被Oracle公司诉讼赔88亿)。
2019年8月18日

正确处理下载文件时HTTP头的编码问题(Content-Disposition)

如果放任编码问题不管,那么你一定会遇到在某个系统及浏览器下下载文件时文件名乱码的情况;如果你尝试搜索解决,那么你很可能会找到一堆自相矛盾的解决方案(我可以负责任地告诉你,其中的99%都是不符合标准的
2019年8月17日

提升开发幸福感的10条JS技巧

'!#$%()*+,-./:;=?@[]^_`{|}~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'genUid()
2019年8月16日

一文带你了解 JavaScript 函数式编程

函数式编程是一种编程范式,主要是利用函数把运算过程封装起来,通过组合各种函数来计算结果。函数式编程意味着你可以在更短的时间内编写具有更少错误的代码。举个简单的例子,假设我们要把字符串
2019年8月14日

JS 的未来和 Web 多语言开发

这项技术已经有五年了,我们还在维护中,我们冷静下来思考一下,为什么直到现在还没有人指出该如何使用它。因为人们很难做到该如何更容易的去理解它(因为它很抽象),这也是为什么我们要来谈下它到底是什么。
2019年8月13日

在框架设计中寻求平衡

另一方面,如果你是在模板中编译的渲染代码,通常它可以生成一个更加直接的渲染指令,并且具有更好的原生性能。原因就是:根据定义,模板是一种非常有约束的语言,你只能以某种方式去编写模板。
2019年8月11日

前端路由跳转基本原理

URL,所以在路由跳转的时候会丢失一些地址信息,在刷新或直接访问路由地址的时候会匹配不到静态资源。因此需要在服务器上配置一些信息,让服务器增加一个覆盖所有情况的候选资源,比如跳转
2019年8月10日

Web 实现前后端分离,前后端解耦

2、UI出好设计图后,前端工程师只负责将设计图切成html,需要由java工程师来将html套成jsp页面,出错率较高(因为页面中经常会出现大量的js代码),修改问题时需要双方协同开发,效率低下。
2019年8月9日

手摸手教你撸一个脚手架

project-name。我们这次编写的脚手架(eos-cli)具备以下能力(脚手架的名字爱叫啥叫啥,我选用了Eos黎明女神):
2019年8月8日

50% 的 Chrome 扩展程序几乎无人使用

还表示扩展程序带来不小的安全挑战(这将在后续的扩展分析报告中作出探讨)。这都体现出目前扩展程序生态系统的发展瓶颈,那么究竟该如何突破?
2019年8月7日

彻底理解 cookie、session、token

每一次请求都需要token。token应该在HTTP的头部发送从而保证了Http请求无状态。我们同样通过设置服务器属性Access-Control-Allow-Origin:*
2019年8月6日

通过阅读源码,提高你的 JS 水平

上阅读代码时,请确保你阅读的是最新版本。你可以通过单击用于更改分支的按钮并选择“tags”来查看具有最新版本标记的提交中的代码。库和框架永远在进行更改,因此你不会想了解可能在下一版本中删除的内容。
2019年8月5日

CSS 是如何影响浏览器元素在文档中的排列

值时,你就创建了一个新的层叠上下文,其中有着独立于页面上其他层叠上下文和层叠层的层叠层,这就相当于你把另一张桌子带到了房间里。
2019年8月4日

详解 ES 2018 新特性

在上述代码中,spread操作符遍历obj1属性,并将其添加到obj2的属性中;而在之前的版本中,如此处理会抛出一个异常。需要注意的是,如果存在相同的属性名,只有最后一个会生效。
2019年8月2日

深入理解 ESLint

但是代码规范这个东西,最好是团队成员之间一起来制定,确保大家都能够接受,如果实在是有人有异议,就只能少数服从多数了。虽然这节的标题叫最佳配置,但是软件行业并有没有什么方案是最佳方案,即使
2019年8月1日

你未必知道的 49 个 CSS 知识点

需要说明的是,顺序仍是按当时发布顺序罗列的,还没有系统的总结,多多包涵。另外这里,老姚谢谢各位一如既往的支持。😘😘😘
2019年7月31日

你必须懂的前端性能优化

协商缓存依赖于服务端与浏览器之间的通信。协商缓存机制下,浏览器需要向服务器去询问缓存的相关信息,进而判断是重新发起请求、下载完整的响应,还是从本地获取缓存的资源。如果服务端提示缓存资源未改动(Not
2019年7月30日

21 个VSCode 快捷键,让代码更快,更有趣

如果你像我一样,你可能会有一种无法控制的欲望,想要在一个组中重新排列选项卡,其中选项卡相互关联,左边的选项卡是比较重要文件,而右边的选项卡是相对不重要的文件。通过
2019年7月29日

阿里大佬浅谈大型项目前端架构设计

由于篇幅所限,本文很难直接给出定量的值,因此建议架构设计者,先确保项目中设计使用2.7里的埋点系统,根据埋点系统获取的数据,对项目效果进行定量分析,并以此写成PPT和其他部门/上级管理者进行协调。
2019年7月28日

前端进阶必须知道的正则表达式知识

(?=exp)匹配一个位置,这个位置的右边能匹配表达式exp,注意这个表达式仅仅匹配一个位置,只是它对于这个位置的右边有要求,而右边的东西是不会被放进结果的,比如用
2019年7月27日

生猛!FFmpeg 开发者徒手撸了一个 JS 引擎

规范,包括模块、异步生成器和代理。它还支持数学扩展,比如大整数(BigInt)、大浮点数(BigFloat)和操作符重载。QuickJS
2019年7月26日

8 个问题看你是否真的懂 JS

每次调用'foo'都会继续在微任务队列上添加另一个'foo'回调,因此事件循环无法继续处理其他事件(滚动,单击等),直到该队列完全清空为止。因此,它会阻止渲染。
2019年7月25日

关于 Babel 你必须知道的

当然我们一般不会使用到这个模块,因为一般我们都不会手动去做这个工作,这个工作基本都集成到模块化管理工具中去了,比如
2019年7月24日

浏览器缓存机制全攻略

降低服务器压力:给网络资源设定有效期之后,用户可以重复使用本地的缓存,减少对源服务器的请求,间接降低服务器的压力。同时,搜索引擎的爬虫机器人也能根据过期机制降低爬取的频率,也能有效降低服务器的压力。
2019年7月23日

做 1 个静态页面要价 12 万,有错吗?

接下来的一周我得到了回复。这是一封来自经理的冷邮件,他把我每天的工作日分成不同的时间段。然后他把我工作的那部分时间高亮了,每天标记一个小时的午休时间。最后他用我们商定的小时费率做了一些计算。
2019年7月22日

拆解 JavaScript 中的异步模式

,可讲的实在太多了,关于它的书都有好多本。说实话,其实我还没有在生产环境中用过它,不过最近也看了很多关于它的资料,觉得稍微有些理解其背后的思想,所以在此记录,如果有不对的地方非常欢迎大家指出。
2019年7月21日

你需要了解的前端骨架屏注入实践

打包到对应的静态路由页面中,不过要注意的是这个插件目前只支持history方式的路由,不支持hash方式,且目前只支持首页的骨架屏,并没有组件级的局部骨架屏实现,作者说以后会有计划实现。
2019年7月20日

关于裸辞,关于前端面试

复习基础+看面试题+准备简历技术点/项目经验,是我认为比较有效和通用的准备面试方案。但是在面试的时候,往往面试官会提出一些和我们本身已具备技能并不相符的要求,这个时候要不要调整我们的复习方向呢?
2019年7月19日

a 可以同时 == 1 && == 2 && == 3吗?

是正则表达式的一个可读可写的整型属性,用来指定下一次匹配的起始索引。只有正则表达式使用了表示全局检索的
2019年7月18日

Chrome 开发者工具的各种骚技巧

https://juejin.im/post/5af53823f265da0b75282b0f
2019年7月17日

Lodash 严重安全漏洞背后:你不得不知道的 JavaScript 知识

express();app.use(bodyParser.json())app.use(cookieParser());app.use('/',
2019年7月16日

深入浅出 Vue 响应式原理

这种方法将数组的常用方法进行重写,进而覆盖掉原生的数组方法,重写之后的数组方法需要能够被拦截。但有些数组操作Vue时拦截不到的,当然也就没办法响应,比如:
2019年7月13日

JS 中的垃圾回收

对象被分成两组:『新的』和『旧的』。许多对象出现,完成他们的工作并快速释放,他们可以很快被清理。那些长期存活下来的对象会变得『老旧』,而且检查的次数也会减少。
2019年7月9日

JavaScript 常见的六种继承方式

也就是Person的实例,这样就可以访问到父类的私有方法,然后再通过__proto指向父类的prototype就可以获得到父类原型上的方法。于是做到了将父类的私有、公有方法和属性都当做子类的公有属性
2019年7月8日

浏览器渲染基本原理解析

DOM对象类型很丰富,什么head、title、div,而Render树相对来说就比较单一了,毕竟它的职责就是为了以后的显示渲染用嘛。Render树的每一个节点我们叫它渲染器renderer。
2019年7月6日

Chrome 开发者工具的最佳用法

您当前正在调试的代码可能有各种断点,有时候甚至会达到几百个。这几百个断点可能会浪费您大量的时间。在这种情况下,可以暂时暂停所有断点的执行,您可以通过切换下图中的图标来操作:
2019年7月5日

JS 中可以提升幸福度的小技巧

下面的代码里,我们希望删除_internal和tooBig参数。我们可以把它们赋值给internal和tooBig变量,然后在cleanObject中存储剩下的属性以备后用。
2019年7月2日

JS 开发常用工具函数

target)简单的深克隆可以使用JSON.parse()和JSON.stringify(),这两个api是解析json数据的,所以只能解析除symbol外的原始类型及数组和对象
2019年7月1日

揭秘 Vue 中的 Virtual Dom

简单点讲,在Vue的底层实现上,Vue将模板编译成虚拟DOM渲染函数。结合Vue自带的响应系统,在状态改变时,Vue能够智能地计算出重新渲染组件的最小代价并应到DOM操作上。
2019年6月28日

自定义错误及扩展错误

包装异常是一种广泛应用的技术,当一个函数处理低级别的异常时,用一个高级别的对象来报告错误。低级别的异常有时会变成这个对象的属性,就像上面例子中的
2019年6月27日

20 个让你效率更高的 CSS 代码技巧

border-box;}上面的代码看起来有些霸道,将所有元素的内外边距都设置为0了,而正是没有了这些默认内外边距的影响,使得我们后面的CSS设置会更加的容易。同时box-sizing:
2019年6月25日

React:useHooks小窍门

elapsed;}useWindowSize一个真正常见的需求是获取浏览器当前窗口的尺寸。这个hook返回包含宽高的对象。如果在服务器端执行(没有window对象),则宽度和高度的值将未定义。
2019年6月24日

JetBrains 发布 2019 年 JS 调查报告

从阿根廷、巴西、加拿大、中国、法国、德国、印度、日本、墨西哥、波兰、俄罗斯、韩国、西班牙、土耳其、乌克兰、英国和美国收集了足够大的样本。全球约
2019年6月23日

你真的掌握变量和类型了吗

在ECMAScript关于类型的定义中,只给出了Object类型,实际上,我们平时使用的很多引用类型的变量,并不是由Object构造的,但是它们原型链的终点都是Object,这些类型都属于引用类型。
2019年6月22日

Javascript 面试核心考点

(1)捕获阶段:事件从window对象自上而下向目标节点传播的阶段; (2)目标阶段:真正的目标节点正在处理事件的阶段; (3)冒泡阶段:事件从目标节点自下而上向window对象传播的阶段。
2019年6月20日

Vue+Node+高德地图+Echart做一款出行可视化全栈webapp

用户确定出发地、目的地、交通工具,选择公共交通出行,用户输入位置关键字,选择合适出发/目的位置,选择乘坐交通工具,规划出行路线,选择某一条路线,确定后点击保存上传本次出行记录。
2019年6月19日

异常处理,"try..catch"

不管你多么的精通编程,有时我们的脚本总还是会有一些错误。可能是因为我们的编写出错,或是与预期不同的用户输入,或是错误的的服务端返回或者是其他总总不同的原因。
2019年6月18日

送你 43 道 JS 面试题

这意味着变量在创建阶段会被提升(JavaScript会在创建变量创建阶段为其分配内存空间),默认值为undefined,直到我们实际执行到使用该变量的行。
2019年6月17日

Chrome 承诺不削弱广告屏蔽功能

最近提交给美国证券交易委员会(SEC)的表单中,提到广告屏蔽插件是谷歌收入的一个「风险因素」。
2019年6月16日

尤雨溪:Vue Function-based API RFC

的包装对象同时还是响应式的数据源。有了这样的容器,我们就可以在封装了逻辑的组合函数中将状态以引用的方式传回给组件。组件负责展示(追踪依赖),组合函数负责管理状态(触发更新):
2019年6月14日

用 JS 开发跨平台桌面应用,从原理到实践

中的依赖进行打包。所以我们应尽可能的减少denpendencies中的依赖。在上面的进程中,我们使用webpack对渲染进程进行打包,所以渲染进程的依赖全部都可以移入devDependencies。
2019年6月13日

Firefox 和 Chrome 拼性能,结果……

的首个稳定版,更新说明里面虽然一如既往地写到“包含性能改进”,但对包括笔者在内的大部分用户而言,这些所谓的改进其实很难感知。
2019年6月12日

一根飞线的故事(SVG 篇)

5200)已知直线路径长度和起点,并且这根线也不会拐弯,所以直接根据插值函数传入的进度值,通过使用getPointAtLength方法得到对应时刻的坐标值更新path元素的”d”属性即可。
2019年6月10日

关于移动端开发 1px 线的一些理解和解决办法

css里写的1px长度映射到物理像素上就有2px或3px。通过设置viewport,可以改变css中的1px用多少物理像素来渲染,设置了不同的viewport,当然1px的线条看起来粗细不一致。
2019年6月9日

一个合格的中级前端工程师要掌握的 JavaScript 技巧

方法的参数,再让子类(subType)的原型对象等于这个空对象,就可以实现子类实例的原型等于这个空对象,而这个空对象的原型又等于父类原型对象(superType.prototype)的继承关系
2019年6月8日

谷歌变坏了?Chrome 已成众矢之的

可能会因其搜索和其他业务受到司法部的调查。司法部已经与谷歌的第三方批评者取得了联系。美国的反垄断调查,可以由司法部或联邦贸易委员会进行,但这次调查由美国司法部来做。此前联邦贸易委员会曾对
2019年6月7日

7 个 有用的 Vue 开发技巧

写过高阶组件的童鞋可能都会碰到过将加工过的属性向下传递的情况,如果碰到属性较多时,需要一个个去传递,非常不友好并且费时,有没有一次性传递的呢(比如react里面的
2019年6月6日

JavaScript 究竟是如何工作的?(第一部分)

之前,我们首先要理解任意一门编程语言的基本工作方式。电脑是由微处理器构成的,我们通过书写代码来命令这台小巧但功能强大的机器。但是微处理器能理解什么语言?它们无法理解
2019年6月5日

详解 vue 组件三大核心概念

类量,字符串类型。那如果想通过字面量进行数据传递时,如果想传递非String类型,必须props名前要加上v-bind,内部通过实例寻找,如果实例方没有此属性和方法,则默认为对应的数据类型。
2019年6月4日

由 Vue 中三个常见问题引发的深度思考

分享的时光永远这么短暂,但我还要对你说:工作中经常遇到此类问题,希望我们多问自己一个为什么?去研究它到底是怎么实现的,掌握设计理念,学习设计思想,而不是仅限于知道如何使用。这样自己才会有更多的成长!
2019年6月3日

聊聊我们最近在面试中发现的一些共性问题

我们建了个知识星球,大家在里面互相分享自己写的技术文章,鼓励、打卡,实践刻意练习,相信长期坚持下去一定会有巨大的成长,目前已有700多人,欢迎更多的小伙伴加入(免费的哦~)
2019年6月3日

从头开始学习 vue-router

要学习vue-router就要先知道这里的路由是什么?为什么我们不能像原来一样直接用标签编写链接哪?vue-router如何使用?常见路由操作有哪些?等等这些问题,就是本篇要探讨的主要问题。
2019年6月2日

等了十多年,不再有 2 套 HTML 和 DOM 标准了!

开发继续考虑全球社区的需求,并在可访问性、国际化和隐私等方面继续改进,同时提供更好的互操作性、性能和安全性。
2019年5月30日

深入高阶函数应用之柯里化

}}但是这种写法有一个问题,就是每次添加事件都会调用做一次判断,那么有没有什么办法只判断一次呢,可以利用闭包和立即调用函数表达式(IIFE)来处理。
2019年5月29日

在 React 组件中使用 Refs 指南

来告诉浏览器我们正在处理被点击的提交按钮,我们不希望这个事件“冒泡”(意思就是说,阻止浏览器的默认行为)。译注:这里可以看一下
2019年5月28日

Nuxt 实现的 SSR 页面性能优化的进一步探索与实践

我们部门从事的都是面对用户的业务需求开发,面对用户,意味着对页面的体验要求会更高,最直观体验是页面首屏的加载速度,加载速度优化是我们体验优化的长期、重要的一部分;本文的起源正是首屏加载速度优化。
2019年5月26日

Vue 组件间通信六种方式(完整版)

provide祖先组件的实例,然后在子孙组件中注入依赖,这样就可以在子孙组件中直接修改祖先组件的实例的属性,不过这种方法有个缺点就是这个实例上挂载很多没有必要的东西比如props,methods
2019年5月25日

除了 async 速度翻 10 倍,2019 年 JavaScript 还会带来什么?

目前该功能支持秒、分钟、小时、天、周、月与季的短语表示,并且支持多种语言(不清楚有没有中文支持),开发者不再需要维护一个专门的相对时间短语列表。
2019年5月24日

看完这篇,你也可以实现一个360度全景插件

能以这个角度看到几何体实际上是相机的功劳,这个我们下面的章节再介绍,这让我们看到一个几何体的轮廓,但是感觉怪怪的,这并不像一个几何体,实际上我们还需要为它添加光照和阴影,这会让几何体看起来更真实。
2019年5月23日

Node.js 微服务实践(二)

错误消息应该只被用于描述错误的输入或者内部失败信息等,比如,如果你执行了一些数据库的查询,返回没有任何数据,这并不是一个错误,而仅仅只是数据库的事实的反馈,但是如果连接数据库失败,那就是一个错误了。
2019年5月22日

从 Mixin 到 HOC 再到 Hook

如果函数的调用参数相同,则永远返回相同的结果。它不依赖于程序执行期间函数外部任何状态或数据的变化,必须只依赖于其输入参数。 该函数不会产生任何可观察的副作用,例如网络请求,输入和输出设备或数据突变。
2019年5月21日

滚动穿透问题探索

在解决有关滑动问题的过程中,总会出现clientHeight、offsetHeight、scrollHeight、scrollTop等不是亲兄弟而胜似亲兄弟的一系列葫芦娃,有必
2019年5月20日

关于移动端适配,你必须要知道的

上面这些问题可能我们在开发中已经知道如何解决,但是问题产生的原理,以及解决方案的原理可能会模糊不清。在解决这些问题的过程中,我们往往会遇到非常多的概念:像素、分辨率、
2019年5月19日

如何学习 CSS

是的,CSS中有一些奇怪的东西。它是一门经过多年进化的语言,有些东西我们无法改变,除非我们发明了时间机器。然而,一旦你掌握了一些基础知识,并且理解了为什么会这样,你就可以更轻松地处理棘手的问题。
2019年5月18日

JavaScript 高阶函数浅析

Array.prototype.reduce,它们接受一个函数作为参数,并应用这个函数到列表的每一个元素。我们来看看使用它们与不使用高阶函数的方案对比。
2019年5月16日

提高幸福感的 9 个 CSS 技巧

一般设计稿中的某一类的文字(元素)都是用相同的字体大小、颜色、行高等样式属性,所以这些值我们不必每次都重复写,因为当
2019年5月15日

Node 12 值得关注的新特性

相关介绍:https://medium.com/@Trott/using-worker-threads-in-node-js-80494136dbb6
2019年5月9日

页面可视化搭建工具技术要点

Vue2.0学习笔记:组件数据传递:https://www.w3cplus.com/vue/component-data-and-props-part1.html
2019年5月2日

一次 Web 端大量图片同时加载卡顿问题的优化之旅

就在笔者满心欢喜的认为这个需求基本搞定了,该去楼下加鸡腿的时候。无情的现实狠狠的抽了我一巴掌。随着网页的刷新,一张纯白的画面展示在了我的面前,然后只见图片一点一点的从上面加载出来。
2019年5月1日

从前端角度看企业软件的研发过程

几乎所有这个领域的软件交付厂商都很早就采用了大中台,小前台的作战方式,然而在实践过程中,仍然会因为前台部分过重,中台部分难以很实际地对前台产生帮助,形成一种非常尴尬的局面,最终导致双方的互相不信任。
2019年4月30日

可能这些是你想要的 H5 软键盘兼容方案

聊天项目,过程中踩过一个大坑:输入框获取焦点,软键盘弹起,要求输入框吸附(或顶)在输入法框上。需求很明确,看似很简单,其实不然。作者实验了一些机型,发现了一些问题,并且逐一探索了解决方案分享给大家。
2019年4月29日

为什么 HTTPS 比 HTTP 更安全?

以对称加密方式加密时必须将密钥也发给对方。可究竟怎样才能安全地转交?在互联网上转发密钥时,如果通信被监听那么密钥就可会落人攻击者之手,同时也就失去了加密的意义。另外还得设法安全地保管接收到的密钥。
2019年4月28日

前端路由跳转基本原理

URL,所以在路由跳转的时候会丢失一些地址信息,在刷新或直接访问路由地址的时候会匹配不到静态资源。因此需要在服务器上配置一些信息,让服务器增加一个覆盖所有情况的候选资源,比如跳转
2019年4月27日

金三银四魔都两年半前端面经

社区变为一个各种内容都有的社区,风评也是有各方面的声音吧,不过不进来看看我肯定是不会死心的。。然后除了情怀之外,工作内容,工作时间,环境,待遇都满符合我期望的,主站这套架构也有
2019年4月26日

常见六大 Web 安全攻防解析

我们会发现SQL注入流程中与正常请求服务器类似,只是黑客控制了数据,构造了SQL查询,而正常的请求不会SQL查询这一步,SQL注入的本质:数据和代码未分离,即数据当做了代码来执行。
2019年4月25日

深入分析虚拟DOM的渲染过程和特性

VitrualDom自己实现了一套自己的事件机制,自己模拟了事件冒泡和捕获的过程,采用了事件代理,批量更新等方法,抹平了各个浏览器的事件兼容性问题。
2019年4月20日

函数式编程,真香

++counter;}这个函数就是不纯的,它读取了外部的变量,可能会觉得这段代码没有什么问题,但是我们要知道这种依赖外部变量来进行的计算,计算结果很难预测,你也有可能在其他地方修改了
2019年4月19日

深入探究 Function & Object 鸡蛋问题

的对象,也就是并不存在“Function对象由Function构造函数创建”这样显然会造成鸡生蛋蛋生鸡的问题。实际上,当你直接写一个函数时(如
2019年4月17日

2019 React Redux 完全指南

这样想吧:当没有商品或者正在加载或者发生错误的时候应用需要展示一些东西。在数据准备好之前,你可能不想只展示一个空白屏幕。这给你了一个提供良好用户体验的机会。
2019年4月16日

你不知道的浏览器页面渲染机制

注意:上图流程中有很多连接线,这表示了Javascript动态修改了DOM属性或是CSS属性会导致重新Layout,但有些改变不会重新Layout,就是上图中那些指到天上的箭头,比如修改后的CSS
2019年4月14日

jQuery 3.4.0 发布!全力准备 jQuery 4.0

firstCheckedState);});$radios.eq(1).click();这次修正了,在执行事件处理程序之前更新
2019年4月13日

页面性能优化办法有哪些?

If-None-Match),协商缓存由服务器决定是否使用缓存,若协商缓存失效,那么代表该请求的缓存失效,重新获取请求结果,再存入浏览器缓存中;生效则返回304,继续使用缓存。主要过程如下:
2019年4月9日

微信小程序自定义单页面、全局导航栏

"navigationStyle":"custom",顶部导航栏就会消失,只保留右上角胶囊状的按钮,如何修改胶囊的颜色呢;胶囊体目前只支持黑色和白色两种颜色
2019年4月3日

Vue 前端面试题

双向数据绑定:数据之间是相通的,将数据变更的操作隐藏在框架内部。优点是在表单交互较多的场景下,会简化大量与业务无关的代码。缺点就是无法追踪局部状态的变化,增加了出错时
2019年3月30日

前端面试知识点目录整理

2、数据库mysql、redis、mongodb;sql的操作语句、mongodb的操作语句、redis的操作语句。
2019年3月29日

优化 JS 条件语句的 5 个技巧

语句吗?不要把自己局限于此。就我个人而言,我尽可能地使用对象字面量,但是我不会设置严格的规则来阻止它,使用对您的场景有意义的任何一个。
2019年3月28日

面试加分项之 Nginx 反向代理与负载均衡

突然想起了deno项目发布的时候,一个搞笑的issue,“求别更新了,老子学不动了”。虽然看起来是一个玩笑的issue,但却道出了前端们不得不表现出来的疲态,知识点越来越庞大,学习的内容越来越多
2019年3月27日

JS 引擎 V8 发布 v7.4,性能又大幅提高了

期间递增年龄,并在执行函数时将其重置为零。任何超预设“老化阈值”的字节码的内存都会被下一个垃圾回收器收走,并且如果将来再次执行该函数,它将重新编译其字节码。
2019年3月25日

Web 实时推送技术的总结

轮询是客户端和服务器之间会一直进行连接,每隔一段时间就询问一次。其缺点也很明显:连接数会很多,一个接受,一个发送。而且每次发送请求都会有Http的Header,会很耗流量,也会消耗CPU的利用率。
2019年3月20日

JS 面试之数组的几个不 low 操作

本文主要从应用来讲数组api的一些骚操作,如一行代码扁平化n维数组、数组去重、求数组最大值、数组求和、排序、对象和数组的转化等。
2019年3月19日

Vue 进阶系列之响应式原理及实现

234在了解Object.defineProperty中getter和setter的使用方法之后,通过修改get和set函数就可以实现onAChanged和onStateChanged。
2019年3月17日

JS 引擎 V8 新机制:JIT-less 模式

40%。其中禁用的优化编译器占了大约一半的原因,另一半原因则是由正则表达式解释器引起的,该解释器最初用作调试辅助工具。
2019年3月15日

关于Vue 3.0前端开发者必须知道的不仅仅是Proxy...

可能用Vue写业务代码写了很久,api也调用得很顺手,但是问及原理就说不清个所以然来,这也是很多同学在面试中遇到的问题。那么如何在面试中对于Vue框架的问题逐个击破,向面试官对答如流呢?
2019年3月14日

在 NPM 发布自己造的轮子

4、图片和key都有了,这时可以进行压缩了。用一个数组把压缩失败的存起来,然后每次压缩完成都输出提示,在所有图片都处理完成后,如果存在压缩失败的,就询问是否把压缩失败的图继续压缩。
2019年3月13日

散布JS无限循环代码,日本13岁女学生被抓

日本刈谷市警方近日质询并指控了一名13岁的女学生,起因是她将一段恶意代码的链接放到了在线公告栏上,广泛传播代码。这段有问题的恶意代码是弹出警告消息的无限循环,每当你点击“确定”就会立即显示新的消息。
2019年3月11日

你真的了解webview么?

另外,还有一些网络机顶盒里的交互,也是webview在和我们打交道,比如一些早期的IPTV里的EPG都是运行在webview里的,它们基于webkit内核,尽管我们使用的交互方式是遥控器。
2019年3月10日

Node.js 微服务实践(一)

尽管“微服务”这种架构风格没有精确的定义,但其具有一些共同的特性,如围绕业务能力组织服务、自动化部署、智能端点、对语言及数据的“去集中化”控制等等。微服务架构的思考是从与整体应用对比而产生的。
2019年3月9日

看看这些被同事喷的 JS 代码风格你写过多少

https://blog.risingstack.com/javascript-clean-coding-best-practices-node-js-at-scale/(JavaScript
2019年3月2日

我们不再需要 Chrome?

他们认为谷歌是一家商业公司,是一家追求利润的企业,他们最终要对股东而不是用户负责。而谷歌收入来源的主要业务是广告,而广告又和搜索引擎息息相关,搜索引擎在哪?到这里,问题就来了。
2019年3月1日

面试题:如何实现一个深拷贝

JSON1、使用哈希表解决方案很简单,其实就是循环检测,我们设置一个数组或者哈希表存储已拷贝过的对象,当检测到当前对象已存在于哈希表中时,取出该值并返回即可。
2019年2月28日

前端中的 IoC 理念

所谓的依赖注入,简单来说就是把高层模块所依赖的模块通过传参的方式把依赖「注入」到模块内部,上面的代码可以通过依赖注入的方式改造成如下方式:
2019年2月27日

面试官问:JS 的继承

github源码:https://github.com/facebook/react/blob/master/packages/react/src/ReactBaseClasses.js。
2019年2月26日

Webpack 打包含动态加载的类库

_runtime__WEBPACK_IMPORTED_MODULE_0___default.a.onLoadDeps().then(resolve).catch(reject);
2019年2月25日

为什么 'XX' 不是一个 Hooks API?

基本上是不可组合(noncompositional)和反模块化(antimodular)的,这篇文章会帮助你理解为什么。
2019年2月24日

2019 前端面试题汇总(主要为 Vue)

浏览器在加载HTML内容时,是将HTML内容从上至下依次解析,解析到link或者script标签就会加载href或者src对应链接内容,为了第一时间展示页面给用户,就需要将CSS提前加载,不要受
2019年2月23日

前端进击的巨人(1):执行上下文与执行栈,变量对象

程序执行进入一个执行环境时,它的执行上下文就会被创建,并被推入执行栈中(入栈);程序执行完成时,它的执行上下文就会被销毁,并从栈顶被推出(出栈),控制权交由下一个执行上下文。
2019年2月21日

都 9102 年了,还问 GET 和 POST 的区别

http://www.example.com/user/name/chengqm/age/22。
2019年2月20日

三个值得期待的 JavaScript 新特性!

在函数式编程中,我们有一个概念叫compose,它多个函数调用合并在一起,调用时从右到左执行每个函数,函数接收前一个函数的输出作为其输入,以下是我们在纯JavaScript中讨论的一个示例:
2019年2月19日

Node.js 项目拆包工程化

在我们开发的过程中,经常会遇到这样的问题,开发完了一些代码或者一个接口,别的小伙伴过来问你,代码可不可以给他复用,接口可以给他调用。这说明代码的复用和抽象对团队协作是很重要的。举个例子,如下图
2019年2月18日

如何做一个听话的 “输入框”

当获得焦点弹出虚拟键盘后,input输入框会一直紧贴键盘顶部。如果,你的页面弹出输入法后不需要滑动查看其他内容,那么你对这种方案应该很中意。
2019年2月17日

Webpack 的 Bundle Split 和 Code Split 区别和应用

这个概念有些模糊,并且很多时候网上的文章大部分介绍重点在将代码分离动态加载之类的。写这篇文章的目的也是想让其他那些跟我一样曾经对这个概念不是很清楚的童鞋有个清晰的认识。废话不多说,开始干!
2019年2月16日

nginx 反向代理和负载均衡策略实战案例

浏览器的同源策略:浏览器的同源策略,限制了来自不同源的"document"或脚本,对当前"document"读取或设置某些属性。从一个域上加载的脚本不允许访问另外一个域的文档属性。
2019年2月15日

Bootstrap 5 要和 jQuery 说再见,将移除对其依赖

已于昨天发布(https://blog.getbootstrap.com/2019/02/11/bootstrap-4-3-0/),作为
2019年2月13日

Web 页面录屏实现

监听所有可能对界面产生影响的事件,例如各类鼠标事件、输入事件、滚动事件、缩放事件等等,每个事件都记录参数和目标元素,目标元素可以是刚才记录的id,这样的每一次变化事件可以记录为一次增量的快照。
2019年2月12日

微软劝你别再使用 IE 浏览器

作为默认浏览器的危险」中指出,在某些情况下,继续使用古老软件的公司愿意为此承担额外的“技术债务”,比如为古老软件的扩展技术支持买单,但在
2019年2月11日

九种跨域方式实现原理

src=XXX>2.常见跨域场景当协议、子域名、主域名、端口号中任意一个不相同时,都算作不同域。不同域之间相互请求资源,就算作“跨域”。常见跨域场景如下图所示:
2019年2月5日

Google 谈论杀死 URL 的第一步

的格式化功能,该功能仅显示网站的主域名,以帮助用户明确他们实际浏览的是哪个域。该实验获得了一些人的支持,因为它使得网络身份更加直观,但也遭到了另外一些人的批评,后来项目夭折。Chrome
2019年2月3日

世界是平的吗?——从不同角度看前端

在此模式下,单个组件应当包含视图到服务端模型的整个链路。组件只跟某个具体的领域模型交互,并不关心其他组件的存在。单个或者多个组件,都能够直接运行。页面成为一种通用的容器,把它们集成起来。
2019年1月31日

HackerRank:JavaScript 是最知名的编程语言

开发者在工作中也会有各种各样的烦恼。不过,这些烦恼因资历而异,初级开发者最讨厌写得糟糕的开发文档,高级开发者则最不能容忍“面条代码”(通常指结构不清晰和难以维护的代码)。
2019年1月30日

微软工程师认为 Mozilla 也应该拥抱 Chromium

应该重新组织成一个研究机构,而不是试图用“网络保护者”的名号来证明自己的存在。他也不认为
2019年1月29日

2019 给前端的 5 个建议

当然有,结合你自身的产品开发流程,依旧有很多机会。下面是常规项目的开发流程图,任何一个环节只要深挖,都有提升空间。如果你能通过工具减少一个或多个环节,带来的价值更大。
2019年1月28日

2018年 JavaScript 明星项目

几乎是一个开发标准了:无论对于后端还是前端开发来说,我们看到越来越多的项目包含了
2019年1月26日

基于色键技术的纯客户端实时蒙版弹幕

则是抽离颜色之意。把被拍摄的人物或物体放置于绿幕的前面,并进行去背后,将其替换成其他的背景。此技术在电影、电视剧及游戏制作中被大量使用,色键也是虚拟摄影棚(Virtual
2019年1月24日

Node 程序 debug 小记

yieldurllib.request(url,options)的时候,提示接口超时了,起初还以为是网络问题,于是多执行了几次,发现还是这样,开始意识到,应该是刚才的代码改动引发的
2019年1月22日

从项目的 star 数看2018年 JavaScript 生态圈

https://www.oschina.net/news/103752/javascript-rising-stars-2018
2019年1月20日

从零到一:实现通用一镜到底 H5

用TweenMax创建好过渡动画,然后将TweenMax加入到Timeline中,duration比如是占10%的话,就设定为0.1,从滚动到30%开始播放动画的话,delay就设置为0.3。
2019年1月19日

原生 JS 实现移动端 Touch 滑动反弹

其实这三种返回的对象,都是表示用户触摸事件时的手指信息,之所以是一个伪数组,是因为有可能出现多指同时触摸,但是在实际工作中一般不去考虑多指的情况。而它们唯一的区别就是在
2019年1月18日

由一个 emoji 引发的思考

切图是UI给的以iphone6的屏幕宽度为准的750px2倍视觉稿,组内方案选择参考了手淘的flexible。具体原理和这次主题无关,我就不在这里阐述了。关于移动端多端适配方案的原理详细,可以参考
2019年1月17日

微信小程序之登录态的探索

体验上不好,操作被打断,尤其整个页面都不需要授权只有在一个地方需要授权的,例如:你正在读一篇文章,读罢深有感触,想评论一番,洋洋洒洒几十字写完正准备点击呢,他妈的跳转了!跳转了!
2019年1月16日

从 loading 的 9 种写法谈 React 业务开发

组件用到的地方会非常多,上面这个代码耦合了很多逻辑,为了让这个组件能够很好的复用,那我们抽离出组件的业务逻辑,将内部状态进行提升,那这个组件就是一个能被复用的
2019年1月12日

2019 年 Web 开发技术指南和趋势

https://segmentfault.com/a/1190000017483325
2019年1月9日

JavaScript 代码简洁之道

/^[^,\\]+[,\\\s]+(.+?)\s*(\d{5})?$/;saveCityZipCode(ADDRESS.match(CITY_ZIP_CODE_REGEX)[1],
2019年1月8日

如何以及为什么React Fiber使用链表遍历组件树

children[1]);我们还将实现一个辅助函数,为节点执行一些工作。在我们的情况是,它将打印组件的名字。但除此之外,它也获取组件的children并将它们链接在一起:
2019年1月7日

JS 中的 number 为何很怪异?

的存储方式:[2]0.00011001100110011001100110011001100110011001100110011010
2019年1月5日

写好 JS 条件语句的 5 条守则

但我们是否应当禁止switch语句的使用呢?答案是不要限制你自己。从个人来说,我会尽可能的使用对象遍历,但我并不严格遵守它,而是使用对当前的场景更有意义的方式。
2019年1月4日

老生常谈之 CSS 的垂直居中

不仅在水平方向上将元素居中,垂直方向上也是如此。还有一点,我们甚至不需要指定任何宽度(当然,如果需要的话,也是可以指定的):这个居中元素分配到的宽度等于
2019年1月3日

探究 CSS 混合模式\\滤镜导致 CSS 3D 失效问题

perspective.(https://bugs.chromium.org/p/chromium/issues/detail?id=543445)
2019年1月2日

Promise 探讨

完整代码可查看stage-4(https://github.com/zhoulang27426405/learn-promise/blob/master/stage-4/promise-4.js)
2018年12月30日

Chrome 新 UI 很“难看”,用户很生气

存在新版本已经修复的漏洞,如果继续使用旧版本,可能会产生非常严重的安全隐患,从而让用户面临风险。他继续声称,大多数用户“在使用它几周后并不介意新的用户界面,毕竟这只是最初的调整令用户不能适应。”
2018年12月28日

JavaScript 浅拷贝与深拷贝

浅拷贝是按位拷贝对象,它会创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,拷贝的就是基本类型的值;如果属性是内存地址(引用类型),拷贝的就是内存地址
2018年12月27日

移动端的那些坑

http://www.joycesong.com/arch…ios版本:11.1-11.3使用swiper或者transform属性时,有一定概率出现transform的元素以外的所有
2018年12月25日

635000 个 npm 包中我应该用哪个?

1、mysql(https://www.npmjs.com/package/mysql)、node-postgres(https://node-postgres.com/)
2018年12月24日

为什么我认为数据结构与算法对前端开发很重要?

keys))还好keys的长度只有3,这种东西长了根本没办法写,很明显可以看出来这里面有重复的部分,可以通过循环搞定,但是想了很久都没有思路,就搁置了。
2018年12月22日

JS 引擎 V8 7.2 Beta 发布,平均解析时间百分比降低到 7.5%

数学函数的开销。最后,开发团队设计了对寄存器分配器的更改,以改善许多代码模式的性能,这些代码模式将在更高版本中出现。
2018年12月21日

从入门到上线一个天气小程序

的基础会有很多似曾相识的感觉,当然,在深入的探索过程还有很多“坑”要跨越,本文只是简单的梳理,具体问题还能多看文档和小程序社区,还有什么错误欢迎指正哈,完~
2018年12月20日

浅谈 React

上文中提到视图是数据的表现,当数据改变时可以清空所有的dom节点然后重新渲染视图,缺点是可能造成了很大的浪费,因为大部分的dom节点可能并没有变,比如渲染一个列表,可能只是插入了一条数据:
2018年12月18日

原来 CSS 与 JS 是这样阻塞 DOM 解析和渲染的

CSS,大家肯定都知道的是标签放在头部性能会高一点,少一点人知道如果从下面的瀑布图可以看到,JavaScript
2018年12月2日

Web Worker 初探

使得一个Web应用程序可以在与主执行线程分离的后台线程中运行一个脚本操作。这样做的好处是可以在一个单独的线程中执行费时的处理任务,从而允许主(通常是UI)线程运行而不被阻塞。
2018年12月1日

从 0 到 1 再到 100:搭建、编写、构建一个前端项目

选择一个现成项目模板是搭建一个项目最快的方式,模板已经把基本的骨架都搭建好了,你只需要向里面填充具体的业务代码,就可以通过内置的工具与命令构建代码、部署到服务器等。
2018年11月30日

Chrome 与 Firefox 将取消对 FTP 的支持

是不安全的协议。新的方式将不再渲染并呈现像上面这张图片一样拥有完整路径的文件,而是直接将其下载。但是当访问目标是“ftp://目录”时,Chrome
2018年11月30日

ES6 核心特性

[]}验证配置是否成功·创建./src/index.js·内容:[1,2,3].map(item=>item+1);·运行babel./src/index.js运行后得到以下部分,说明已经成功配置了
2018年11月29日

前端码农之蜕变 — AST(抽象语法树)

经常把beble和支持es6/7/8联系起来,实际上,这也是我们经常用它的原因。但是,它仅仅是一组插件中的一个。我们也可以使用它来压缩代码,react相关预发转译(如jsx),flow插件等。
2018年11月28日

微信小程序-自定义下拉刷新

最重要的一点,如果自定义了导航条即使采用fixed定位,整个导航条还是会随页面一起往下拉动,整个布局效果非常变扭。这才是我放弃的最终原因(参考最终效果图,自定义了导航条)
2018年11月27日

面试必考-从URL输入到页面展现到底发生什么

地址的一组纯数字相比,用字母配合数字的表示形式来指定计算机名更符合人类的记忆习惯。但要让计算机去理解名称,相对而言就变得困难了。因为计算机更擅长处理一长串数字。为了解决上述的问题,DNS
2018年11月25日

浅谈HTTP Keep-Alive

通过一些命令我们发现请求连接数竟然有6k+,很可怕的一个数字,而我们的qps是远远小于6k的,猜测很可能是每次请求都建立了新的链接,那就开始着手优化吧,就想到了Keep-Alive。
2018年11月25日

Google 推出 Node 应用 Web 渲染界面 Carlo

www.oschina.net/news/102043/google-opensource-carlo
2018年11月24日

百度、有赞、阿里前端面试总结

这个我也没写出来,也给了个思路,首先使用Q4的方法得到货物重量数组的全组合(包括拆分成小数组的全组合),然后计算每一个组合的价值,并进行排序,然后遍历数组,找到价值较高切刚好能装进背包m的组合。
2018年11月22日

2018 JavaScript 现状调查报告火热出炉!

www.oschina.net/news/101954/the-state-of-javascript-2018
2018年11月22日

即使用了 https 也不要通过 query strings 传敏感数据

传递查询字符串,但是不要在可能出现安全问题的场景下使用。例如,你可以安全的使用它们显示部分数字或者类型,像
2018年11月20日

Vue 常见面试题

解析模板指令,将模板中的变量替换成数据,然后初始化渲染页面视图,并将每个指令对应的节点绑定更新函数,添加监听数据的订阅者,一旦数据有变动,收到通知,更新视图
2018年11月20日

CSS 3D 的魅力

实际也非常简单,还是利用上面demo1的原理旋转卡片,再通过定位把卡片排列,定义一个无限循环的摇摆动画,给每个卡片使用不同的时间,最后绑定点击事件,给元素使用css过渡动画transition。
2018年11月19日

常见 React 面试题

redux,流程更加规范了,减少手动编码量,提高了编码效率,同时缺点时当数据更新时有时候组件不需要,但是也要重新绘制,有些影响效率。一般情况下,我们在构建多交互,多数据流的复杂项目应用时才会使用它们
2018年11月19日

前端开发者必备思维

最近公司要招人,本人负责专业前端初面,但是面试过程大部分前端面试者给我的感觉思维比较窄,以及陈述问题时候比较乱,整体给人感觉不是理想。下面是我作为一个面试官从三个维度给面试者建议和思考吧。
2018年11月17日

React 项目结构和组件命名之道

组件不属于任何一个模块,需要足够通用。它们应该可以直接放在开源库中,因为它们不包含任何特定应用的业务逻辑。常见的这类组件有:按钮,输入框,复选框,下拉选择,模态框,数据可视化组件等等。
2018年11月17日

测试 JavaScript 函数的性能

既然你知道高分辨率时间API是什么以及如何使用它,那么让我们继续深入看一下它有哪些潜在的缺点。但是在此之前,我们定义一个名为makeHash()的函数,在这篇文章剩余的部分,我们会使用它。
2018年11月16日

H5 移动调试全攻略

莫名奇妙的白屏,适合页面无异常日志,同时无请求发送,问题集中在单一页面的情况。这种问题比较直观,肯定是某一页面出现了代码异常或是无效的
2018年11月16日

几种常见的 CSS 布局

对于第二种,header、footer的内容宽度不设置,块级元素充满整个屏幕,但header、content和footer的内容区设置同一个width,并通过margin:auto实现居中。
2018年11月14日

Vue: scoped 样式与 CSS Module 对比

不过请注意:这个特性存在一个缺陷,即如果你子组件的根元素上有一个类已经在这个父组件中定义过了,那么这个父组件的样式就会泄露到子组件中。如果想更好地理解这个问题,可以查看这个
2018年11月14日

30 分钟精通 React 新特性——React Hooks

当我们第二个参数传一个空数组[]时,其实就相当于只在首次渲染的时候执行。也就是componentDidMount加componentWillUnmount的模式。不过这种用法可能带来bug,少用。
2018年11月13日

你所不知道的 CSS 阴影技巧与细节

登场,它可以在元素呈现之前,为元素的渲染提供一些效果,最常见的也就用它渲染整体阴影。我们通常会用它来实现对话框的小三角与整个对话框的阴影效果,像下面这样,左边是使用
2018年11月12日

Chrome 71 将进一步封阻“滥用体验”广告,12月发布

总的来说,如果广告特别具有误导性、破坏性或干扰性,则可能会被视为“滥用体验”的广告。这些误导性内容很大一部分都是被骗子拿来诈骗和进行网络钓鱼活动,它们会从用户的广告点击中窃取个人信息。
2018年11月8日

利用CSS改变图片颜色的100种方法!

如果我们可以改变每个通道的值是不是就能完美的得到我们想要的任意颜色了呢,原理上,我们可以像ps那样利用svg滤镜得到任何我们想要的图像,不仅仅是变色。我们甚至可以凭空生成一幅图像。
2018年11月8日

2018 大厂高级前端面试题汇总

koa中response.send、response.rounded、response.json发生了什么事,浏览器为什么能识别到它是一个json结构或是html
2018年11月6日

挨批评了!Chrome 对用户隐私保护还不如 IE?

这可能看起来像是一个双赢的方案:谷歌可以声称为用户提供了更好的隐私保护,同时在广告市场中打压其竞争对手。但从长远来看,这实际上会伤害用户。如果谷歌继续巩固其在浏览器和广告行业的主导地位,Chrome
2018年11月6日

纯 CSS 实现多行文字截断

但是它无法识别文字的长短,即文本超出范围才显示省略号,否则不显示省略号。还有因为是我们人为地在文字末尾添加一个省略号效果,就会导致它跟文字其实没有贴合的很紧密,遇到这种情况可以通过添加
2018年11月5日

编写支持 SSR 的通用组件指南

注意:请注意以kebab-case(如:make-red而不是makeRed)传递你的指令。否则,他们将无法被识别!这是vue-server-renderer中的错误(有关详细信息,请看官方文档)。
2018年11月4日

Web 框架的架构模式探讨

这个模式的核心构成不是权限,解析等中间件逻辑,而是路由判断,next和中断响应(验证失败、解析失败),其作为中间件执行控制,解耦了具体的处理逻辑,使得更容易写出通用的细粒度的中间件。express
2018年11月4日

h5 与原生 app 交互的原理

valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
2018年11月1日

不使用 JS 匿名函数的三个理由

今天我尝试让大家理解只有在绝对需要的情况下才使用匿名函数的想法。匿名函数不应该是首选,而且你自己也应该知道为什么使用它。当理解这种想法之后,你的代码会变得更简洁,更容易维护,并且更容易跟踪bug。
2018年10月30日

跨域几种方式

同源策略限制从一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的关键的安全机制。它的存在可以保护用户隐私信息,防止身份伪造等(读取Cookie)。
2018年10月30日

React v16.7 "Hooks" - What to Expect

指向,以及原型链,继承这些问题。即使我们真正觉得明白了其中的原理,在日常的开发中也难免因为疏忽而踩坑,这一系列的问题导致新手相对比较难上手
2018年10月28日

关于 Http 协议,你必须要知道的

协议自身不对请求和响应之间的通信状态进行保存。任何两次请求之间都没有依赖关系。直观地说,就是每个请求都是独立的,与前面的请求和后面的请求都是没有直接联系的。协议本身并不保留之前一切的请求或
2018年10月27日

WebAssembly 的未来:将逐渐解锁整个“技能树”

等。为确保此类应用能在浏览器中运行良好,他们需要解锁新一批的“技能”,包括支持多线程、SIMD(单指令流多数据流)、64位寻址、流式编译(在下载的同时编译
2018年10月26日

页面性能优化办法有哪些?

If-None-Match),协商缓存由服务器决定是否使用缓存,若协商缓存失效,那么代表该请求的缓存失效,重新获取请求结果,再存入浏览器缓存中;生效则返回304,继续使用缓存。主要过程如下:
2018年10月25日

前端性能优化原理与实践

就国内的情况来看,许多站点并不关注前端的性能优化,这方面的研究也相对较少。事实上前端的优化空间非常大,谁能把握住这巨大的优化空间,谁就可以为自己的互联网产品争得用户流量的先机。
2018年10月24日

ES6 系列之我们来聊聊 Promise

等,不仅写起来麻烦,而且如果你忽略了文件读取错误时的情况,不记录错误状态,就会接着读取其他文件,造成无谓的浪费。此外外层的变量,也可能被其它同一作用域的函数访问并且修改,容易造成误操作。
2018年10月24日

React 路由状态管理总结

本文并不旨在介绍两种依赖库的具体用法(具体用法请参考官方文档和教程),而主要阐述其实现方式和原理,总结具体的实践方式和注意事项。在主要内容之前,首先简要介绍下两个库的功能:
2018年10月23日

细说后端模板渲染、客户端渲染、node 中间层、服务器端渲染(ssr)

尽管如此,但因为这种方式是最早出现的方式,并且这种渲染方式有一个好处,就是前端能够快速呈现服务器端渲染好的页面,而不用等客户端渲染,这能够提供很好的用户体验与
2018年10月21日

Flexbox 布局的最简单表单

如果项目很多,一个个地设置align-self属性就很麻烦。这时,可以在容器元素(本例为表单)设置align-items属性,它的值被所有子项目的align-self属性继承。
2018年10月19日

Chrome 的哪些功能改变了我们浏览网页的方式?

在过去十年里它取得了巨大的成就:从市场占有率1%的后来者,成长为了市场占有率60%的王者。或直接或间接,许多它创造或是他推广的模式已潜入我们生活,即使我们用的并不是Chrome。
2018年10月16日

你不知道的 Virtual DOM(一):Virtual Dom 介绍

h函数会传入三个或以上的参数,前两个参数一个是标签名,一个是属性对象,从第三个参数开始的其它参数都是children。children元素有可能是数组的形式,需要将数组解构一层。比如:
2018年10月14日

说说React组件的State

Sharing(结构共享),即如果对象树中一个节点发生变化,只修改这个节点和受它影响的父节点,其它节点则进行共享。(关于immutab.js可以看这篇文章或者immutable.js)
2018年10月14日

从 1 到完美,用 node 写一个命令行工具

如果完全自己来写的,就会很麻烦,尤其是帮助信息。所以,选择一个好的命令行封装库,能够帮我们省去很多工作。
2018年10月13日

当初要是看了这篇,React高阶组件早会了

这个高阶组件会直接读取输入组件中的props,state,然后控制了输入组件的render展示 只有在props.time和state.success同时为真的时候才会展示
2018年10月13日

Vue 项目数据动态过滤实践

使用mixin要注意一点,因为vue中把data里所有以_、$开头的变量都作为内部保留的变量,并不代理到当前实例上,因此直接this._xx是无法访问的,需要通过this.$data._xx来访问。
2018年10月12日

健壮高效的小程序登录方案

如上图所示,目前登录流程已较为复杂,步骤较多,且大多是异步操作,每步成功失败需要区分处理,处理过程又会相互交织。如果直接在微信接口/网络接口提供的success/fail回调中进行逻辑处理,会造成:
2018年10月9日

Promise 异步流程控制

至此,这个函数还是有挺多不通用的问题,比如:处理函数必须一致,不能是多种不同的异步函数组成的队列,异步的回调函数也只能是一种等。关于这种方式的更详细的描述可以看我之前写的一篇文章
2018年10月9日

茴字的四种写法——浅谈移动前端适配

设备像素比(简称dpr)定义了物理像素和设备独立像素的对应关系。比如说对于iOS的retina屏,一个设备独立像素就对应着4个物理像素。这样的设计可以使画面更加清晰锐利,如下图:
2018年10月8日

尤雨溪公布 Vue 3.0 开发路线:将从头开始重写 3.0

https://medium.com/the-vue-point/plans-for-the-next-iteration-of-vue-js-777ffea6fabf
2018年10月6日

不可思议的纯CSS导航栏下划线跟随效果

效果不错,就是有点僵硬,我们可以适当改变缓动函数以及加上一个动画延迟,就可以实现上述开头里的那个效果了。当然,这些都是锦上添花的点缀。
2018年10月1日

webpack 启动代码源码解读

代码是一个立即执行函数,参数modules是由各个模块组成的数组,本例子只有一个编号为0的模块,由一个函数包裹着,注入了module和exports2个变量(本例没用到)。
2018年9月27日

Node 错误处理之挖坑系列

1、对于需要具象化的错误信息,也就是我们需要知道具体是哪一块的错误,并且在错误发生时即进行个性化处理。这一类型的错误,在程序中执行时要对可能会出错的函数进行
2018年9月27日

一文了解 Chrome 的十年“加速”历程

用户体验报告来为开发者提供诸如首次内容绘制和首次输入延迟等关于产品使用人群的真实用户体验的数据信息。如今,开发者可以生成他们自己的个性化网站性能报告,同时可以通过
2018年9月24日

一线大厂是如何开发微信小游戏的?

的小游戏。现在,团队将开发过程中积累的经验与心得汇聚成了一本小册子,并试图通过实现一个典型的小游戏实例,为广大开发者解答以上疑问。
2018年9月20日

使用 React 一年后,我学到的最重要经验

你不必让组件都包含复杂的逻辑。它们可以只当视觉组件。如果这样可以提高代码的可读性和方便测试,并减少代码的“坏味道”,那么对团队的每个人来说都是个伟大的胜利。
2018年9月19日

Chrome 70 将继续在地址栏隐藏网址中的 WWW

https://www.solidot.org/story?sid=57954
2018年9月17日

Vue 数据响应式原理

的值进行渲染。这里具体过程就不展开了,感兴趣可以看下相关源码(v2.8.1/src/components),原理方面在
2018年9月17日

如何写出小而清晰的函数?(JS 版)

如果应用中已经存在一些功能繁杂的函数,希望对它们进行重构,你可能会发现困难重重。而且在很多情况下,在合理的时间内是不可能完成的。但千里之行始于足下:在力所能及的前提下,先拆分一部分出来。
2018年9月16日

Node 定时器详解

这个是定时器阶段,处理setTimeout()和setInterval()的回调函数。进入这个阶段后,主线程会检查一下当前时间,是否满足定时器的条件。如果满足就执行回调函数,否则就离开这个阶段。
2018年9月15日

Win10 巨硬!就不喜欢你们用 Edge 下载别家浏览器的样子​​​​​​​

当然,用户可以在浏览器的设置界面总的“应用和功能”一栏中,将“应用安装”设置为“关闭应用建议”来关掉该提示。
2018年9月14日

Vue 面试中常问知识点整理

beforeMount(载入前),在挂载开始之前被调用,相关的render函数首次被调用。实例已完成以下的配置:编译模板,把data里面的数据和模板生成html。注意此时还没有挂载html到页面上。
2018年9月13日

H5 页面在微信端的分享

找到已有公众号的appid,根据这个appid和url向后端发起请求,拿到配置所需要的参数:timestamp、noncestr和signature。
2018年9月11日

Chrome 调试技巧

//树形输出table节点,即和它的innerHTML,由于document.getElementsByTagName是动态的,所以这个得到的结果肯定是动态的
2018年9月10日

Vue高版本中一些新特性的使用

}}组件可以通过在自己的子组件上使用v-bind=”$attrs”,进一步把值传给自己的子组件。也就是说子组件会把$attrs的值当作传入的prop处理,同时还要遵守第一点的规则。
2018年9月10日

趣图:Chrome 酱不喜欢吃 Cookie,她喜欢……

前端相关的技术文章、工具资源、精选课程、热点资讯
2018年9月9日

我是这样黑进你Node.js生产服务器的

https://github.com/ChALkeR/notes/blob/master/Gathering-weak-npm-credentials.md
2018年9月8日

Async:简洁优雅的异步之道

前言中已经提及,A函数是使用G函数进行异步处理的增强版。既然如此,我们就从其改进的方面入手,来看看其基于G函数的实现原理。A函数相对G函数的改进体现在这几个方面:更好的语义,内置执行器和返回值是
2018年9月8日

React Fire:React DOM 的改造计划,使其更现代化

存在着相当多的已知问题,如果没有更大的内部变化,其中一些问题很难或根本无法修复,这些问题导致了无数的后续修复工作并产生了大量的技术债务。在这项被称为
2018年9月3日

别天真了,第三方 CSS 并不安全

假设浏览器确实采用上面的应对方法解决“键盘记录器”的问题。攻击者只需在页面上找到一个非密码文本输入框(可能是搜索输入框)并将其盖在密码输入框上即可。然后他们的攻击就又可用了。
2018年8月31日

前端监控和前端埋点方案设计

我们以上报首屏加载事件为例,DOM提供了document的DOMContentLoaded事件来监听dom挂载,提供了window的load事件来监听页面所有资源加载渲染完毕。
2018年8月31日

使用 JavaScript 的代价!(2018 版)

PRPL是高效加载的性能模式。它代表着:将关键资源推送(Push)到初始路由上,渲染(Render)初始路由,预缓存(Pre-cache)其他路由,延迟加载(Lazy-load)并按需创建剩余路由
2018年8月29日

Redux进阶(一)

github上有详细的官方文档可供查找,卤煮在此只是简单的说明一下用法,诸位可以仔细观察文档上的用法,不需要多少时间就可以熟练掌握。到此为止,万里长城,终于走完了第一步。
2018年8月28日

手摸手,带你用合理的姿势使用webpack4(下)

才奏效!所以我们那些异步懒加载的页面都是无效的。这启不是坑爹!我们迭代业务肯定会不断的添加删除页面,这岂不是每新增一个页面都会让之前的缓存都失效?那我们之前还费这么大力优化什么拆包呢?
2018年8月27日

async/await 是如何让代码更加简洁的?

如果你想要在自己的机器上跟着运行这些代码的话,那么将会用到这个虚拟的API类。这个类模拟网络调用,返回Promise,这个Promise将会在调用200ms之后以简单示例数据的方式完成处理。
2018年8月27日

终极蛇皮上帝视角之微信小程序之告别“刀耕火种”

https://github.com/tuateam/tua-mp/tree/master/packages/tua-mp/examples/webpack-simple
2018年8月26日

小程序开发实践总结

多webview的页面架构,小程序每新开一个页面,都会用一个新的webview来渲染。为了防止webview对内存的消耗。小程序限制层级不能超过10层。
2018年8月25日

手摸手,带你用合理的姿势使用 webpack 4(上)

cache提高了编译速度,但实测发现是有一定的提升,但当你一个项目,路由懒加载的页面多了之后,50+之后,热更新慢的问题会很明显,之前的文章中也提到过这个问题,原以为新版本会解决这个问题,但并没有。
2018年8月23日

新鲜出炉的8月前端面试题

type=module,异步加载不会造成阻塞浏览器,页面渲染完再执行,可以同时加上async属性,异步执行脚本(利用顶层的this等于undefined这个语法点,可以侦测当前代码是否在
2018年8月19日

微信小程序之圆形进度条

一个canvas,使用绝对定位作为背景,canvas-id="canvasProgressbg"
2018年8月17日

用 JS 写一个同 Excel 表现的智能填充算法

smart-predictor仍然不够“smart”,它只能预测自然数字,或者自然数字与字符串的结合,但仍然不支持对日期格式,字母列表等数据的预测。如果各位读者有兴趣,也非常欢迎大家来贡献脑洞,让
2018年8月15日

滚动视差?CSS 不在话下

https://codepen.io/Chokcoco/pen/JBaQoY(https://codepen.io/Chokcoco/pen/JBaQoY)
2018年8月12日

小程序构建骨架屏的探索

跟H5方式一样,根据class或者id获取节点信息,不同的是只能获取到当前的节点信息,无法获取到其父或者子节点信息,所以只能手动给需要渲染骨架屏的节点添加相应的class或者id:
2018年8月11日

组件、Prop 和 State

但…是,我们还没有开发任何实际的东西啊?一个只显示纯文本的应用能有多大用处呢?至少要学到如何建造本文开头所说的房子吧?界面里有东西可以点才有用啊?
2018年8月9日

一个小白的四次前端面试经历

上面的是我的能力技能的简历,因为我面试之后猜的,他可能是一个全栈工程师,所以前端的一些技能我感觉可能没有我深入,但是他的经验肯定是比我高的,他一直都是问我的问题都是一些表面的东西。重点有几个。
2018年8月2日

记一次凉凉的小米前端面试

然后面试官问了一些其他的东西,对小米有什么看法?995上班、加班没有加班费能不能接收等等。心想小米在雷总的带领下还真是拼啊。
2018年7月29日

关于 Vue 和 React 区别的一些笔记

默认是通过比较引用的方式进行的,如果不优化(PureComponent/shouldComponentUpdate)可能导致大量不必要的VDOM的重新渲染
2018年7月28日

三年 React 开发经验的我,迁移到 Vue 的心路历程

时发现的一些最重要的问题。这并不是一篇严谨的比较,不能作为选择库的依据。但如果你也像我一样不得不从一个库切换到另一个库,或者只是想了解更多的关于两个库的信息,这篇文章也许会有帮助。
2018年7月23日

10 分钟理解 JS 引擎的执行机制

如果JS中不存在异步,只能自上而下执行,如果上一行解析时间很长,那么下面的代码就会被阻塞。 对于用户而言,阻塞就意味着"卡死",这样就导致了很差的用户体验
2018年7月22日

无尽滚动的复杂度

Music的艺术家列表是一个,Facebook的时间线是一个,Tweeter的话题列表也是一个。当你向下滚动,新的内容就神奇的“无中生有”了。这是一个得到广泛赞扬的、非常好的用户体验。
2018年7月19日

不要再问我跨域的问题了

有一天你刚睡醒,收到一封邮件,说是你的银行账号有风险,赶紧点进www.yinghang.com改密码。你吓尿了,赶紧点进去,还是熟悉的银行登录界面,你果断输入你的账号密码,登录进去看看钱有没有少了。
2018年7月17日

WebView缓存原理分析和应用

但是在5.1系统上,/data/data/包名/app_webview/文件夹依然存在,只是4.4系统上面存储WebView自带缓存的app_webview/cache文件夹不再存在了(注意下App
2018年7月15日

Web Worker 使用教程

允许主线程把二进制数据直接转移给子线程,但是一旦转移,主线程就无法再使用这些二进制数据了,这是为了防止出现多个线程同时修改数据的麻烦局面。这种转移数据的方法,叫做Transferable
2018年7月12日

别慌,不就是跨域么!

window.name属性可设置或者返回存放窗口名称的一个字符串。他的神器之处在于name值在不同页面或者不同域下加载后依旧存在,没有修改就不会发生变化,并且可以存储非常长的name(2MB)
2018年7月8日

揭开JS无埋点技术的神秘面纱

那问题就好解了,除了点击,再设计一种交互来支持用户网页中原有的点击行为不就好了。用“右键点击”或者“按住shift+点击”之类都可以。反正不要再和网页默认的交互很容易产生冲突的方式就行。
2018年7月7日

Edge 比 Chrome 快 29%?外媒:别拿过时的标准说事

www.oschina.net/news/97597/browser-benchmarks-edge-chrome
2018年7月1日

HTTPS 到底加密了什么?

非对称加密使用的是两个密钥,公钥与私钥,我们会使用公钥对网站账号密码等数据进行加密,再用私钥对数据进行解密。这个公钥会发给查看网站的所有人,而私钥是只有网站服务器自己拥有的。
2018年6月30日

两行 CSS 代码实现图片任意颜色赋色技术

PNG格式小图标的CSS任意颜色赋色技术,当时惊为天人,感慨还可以这样玩,私底下也曾多次想过有没有其他方法可以实现,又或者不仅仅局限于
2018年6月29日

使用 h5 新特性,轻松监听任何 App 自带返回键

这是MDN相关链接:https://developer.mozilla.org/zh-CN/docs/Web/API/Document/hidden。
2018年6月27日

Vue 项目 SSR 改造实战

每个用户通过浏览器访问Vue页面时,都是一个全新的上下文,但在服务端,应用启动后就一直运行着,处理每个用户请求的都是在同一个应用上下文中。为了不串数据,需要为每次SSR请求,创建全新的app,
2018年6月26日

单身一族看过来

最佳相亲时光并不长,选择高效率、可信度高的相亲平台。
2018年6月23日

脚本语言不行?微软技术经理透露 JS 重写 Office 365 进入尾声

套件的所有应用都被重写了,并且工作已进入尾声,而完成这项工作使用的正是那个弱小的脚本语言
2018年6月14日

如何选择 Web 前端模板引擎?

很难用唯一的标准去评判两个引擎哪个复杂度低,这是由使用者的思维模式不同造成的。例如前边列出的引擎在使用上以及预编译结果上的区别,不同使用者感触是不同的,这正是不同引擎存在的合理性、价值性。
2018年6月13日

使用 Node.js 开发简单的脚手架工具

require('chalk');console.log(chalk.green('项目创建成功'));console.log(chalk.red('项目创建失败'));
2018年6月10日

如何写好.babelrc?Babel的presets和plugins配置解析

其实看了上面的应该也明白了,presets,也就是一堆plugins的预设,起到方便的作用。如果你不采用presets,完全可以单独引入某个功能,比如以下的设置就会引入编译箭头函数的功能。
2018年6月4日

没有 Python,微软宣布 Excel 新增 JavaScript 支持

https://www.oschina.net/news/95903/excel-support-javascript
2018年6月1日

IE9 跨域请求兼容

https://cypressnorth.com/programming/internet-explorer-aborting-ajax-requests-fixed/
2018年5月31日

Firefox 开始支持 Web 组件技术

组件让开发人员可以更轻松地创建这些页面、在另一个项目上重复使用它、甚至可以从其它已经搞清爽的网站上复制过来。
2018年5月30日

如何用 CSS 实现多行文本的省略号显示

其实这个实现完全利用了元素浮动的基本规则。在这里不详细讲解CSS2.1规范中的几种情形,不明白的读者自行查阅。这段代码实现很简单,就是三个子元素和包含块的高度及浮动设置:
2018年5月29日

页面可视化搭建工具的前生今世

https://page-pipepline.github.io/pipeline-editor/dist/index.html#/pipeline
2018年5月29日

从0开始发布一个无依赖、高质量的 npm 包

development的entry是main.js,而production的entry是Keyboard.js。前面说过,开发阶段需要有对模块的引用,但是正式发布就不需要了,所以要分别配置。
2018年5月28日

Web 安全之 XSS

CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
2018年5月26日

利用 javascript 实现富文本编辑器

基础功能修修补补以后,实际项目中有可能遇到一些其他的需求,比如当前光标所在文字内容状态啊,图片拖拽放大啊,待办列表功能,附件卡片等功能啊,markdown切换等等。在了解了js
2018年5月24日

Chrome 新动作:取消 HTTPS 页面安全标记;暂时恢复网页自动播放功能

谷歌最后写到:“我们仍在探索为用户提供卓越的音频体验方案,稍后我们将发布更详细的想法。”然而,下方留言显示开发者似乎对10月份恢复禁止自动播放政策还存有意见,事情或许还有变数,开源中国将继续跟进。
2018年5月21日

vue-cli 脚手架中 webpack 配置基础文件详解

重点章节点击查看:package.json;config/index.js;webpack.base.conf.js;webpack.dev.conf.js;webpack.prod.conf.js
2018年5月19日

滑向未来(现代 JS 与 CSS 滚动实现指南)

listeners,浏览器对它的支持还是不错的。事件监听函数新接受一个可选的对象作为参数,告诉浏览器当事件触发时,事件处理函数永远不会取消默认行为。(当然,添加此参数后,)在事件处理函数中调用
2018年5月15日

WebSocket 通信过程与实现

虽然用的人不多,可能是因为协议刚出来的时候有安全性的问题以及兼容的浏览器比较少,但现在都有解决。如果你有这些需求可以考虑使用
2018年5月12日

JS 中原型和原型链深入理解

在Javascript中,每一个函数实际上都是一个函数对象.JavaScript代码中定义函数,或者调用Function创建函数时,最终都会以类似这样的形式调用Function函数:var
2018年5月8日

前端大全

再回到前面的案例,案例1中的值为基本类型,案例2中的值为引用类型。案例2中的赋值就是典型的浅拷贝,并且深拷贝与浅拷贝的概念只存在于引用类型。
2018年5月7日

你点的 ES6 小技巧,请查收

假设现在有一个数列,你希望更新它的每一项(map的功能)然后筛选出一部分(filter的功能)。如果是先使用map然后filter的话,你需要遍历这个数组两次。
2018年4月29日

如何提升页面渲染效率

元素的一些属性和方法,当在被访问或者被调用的时候,会触发浏览器的布局动作(以及后续的Paint动作),而布局基本上都会波及页面上的所有元素。当页面元素比较多的时候,布局和绘制都会花费比较大。
2018年4月27日

面试题:你能写一个 Vue 的双向数据绑定吗?

//_binding保存着model与view的映射关系,也就是我们前面定义的Watcher的实例。当model改变时,我们会触发其中的指令类更新,保证view也能实时更新
2018年4月18日

ES6 Javascript 实用开发技巧

中的内容在定义后,再进行修改依然有效,原因是对于对象类型的使用是指针式引用,常量只是指向了对象的指针,对象本身的内容却依然可以被修改,注意,数组(Array)
2018年4月17日

W3C 强推 DOM 4.1 ,谷歌苹果微软Mozilla 齐反对

www.oschina.net/news/95204/apple-google-microsoft-and-mozilla-object-dom-4-1
2018年4月16日

Vue.js最佳实践(五招让你成为Vue.js大师)

对大部分人来说,掌握Vue.js基本的几个API后就已经能够正常地开发前端网站。但如果你想更加高效地使用Vue来开发,成为Vue.js大师,那下面我要传授的这五招你一定得认真学习一下了。
2018年4月14日

何时使用立即执行函数表达式

为了解决命名冲突问题,可以将一段代码封装在一个IIEF中,将一个全局变量(比如,jQuery)作为参数传入IIFE。在函数内部,就可以以一个任意的参数名(比如,$)来访问该参数值:
2018年4月9日

关于 Google 发布的 JS 代码规范,你需要了解什么?

代码规范并不是一种编写正确JavaScript代码的规则,而是为了保持源代码编写模式一致的一种选择。对于JavaScript语言尤其如此,因为它灵活并且约束较少,允许开发者使用许多不同的编码样式。
2018年4月8日

Node 调试工具入门教程

服务脚本会一直在后台运行,但是大部分脚本只是处理某个任务,运行完就会终止。这时,你可能根本没有时间打开调试工具。等你打开了,脚本早就结束运行了。这时怎么调试呢?
2018年3月26日

前端布局基础概述

left时,这个元素会清除前一个元素的浮动,进而换行显示;如果使用clear:left时,这个元素在当前行的最右端显示。如下图所示(06:layout/clear/4.右浮动清除左浮动.html):
2018年3月26日

值得探索的 8 个机器学习 JavaScript 框架

JavaScript开发人员倾向于寻找可用于机器学习模型训练的JavaScript框架。下面是一些机器学习算法,基于这些算法可以使用本文中列出的不同JavaScript框架来模型训练:
2018年3月22日

50道CSS基础面试题(附答案)

原理:有点类似于轮播,整体的元素一直排列下去,假设有5个需要展示的全屏页面,那么高度是500%,只是展示100%,剩下的可以通过transform进行y轴定位,也可以通过margin-top实现
2018年3月18日

从输入URL到页面加载的过程?由一道题完善自己的前端知识体系!

可以看到,上述包括了一大堆的概念,仅仅是偏前端向,而且没有详细展开,就已经如此之多的概念了,所以,个人认为如果没有自己的见解,没有形成自己的知识体系,仅仅是看看,背背是没用的,过一段时间就会忘光了。
2018年3月15日

1000 多个项目中的十大 JavaScript 错误以及如何避免

如果将值传递给超出范围的函数,也可能会发生这种情况。许多函数只接受特定范围内的数字输入值。例如,Number.toExponential(
2018年3月8日

别天真了,第三方 CSS 并不安全

假设浏览器确实采用上面的应对方法解决“键盘记录器”的问题。攻击者只需在页面上找到一个非密码文本输入框(可能是搜索输入框)并将其盖在密码输入框上即可。然后他们的攻击就又可用了。
2018年3月7日

JavaScript 复制内容到剪贴板

MDN:https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand
2018年3月6日

Webpack 4 不完全迁移指北

主版本的迭代会有一个时间比较长且稳定的开发周期。而在2017年8月份的时候,webpack
2018年2月24日

淘宝 flexible.js 漏洞修补:记一次 rem 踩坑记录

解决方法也很简单,因为这类异常手机html的style.fontSize、html最终的fontSize和页面元素1rem的值都不相等,但是1rem和html的最终fontSize很接近。代码如下
2018年2月12日

微信小程序之圆形进度条

一个canvas,使用绝对定位作为背景,canvas-id="canvasProgressbg"
2018年2月12日

20 行 JS 代码实现粘贴板功能

zcfy.cc/article/roll-your-own-copy-to-clipboard-feature-in-20-lines-of-javascript-sitepoint
2018年2月11日

前端框架三巨头年度走势对比:Vue 增长率最高

www.oschina.net/news/93188/javascript-frameworks-numbers-2018
2018年2月11日

现代CSS进化史

这篇文章的目的是通过回顾CSS的历史背景,介绍下时至2018年的今天CSS发展过程中的一些设计模式和工具的演变。通过对这些背景的理解,你将会更轻松的理解每个设计思想并且学以致用。接下来让我们开始吧!
2018年2月10日

谷歌正式抛弃 HTTP,7 月起全部标示为不安全

Chrome新界面将帮助用户了解所有的HTTP网站都是不安全的,从而采用安全的HTTPS网站。HTTPS比以往任何时候都更便利、更便宜,它带来了性能提升和强大的新功能,这些都是HTTP所没有的。
2018年2月10日

ES6 换种思路处理数据

为属性名,对象本身为属性值的对象。haoduoshipin(http://haoduoshipin.com/videos/240/)
2018年2月9日

采访 Node.js 之父 Ryan Dahl

Pramod:很好,是的,机器学习需要好的数学基础。在你最近一篇关于乐观虚无主义的博客中,你说我们有朝一日能够模仿大脑、开发一个像人类一样理解和思考的机器,我们离实现这个目标还有多远?
2018年2月9日

使用 React 和 GraphQL 做一个todo list

zcfy.cc/article/graphql-overview-build-a-to-do-list-api-with-a-react-front-end-mdash-sitepoint
2018年2月8日

面向对象:我愿东海水,恩爱忽焉暌。臣朔真何幸,一返桃源路

3)相亲圈男生和女生的信息,面向对象团队仅核实了学历、年龄和身份证。其他诸如兴趣爱好、家庭情况、具体收入等无从核实。请有意通过面向对象相亲的男生和女生,慧眼识真爱~
2018年2月8日

神奇的 conic-gradient 圆锥渐变

处于修正阶段的模块没有处于改善阶段的模块稳定。通常它们的语法还需要详细审查,说不定还会有很大的变化,而且不保证和之前的兼容。替代的语法通常经过测试并已经实现。
2018年2月8日

面向对象:希望余生都与您有关

3)相亲圈男生和女生的信息,面向对象团队仅核实了学历、年龄和身份证。其他诸如兴趣爱好、家庭情况、具体收入等无从核实。请有意通过面向对象相亲的男生和女生,慧眼识真爱~
2018年2月7日

JavaScript 创建对象的七种方式

不过这种方式还是不够好,应为constructor属性默认是不可枚举的,这样直接设置,它将是可枚举的。所以可以时候,Object.defineProperty方法
2018年2月7日

10 种最常见的 Javascript 错误

在你的应用程序中的具体代码可能是不同的,但我们希望我们已经给你足够的线索,以解决或避免在你的应用程序中出现的这个问题。如果还没有,请继续阅读,因为我们将在下面覆盖更多相关错误的示例。
2018年2月7日

面向对象:认真积极但绝不将就地找到那个他,相信会有奇妙的事件发生

家庭第一,家庭第一,家庭第一,重要的事情说三遍。家庭第一意味着凡事要把保证家庭品质放在第一位,无论是妻子还是丈夫。无论从精神上还是物质上都要建立一个有品质的家庭,这样才能有有品质的人生。
2018年2月6日

CSS3 动画卡顿性能优化解决方案

将位图绘制到屏幕上;通知主线程更新页面中可见或即将变成可见的部分的位图;计算出页面中哪部分是可见的;计算出当你在滚动页面时哪部分是即将变成可见的;当你滚动页面时将相应位置的元素移动到可视区域。
2018年2月6日

刚刚,阿里开源了一个重磅AI炸弹!

从提出至今,强化学习经历了约半个世纪的发展。但是业界始终没有一本书,能够真正系统地、剖析强化学习技术的落地实践案例。这本书将帮助技术人真正理解强化学习的本质,并且更好地掌握这项技术、用于实践。
2018年2月6日

搞定这10个实战项目,让你击败80%的深度学习面试者

的整数和字符串数据类型,学会使用变量存储数据,掌握使用内置的函数和方法。你将会学习条件语句,循环语句完成复杂的统计。同时你将学会使用集合数据类型,包括列表、集合和字典等多种数据结构。
2018年2月5日

WebAssembly 应用案例直击,谷歌地球都在用

的设计目标:定义一个可移植,体积紧凑,加载迅速的二进制格式为编译目标,而此二进制格式文件将可以在各种平台(包括移动设备和物联网设备)上被编译,然后发挥通用的硬件性能以原生应用的速度运行。
2018年2月5日

Web 安全之跨站脚本攻击(XSS)

CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
2018年2月4日

我的 Web 前端面试经历——百度

就我自身而言,投递出了差不多40份简历,最后接到了7个电话面试,4个进入二面,3个进入三面,3个拿到offer!基本上进入三面以后都比较稳了,当然不排除竞争比较激烈的时候三面刷人!
2018年2月4日

VUE 使用中踩过的坑

解决方案:变量赋值和箭头函数。(参考:var和let的区别:http://blog.csdn.net/nfer_zhuang/article/details/48781671)
2018年2月3日

面向对象:我相信,未来要和我共度一生的那个人,一定也怀着满心的期待

3)相亲圈男生和女生的信息,面向对象团队仅核实了学历、年龄和身份证。其他诸如兴趣爱好、家庭情况、具体收入等无从核实。请有意通过面向对象相亲的男生和女生,慧眼识真爱~
2018年2月3日

2017 年 JavaScript 现状调查报告总结

同时还有一个重要的点需要要指出,Angular仍然有一个庞大的用户基础。银行、政府和其他大公司并不能像一般的自由职业者那样迅速地采用最新的技术,他们通常有大量遗留的Angular代码需要维护。
2018年2月3日

Bootstrap 4 正式发布:15篇前端热文回看

时间过得很快,我做软件工程师已经三年整了。我没有做过一个项目,一直在做框架相关的工作,有时维护Web框架代码,有时写移动Hybrid的前端UI框架,也有时做开发工具或自动编译平台等。
2018年2月2日

实战:图片上传组件开发

简单来说,就是在原有的画布上再蒙半透明的一层画布,然后让这一层有一部分是没有的就可以实现了,总的来说就是蒙版和遮罩的思路,在canvas中也有相关的api,但是我愣是没看明白。负责任的贴一个链接
2018年2月2日

WebAssembly 应用案例直击,它们都在用 WebAssembly

的设计目标:定义一个可移植,体积紧凑,加载迅速的二进制格式为编译目标,而此二进制格式文件将可以在各种平台(包括移动设备和物联网设备)上被编译,然后发挥通用的硬件性能以原生应用的速度运行。
2018年2月1日

2017 学习 JavaScript 感觉如何?

其实没什么大不了的问题,实际上Mithril的文件都是Javascript,我也才发现给一直做HTML/CSS的人提供JSX代码时,获得的反馈要比给他们纯Javascript代码时要好得多。
2018年2月1日

BAT的前端工程师,是如何精进技术的?

激烈的人才争夺,主要源于前端技术的飞快更新,而国内大多数学校并未开设前端开发的相关专业和课程,所以企业开始将人才培养计划瞄准来自硅谷的前沿技术学习平台
2018年1月30日

2017 年 JS 框架回顾:后端框架

JavaScript,而只有41%的人正在为后端编写代码(前后端开发者有重叠的部分)。前后端开发人员的比例为约为2:1,这也表明
2018年1月30日

JavaScript 2018: 你需要和不需要深入的

标准的这些变化中,指出了一些好的可以去了解的,尽管里面所罗列的一些东西可能不是你所关注的。对这些有一些大体上的了解能够让你在遇到困难难以抉择时,产生联系,知道去找谁,知道该去了解什么样的技术。
2018年1月28日

CSS 小技巧

我们在设计例如按钮等控件的时候,会遇到这样的设计:只有内侧有圆角,而边框或者描边的四个角还是保持直角的形状,用以下代码可以轻松的实现。
2018年1月25日

2017 年 JS 框架回顾:React 生态系统

www.cnblogs.com/powertoolsteam/p/state-of-javascript-frameworks-2017-part-2.html
2018年1月25日

2017 年崛起的 JS 项目

本身带有基本的动态类型,但缺乏静态类型。而很多开发者倾向于在代码中使用类型,尤其在大型项目中,因为这样可以让代码变得更为健壮且易于阅读和理解。
2018年1月24日

webassembly 的那些事

Format)并且和Emscripten集成,因此该工具以Binary和Emscript-en的末尾合并命名为Binaryen。它旨在使编译WebAssembly容易、快速、有效。
2018年1月24日

LCS 算法:Javascript 最长公共子序列

)!这个真是千万要注意到!许多人就是看不懂《算法导论》的那个图表,还有许多博客的作者不懂装懂。我们总是从左到右比较,当然了第一个字符串,由于作为矩阵的高,就垂直放置了。
2018年1月23日

2018 前端趋势:更一致,更简单

是个很流行的选择。它提供了你所需要的“通用的”(universal)网络应用开发工具,安装、配置起来还挺简单。在开发难度日益增加,渐进迭代式网络应用(progressive
2018年1月22日

程序员和用户

如果是脾气暴躁的程序员,遇到这种情况,难免会对着客户发一顿牢骚,而且,程序员的脾气一般都不是很好,所以,通常跟客户沟通时,项目经理一般都是跟着一起,以免事态激化。
2018年1月21日

涨知识,原来可以这样用 CSS 来追踪用户

一个更好的解决方案是,在网页加载时,浏览器不会去加载需要的外部资源,这样,就不可能监测到用户的个人行为,这种对内容加载的修改可以通过浏览器来实现,也可以通过插件来实现(类似
2018年1月20日

Bootstrap 4 正式发布!带来新的示例和新的主题

正式版现已发布,更新内容方面,相对于之前的测试版,正式版没有重大的改变,但做出了一些关键的改进,并解决了一些棘手的错误。
2018年1月19日

一个三年工作经验的Web工程师的经验之谈

我不是个勤奋的人,也不是个不思进取的人。我也怕自己没有进步,但也不喜欢强迫自己,所以现在我都是争取自己每天有一点不同。闲暇时间会学学弄弄小东西,写写博文,无聊时也会打打游戏,我希望是能遵从我本心。
2018年1月18日

ECharts 大版本 4.0 正式发布:带来 8 项全新“黑科技”特性

团队宣布团队品牌升级为“百度数据可视化实验室”。从单一的技术产品研发团队进化为从各个方面联合各种伙伴推进可视化工作的联盟组织。
2018年1月17日

display 的 32 种写法

display属性的取值都不难,难的是融会贯通,在恰当的地方运用恰当的值,毕竟我们的目的是为了把代码写短,而不是把代码写长。如果你怕记不太清的话,就请你收藏这篇小文,也许将来的某一天,你会用得着。
2018年1月16日

Webpack 持久化缓存实践

往往是以一种静态资源文件的形式存在于服务器,通过接口来获取数据来展示动态内容。这就涉及到公司如何去部署前端代码的问题,所以就涉及到一个更新部署的问题,是先部署页面,还是先部署资源?
2018年1月16日

深入理解 webpack 文件打包机制

直接通过数组下标去一一对应的,这样能保证简单且唯一,通过其它方式比如文件名或文件路径的方式就比较麻烦,因为文件名可能出现重名,不唯一,文件路径则会增大文件体积,并且将路径暴露给前端,不够安全。
2018年1月15日

在 Node 的帮助下,横跨多平台的 JavaScript 已经赢了

我不知道这个征服会在什么时候停止,但Node正在疯狂爆发。它正在颠覆一个又一个的发展难题,为一个软件开发的世界铺平了道路,在这个世界里,一种语言可以统治所有。我确实觉得我需要重申一下——以防被忽视:
2018年1月14日

npm 发布 2017 JavaScript 框架报告

www.oschina.net/news/92218/npm-state-of-javascript-frameworks-2017-part-1
2018年1月10日

WebSocket:5分钟从入门到精通

WebSocket为了保持客户端、服务端的实时双向通信,需要确保客户端、服务端之间的TCP通道保持连接没有断开。然而,对于长时间没有数据往来的连接,如果依旧长时间保持着,可能会浪费包括的连接资源。
2018年1月8日

如何利用 Electron 开发一个桌面 APP

https://www.oschina.net/translate/how-to-build-your-first-app-with-electron
2018年1月7日

6 大主流 Web 框架优缺点对比:15篇前端热文回看

从刚接触前端开发起,跨域这个词就一直以很高的频率在身边重复出现,一直到现在,已经调试过N个跨域相关的问题了,16年时也整理过一篇相关文章,但是感觉还是差了点什么,于是现在重新梳理了一下。
2018年1月6日

CSS 布局经典问题初步整理

涉及浮动和清除浮动,主要讲解“圣杯”和“双飞翼”两种解决方法。这两种方法实现的都是三栏布局,两边的盒子宽度固定,中间盒子自适应,它们实现的效果是一样的,差别在于其实现的思想。
2018年1月5日

2018 年最值得关注的 JavaScript 趋势

https://medium.com/unicorn-supplies/angular-vs-react-vs-vue-a-2017-comparison-c5c52d620176
2018年1月3日

很全很全的 JavaScript 模块讲解

模块通常是指编程语言所提供的代码组织机制,利用此机制可将程序拆解为独立且通用的代码单元。所谓模块化主要是解决代码分割、作用域隔离、模块之间的依赖管理以及发布到生产环境时的自动化打包与处理等多个方面。
2018年1月2日

欲练JS,必先攻CSS——前端修行之路

我之前写边框的时候就发现,只要让边框的颜色更淡,边框看起来就更细,所以当设计师问我为什么边框看起来比较粗的时候,我都告诉他们颜色调浅一点就好了,这个技巧我一直在实际使用。网上有博客说通过css3
2018年1月1日

2017前端技术大盘点

Angular可以说是一个最早问世的MVVM的框架。2009年,angular像一枚重磅炸弹一样,震撼了前端的开发者们。当时,W3C似乎还未推出正式的Web
2017年12月31日

从无到有 <前端异常监控系统 > 落地

图2我们生成的map文件sourcesContent字段直接引入了源文件代码(构建工具可以配置是否给map文件引入源文件),这样可以方便后端解析,如果没有源文件对应的话后端是解析不出正确结果的。
2017年12月30日

趣图:形象解释 undefined 和 null 之间的区别 ​

前端相关的技术文章、工具资源、精选课程、热点资讯
2017年12月29日

不可思议的混合模式 background-blend-mode

中十分强大的功能之一。当然,瞎用乱用混合模式谁都会,利用混合模式将多个图层混合得到一个新的效果,只是要用到恰到好处,或者说在
2017年12月28日

微信宣布小程序增加新类目:小游戏

目前,小游戏已提供开发文档和工具,方便开发者先进行开发,请访问微信公众平台官网获取开发工具。待小游戏开放注册后,开发者可注册和提交小游戏。我们期待游戏开发者发挥创意,提供更多好玩有趣的小游戏。
2017年12月28日

别慌,不就是跨域么!

window.name属性可设置或者返回存放窗口名称的一个字符串。他的神器之处在于name值在不同页面或者不同域下加载后依旧存在,没有修改就不会发生变化,并且可以存储非常长的name(2MB)
2017年12月27日

2018 年,React 将独占前端框架鳌头?

http://www.oschina.net/news/91865/react-js-in-2018
2017年12月26日

两行 CSS 代码实现图片任意颜色赋色技术

PNG格式小图标的CSS任意颜色赋色技术,当时惊为天人,感慨还可以这样玩,私底下也曾多次想过有没有其他方法可以实现,又或者不仅仅局限于
2017年12月22日

简单粗暴地理解 JS 原型链

14)你妈爱美,又跑到韩国整形,整到你妈他妈都认不出来,即使你妈头发换回飘柔了,但隔壁邻居还是叫你金毛狮王子。因为没人认出你妈,整形后的你妈已经回炉再造了,这就是原型的整体重写。
2017年12月22日

Ajax 跨域,这应该是最全的解决方案了

说实话,当初整理过一篇文章,然后作为了一个解决方案,但是后来发现仍然有很多人还是不会。无奈只能耗时又耗力的调试。然而就算是我来分析,也只会根据对应的表现来判断是否是跨域,因此这一点是很重要的。
2017年12月20日

Web 动画帧率(FPS)计算

但最后因为兼容性问题完全没办法使用。不过不代表这么长篇幅的描述没有用,从上面的介绍,我们得知,如果我们可以到得到每一帧中的固定一个时间点,那么两者相减,也能够近似得到一帧所消耗的时间。
2017年12月18日

精心收集的 48 个 JavaScript 代码片段,仅需 30 秒就可理解

使用递归。对于给定字符串中的每个字母,为字母创建字谜。使用map()将字母与每部分字谜组合,然后使用reduce()将所有字谜组合到一个数组中,最基本情况是字符串长度等于2或1。
2017年12月17日

可能是目前最完整的前端框架 Vue.js 全面介绍

Devtools。打开vue项目,在console控制台选择vue面板。在Devtools工具中,可以选择组件,查看对应组件内的数据信息。也可以选择Vuex选项,查看该项目内Vuex的状态变量信息。
2017年12月14日

JavaScript 性能优化技巧分享

在60Hz的显示器上,我们希望动画和滚动时每秒有60帧,这种情况下每帧大约为16ms。在这16ms的时间内,实际上只有8-10ms来完成所有工作,其余时间则由浏览器的内部和其它差异占据。
2017年12月14日

6 大主流 Web 框架优缺点对比

我们估计最大的挑战就是核心发展的动力和临界物质的缺乏。我们感觉很多的观点和概念都是我们对其他框架的批评性的想法,但是这些愿望都没有完全交付。它似乎就像是一个正在进行的工作一样,就像Dojo
2017年12月9日

一篇真正教会你开发移动端页面的文章(二)

1、拿到设计图,计算出页面的总宽,为了好计算,取100px的font-size,如果设计图是iPhone6的那么计算出的就是7.5rem,如果页面是iPhone5的那么计算出的结果就是6.4rem。
2017年12月8日

2017 前端大事件和趋势回顾,2018 何去何从?

字节码(Bytecode)较一般程序代码小许多倍,意谓着这项标准可节省移动设备的使用带宽,有助于改善网页加载速度,且字节码更适合浏览器读取。
2017年12月8日

一篇真正教会你开发移动端页面的文章(一)

也就是说,在移动端,视口和浏览器窗口将不在关联,实际上,布局视口要比浏览器窗口大的多(在手机和平板中浏览器布局视口的宽度在768~1024像素之间),如下图(布局视口和窗口的关系):
2017年12月6日

打造自己的 JavaScript 武器库

/[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/i.test(str);
2017年12月5日

Google 是如何构建 Web 框架的

它真正的价值在于,测试的是真实应用程序。它们不仅数量众多,还反映了开发者如何使用框架(而不仅局限于框架作者)。重要的一点是:框架作者并不是总能够正确地估计框架的使用情况。
2017年12月3日

Chrome 浏览器 必知必会的小技巧

这其中的一些小技巧在低版本中是没有的,所以建议大家用最新版的,目前最新版是62,版本很重要,如果发现有些技巧不起作用,请先查看浏览器的版本。
2017年12月2日

用 Vue 做一个酷炫的 menu:15篇前端热文回看

ellipsis只适用于单行文本的处理;各种比较脆弱的javascript实现。之所以说这种实现比较脆弱是由于需要文本长度的变化时刻得到回流(relayout)后的布局信息,如宽度
2017年12月1日

用 Async 函数简化异步代码

函数的转换那样简洁,但是确实跟写同步代码一样。如果你在这里不捕捉错误,它会延着调用链一直向上抛出,直到在某处被捕捉处理。如果它一直未被捕捉,它最终会中止程序并抛出一个运行时错误。Promise
2017年11月29日

前端工程师自救大法:妈妈我要学 React !

毕竟是一个很新、很热门的技术,大家都在摸索着前进,所以学起来非常痛苦——网上的教程很少,就算有,要么是纠结在细节问题上,对于新手帮助不大;要么就是过于简单,看不清全貌。
2017年11月28日

网页适配 iPhoneX,就是这么简单

iPhoneX(https://developer.apple.com/ios/human-interface-guidelines/overview/iphone-x/)
2017年11月27日

CSS in JS 简介

src="https://unpkg.com/polished@1.0.0/dist/polished.min.js">
2017年11月26日

浅谈 Web 图像优化

属性便可以改变颜色。并且在多大的缩放下都能保证清晰,矢量格式不能满足复杂的图像,例如照片,高清图。这时候我们就需要位图,位图的格式有很多:
2017年11月26日

如何用 CSS 实现多行文本的省略号显示

其实这个实现完全利用了元素浮动的基本规则。在这里不详细讲解CSS2.1规范中的几种情形,不明白的读者自行查阅。这段代码实现很简单,就是三个子元素和包含块的高度及浮动设置:
2017年11月25日

基于 HTML5 Canvas 实现地铁站监控

提供证据与线索:很多工厂银行发生偷盗或者事故相关机关可以根据录像信息侦破案件,这个是非常重要的一个线索。还有一些纠纷或事故,也可以通过录像很容易找出相关人员的责任。
2017年11月24日

15 个有趣的 JS 和 CSS 库

在每个月,我们都会为大家分享一些最新、有趣的前端库,希望它们中的一些会对你的项目有所帮助。当然,如果你也发现了一些有趣、实用的库,框架或是工具,也欢迎留言与大家一同分享。
2017年11月23日

谷歌浏览器 VS 火狐量子:哪一个更快呢?

Chrome浏览器自2008年发布以来,就已经成为了很多用户的首选浏览器。这是之前属于Firefox的荣耀,但是随着时间的推移,由于Firefox的运行速度和极度臃肿,Chrome
2017年11月22日

一个程序员要扔掉多少代码,才能成为真正的程序员

要是有程序员反驳说,不对啊,我多年来写的代码几乎都跑起来了,都用起来了啊。那他肯定是做企业应用项目的,而不是做产品的。企业应用项目么,怎么着胡乱对付也能用个几年。做产品的,不扔个几版,能出精品么?
2017年11月20日

用 Vue 做一个酷炫的 menu

每个item动画完成后都会触发animationEnd事件,监听item的animationEnd事件,当所有动画依次触发完毕之后,提醒menu置于关闭状态(父子组件通信
2017年11月18日

Visual Studio Code v.s Atom-IDE:Web 开发哪家强?

https://spin.atomicobject.com/2017/11/06/atom-ide-vs-vscode-comparison/
2017年11月16日

趣图:如果 NPM 是快递公司…

会知道的。后端童鞋或许不知道,欢迎看懂的童鞋在评论中解释。
2017年11月15日

iPhone X 适配手Q H5 页面通用解决方案

对于顶部通栏的页面,通过加URL参数来增加顶部黑色适配层。http://m.gamecenter.qq.com/directout/index?_bid=278&_wvx=1
2017年11月13日

你有学习者综合征吗?Web 开发是重灾区

【导读】:学习者综合征的主要表现:学而不用,不停学习,却没有真正实际应用知识来做东西。如果过去的一年里,学习的语言或框架超过三个,那可能已经感染学习者综合征了。Web
2017年11月12日

VS Code 公布 2018 路线图:生态改进 快乐编码

将继续坚持按月更新的频率,并在每次迭代版本发布时对后续改进目标进行“调查”。这也意味着今后几个月的目标是在真正进行功能开发之前更好地了解问题和潜在的解决方案。调查完成后,会适当调整开发计划。
2017年11月8日

Google 爬虫如何抓取 JavaScript 的?

很明显,这些都是重点:动态插入文本、图像、链接和导航。优质的文本内容对搜索引擎理解网页主题和内容是至关重要的。在这个动态网站的时代,它的重要性是无需质疑的。
2017年11月7日

从谷歌 V8 JS 引擎学到的优化经验

在执行过程中,V8会重新获得废弃对象的内存,即垃圾回收。为了保证拥有较快的对象分类、较短的垃圾回收停顿,以及没有内存碎片。V8使用了停顿、分代、精确垃圾回收器。这意味着V8使用了:
2017年11月6日

Angular 5.0 来了,有这些大变化

为了消除对更多腻子脚本(polyfill)的依赖,我们用StaticInjector代替了ReflectiveInjector。前者不再需要Reflect,为开发者减少了应用大小。
2017年11月3日

Vue 2.5 发布了:15篇前端热文回看

本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样。但是这并不代表HTTPS的真实设计过程。在阅读本文时,你可以尝试放下已有的对HTTPS的理解,这样更利于“还原”过程。
2017年11月2日

汇总一些知名的 JavaScript 开发开源项目

它使应用程序能够在脱机时本地存储数据,然后在应用程序重新联机时将其与CouchDB和兼容服务器同步,从而保持用户的数据同步,无论他们下次登录到何处。
2017年10月27日

别了,Firebug!

中首个可以让程序员检测(inspect)、编辑(edit)、调试(debug)的工具,还可以监控任何网页中的
2017年10月26日

强推 HTTPS 见效?Google 表示 HTTPS 使用率不断升高

在第一阶段,Google只是对那些会收集密码或者包含某些信用卡信息填写表格的非安全页面进行标记;而在第二阶段,当用户在HTTP页面输入数据就会发出警告并且默认在隐身模式下访问所有HTTP页面。
2017年10月24日

Vue 2.5 发布了

用户还应将以下包更新为最新版本从而兼容类型声明:vue-router,vuex,vuex-router-sync
2017年10月21日

也许这样理解 HTTPS 更容易

我是这样解决的。既然服务器需要将公钥传给客户端,这个过程本身是不安全,那么我们为什么不对这个过程本身再加密一次?可是,你是使用对称加密,还是非对称加密?这下好了,我感觉又进了鸡生蛋蛋生鸡问题了。
2017年10月20日

大统一!微软谷歌 W3C 把 Web 文档迁移至 MDN

Mozilla、微软、谷歌、三星、W3C达成协议,准备将它们的所有文档网站统一,内容全部放到Mozilla
2017年10月19日

JavaScript 面试必须知道的 10 个概念

引用类型 —了解如何复制对象、数组和函数以及如何将它们传递到函数中。知道引用类型复制的是什么。了解原始值是通过复制值来复制及传递的。
2017年10月17日

一个超炫酷带阴影的CSS/Sass 3D进度条

注意:某些CSS属性仅在现代浏览器中受支持。IE仍然不支持transform-style:preserve-3d,这是一个用于创建嵌套3D结构的关键属性;所以进度条在IE浏览器中将是扁平/无效的。
2017年10月16日

程序员的基础生存技能:高效用Google

像2shou叔这种英语阅读能力不过关的人,遇到急事就不能一篇篇翻原版文档了,不得不求助国内的二手货;这时,Google界面上的一个小按钮就帮上大忙了:点击搜索工具
2017年10月15日

JS 依然最受欢迎,GitHub 2017 开发者年度报告

都会推出“Octoverse”报告,其中列出了一些年度的数据,包括其网站中最受欢迎的编程语言、开源项目等。今年的数据让人眼前一亮,我们不妨关注一下。
2017年10月13日

写一个网页进度loading

既然是“假”的,我们就要做到“仿真”才有用。仿真是有意义的,事实上用户并不在乎某一刻你是不是真的加载到了百分之几,他只关心你还要load多久。所以接下来我们就来实现一个页面加载进度loading。
2017年10月12日

使用 Service Worker 做一个 PWA 离线网页应用

比较尴尬的是Manifest目前只有Chrome支持,并且只能在安卓系统上使用,IOS的浏览器无法添加一个桌面图标,因为IOS没有开放这种API,但是自家的Safari却又是可以的。
2017年10月11日

Highcharts 6 正式发布,带来 15 种新的图表类型

具体细节请查阅发行说明:https://www.highcharts.com/blog/news/announcing-highcharts-6/
2017年10月9日

前端面试题小集

使用iframe之前需要考虑这两个缺点。如果需要使用iframe,最好是通过javascript动态给iframe添加src属性值,这样可以绕开以上两个问题。
2017年10月8日

Chrome 开发者控制台中,你可能意想不到的功能

会根据你的要求打印多个事件。传递参数包含所有事件的字符串数组,而不是单个事件名字。比如,monitorEvents($(‘#firstName’),[‘click’,’focus’])
2017年10月7日

管理页面的 setTimeout & setInterval

具体的代码笔者托管在:createjs.timer(https://github.com/leeenx/createjs.timer)。
2017年10月5日

Firefox 新版采用新引擎,速度是旧版的 2 倍,名字和 Logo 也变了

Quantum在某些网站上的打开速度超过Chrome,同时使用的内存减少30%。该团队还修复了468个浏览器问题,这可能会导致速度上升。
2017年10月4日

WordPress 宣布停止使用 React,网传百度也停用 React:15篇前端热文回看

导航条对于每一个Web前端攻城狮来说并不陌生,但是毛玻璃可能会相对陌生一些。简单的说,毛玻璃其实就是让图片或者背景使用相应的方法进行模糊处理。这种效果对用户来说是十分具有视觉冲击力的。
2017年10月3日

趣图:用户看到的前端 vs 程序员看到的后端

前端相关的技术文章、工具资源、精选课程、热点资讯
2017年10月2日

惊叹!这个盲人程序员是这样写代码的

语音或盲文并不能描绘出窗口的显示布局。信息以线性方式呈现给我。如果你把网页复制粘贴进记事本,你就能明白我看到的网页是什么样子的。就是剥离大部分格式的多行文本。然而屏幕阅读器可以获取网页上的
2017年9月30日

你应该知道的 setTimeout 秘密

浏览器的内核是多线程的,它们在内核控制下相互配合以保持同步,一个浏览器至少实现三个常驻线程:JavaScript引擎线程,GUI渲染线程,浏览器事件触发线程。
2017年9月28日

主流浏览器内核介绍(前端开发值得了解的浏览器内核历史)

的特点是代码完全公开,因此,其可开发程度很高,全世界的程序员都可以为其编写代码,增加功能。因为这是个开源内核,因此受到许多人的青睐,Gecko
2017年9月26日

JS语法: 由 ++[[]][+[]]+[+[]] = 10 引发的问题

#7.1.1,有一个抽象的ToPrimitive运算,它会用于对象转换为原始数据类型,这个运算不只会用在加号运算符,也会用在关系比较或值相等比较的运算中。下面有关于ToPrimitive的说明语法:
2017年9月25日

趣图:大家帮我比较一下这些前端 offer

前端相关的技术文章、工具资源、精选课程、热点资讯
2017年9月24日

FB 妥协了,下周把 React 协议改成 MIT

https://github.com/facebook/react-native/blob/master/PATENTS
2017年9月23日

前端常见跨域解决方案(全)

浏览器跨域访问js、css、img等常规静态资源被同源策略许可,但iconfont字体文件(eot|otf|ttf|woff|svg)例外,此时可在nginx的静态资源服务器中加入以下配置。
2017年9月22日

Node.js 8.5 正式发布,新特性一览

zcfy.cc/article/what-x27-s-new-in-node-js-8-5-risingstack-4226.html
2017年9月21日

WordPress 宣布停止使用 React,网传百度也停用 React

Matt在文章中表示,WordPress最近几年对React非常满意,不过现在还是决定放弃React,并已经和核心开发者进行交流,开始进行新的技术选型。
2017年9月18日

你知道URL、URI和URN三者之间的区别吗?

URI,但严格来说URI可以进一步划分为URL、URN或者这两者的组合,所以了解这三者之间的区别将会非常有趣并让人受益匪浅。如果你恰好在某个地方碰到了这些东西,那么至少应该知道它们的含义。
2017年9月17日

如何写出好的 JavaScript —— 浅谈 API 设计

有许多同学觉得说写出这一版本来已经很不错的。的确,应该也还不错,但这一版的抽象程度其实也不是很高,或者说,如果考虑适用性,这版已经很好了,但是如果考虑可复用性的话,这版依然有改进空间。
2017年9月14日

为什么总有人黑 JavaScript

我将描述为什么不要使用它们,但是首先,我想表达的是,我很欣赏这些创造,它们为我们的开发提供了多样性的选择,而且尤为重要的是,我非常感谢那些创造了伟大工具和“语言”的人。
2017年9月11日

用 CSS3 制作导航条和毛玻璃效果

background-size属性用于指定背景图片的尺寸,其中的一个参数cover是将背景图片放大,以适合铺满整个容器。但是这个属性使用的前提是需要设定一张足够大尺寸的图片,否则会导致背景图片失真。
2017年9月10日

jQuery === 面条式代码?

这篇文章我好久前就看过,现在再把它翻出来,里面对比了下jQuery和React分别实现一个发推的功能,作者用jQuery写着写着代码就乱套了,而用React不管需求多复杂,代码条理依旧很清晰。
2017年9月8日

怎么学 JavaScript?

所以特别佩服印度人,他跟你讲英文,你一个词语没听懂,他会蹦出n个同一意思的单词,你听懂一个,就ok了。看书也是这样的,某一块讲得不透彻,不用担心,其他书籍可以帮助你来了解。第二个问题是,书籍推荐。
2017年9月6日

趣图:程序员的日常之一

前端相关的技术文章、工具资源、精选课程、热点资讯
2017年9月3日

前端跨域知识总结:15篇前端热文回看

通常来说,我写的有关Web开发的文章都是严肃的。因为主要涉及到克服挑战,或者是教学之类的内容。不过,今天是周五了,经过了劳累的一周,我决定休息一下,发一些和以往不同的娱乐点的CSS的双关语开心一下。
2017年9月2日

还不知道这 11 个超酷的编程新工具你就 out 了!

GitHub,以及其他工具。它是怎么工作的呢?它会完全按照开发团队成员的提交历史来自动生成工作报告。这项应用使团队之间共享信息变得更容易,也让团队成员之间形成了积极的竞争关系。该主意是Mesh
2017年8月29日

V8 内存分配与垃圾回收

在标记阶段需要遍历堆中的所有对象,并标记那些活着的对象,然后进入清除阶段。在清除阶段,只清除没有被标记的对象。由于标记清除只清除死亡对象,而死亡对象在老生代中占用的比例很小,所以效率较高。
2017年8月28日

编写现代 CSS 代码的 20 个建议

}不过这种方式也是存在缺陷的,譬如你无法设置图片的懒加载、图片无法被搜索引擎或者其他类似的工具抓取到,有个不错的属性叫object-fit可以解决这个问题,不过该属性目前的浏览器支持并不是很完善。
2017年8月27日

又闹分裂?Node.js 被 fork 出一个项目 Ayo.js

项目最大利益的决策。这并不只是关乎某个具体的个人的问题,作为一个项目和我们承担的责任,这还是一个关乎着我们所选择的向众人展示的价值观的问题。
2017年8月24日

远离面条代码:编写可维护的 JS 代码

这个函数接受两个参数后遍历一个对象,然后返回一个数组。这段代码不是很复杂,但是对于没有接触过这段代码的人还是需要一点时间来弄明白发生了什么事情。此外,函数的功能不是很明确。所以注释可以这样写:
2017年8月22日

ES6 变量声明与赋值:值传递、浅拷贝与深拷贝详解

当我们构造一个提供配置的对象,并且需要这个对象的属性携带默认值时,解构特性就派上用场了。举个例子,jQuery的ajax函数使用一个配置对象作为它的第二参数,我们可以这样重写函数定义:
2017年8月21日

前端跨域知识总结

在跨域问题上,域仅仅是通过“URL的首部”来识别而不会去尝试判断相同的ip地址对应着两个域或两个域是否在同一个ip上。(“URL的首部”指window.location.protocol
2017年8月20日

CSS双关语–来自前端的小段子,你看得懂吗?

www.zcfy.cc/article/css-visual-puns-codeburst-3922.html
2017年8月18日

CSS布局奇技淫巧:各种居中

这里如果不定义元素的宽和高的话,那么他的宽就会由left,right的值来决定,高会由top,bottom的值来决定,所以必须要设置元素的高和宽。同时如果改变left,right
2017年8月17日

回顾 Web 开发者熟悉的 10 个经典开源项目和工具

开发者使用的最著名的网页开发工具之一,它是火狐浏览器的扩展,可以实时地在网站页面平滑地编辑、调试和监控
2017年8月16日

前端面试中的常见的算法问题

将字符串颠倒字母顺序然后匹配就行了。其实重要的考察的就是对于reverse的实现。其实我们可以利用现成的函数,将字符串转换成数组,这个思路很重要,我们可以拥有更多的自由度去进行字符串的一些操作。
2017年8月15日

深拷贝与浅拷贝的实现(一)

上面的jQuery源码是否让你眼花缭乱?有没有什么办法无脑实现深拷贝呢?JSON.parse()和JSON.stringify()给了我们一个基本的解决办法。
2017年8月13日

Vue.js 很好,但是比 Angular 或 React 更好吗?

要更加简单,有时候甚至更好。如果你担心这个框架的未来发展状态,那么我们建议你完全没必要担心。这种趋势会保持很长时间,而且在未来的两年内不会有丝毫的减弱。但是,使用
2017年8月11日

前端框架这么多,该何去何从?

React测试灵活,可以根据项目具体情况来定制,但是没有统一的测试实践规范,对开发人员的能力有较大依赖。Angular4和Ember概念多,有官方推荐的实践,要完全掌握难度大,优势是实现起来更规范。
2017年8月10日

如何写出小而清晰的函数?(JS 版)

如果应用中已经存在一些功能繁杂的函数,希望对它们进行重构,你可能会发现困难重重。而且在很多情况下,在合理的时间内是不可能完成的。但千里之行始于足下:在力所能及的前提下,先拆分一部分出来。
2017年8月9日

更快学习 JS 的 6 个简单思维技巧

的知识时,试着像对待一个新玩具、一辆新车、一双新鞋或者其它你有兴趣尝试的东西一样。像玩一样练习,而不是像工作一样练习。用新技能做一些很棒的事情。给自己一些惊喜同时展示给你的朋友。
2017年8月4日

现代前端开发技术栈

最近几年,应用开发的方法论发生了翻天覆地的变化。随着微服务架构、云计算、单页应用和响应式设计的兴起和发展,在保证项目开发进度、用户体验和应用性能的同时,开发者需要做大量的决策。如今,对于前端开发和
2017年8月3日

坦然面对:应对前端疲劳

最近我发现我的注意力被分散到三件事情上,我用三分之一的精力写着代码,同时戴着耳机一边听别人讨论代码,一边在Slack上跟别人聊代码。我决定适可而止——我的全部注意力都被代码所占据。我已经精疲力竭了。
2017年8月2日

这是我最见过的最牛叉的代码:15篇前端热文回看

Chrome浏览器我想是每一个前端er必用工具之一吧,一部分原因是它速度快,体积不大,支持的新特性也比其它浏览器多,还有一部分我想就是因为它的控制台功能强大了吧,说它是神器一点也不过分,很方便。
2017年8月1日

Google x Github 前端认证项目:如何从零开始成为抢手技术精英?

的网页开发专家联合打造的"前端开发工程师"纳米学位项目给出了答案。除了来自硅谷的独家课程视频、逐行代码审阅与一对一技术辅导外,你将挑战以下实战项目,毕业后获得
2017年7月31日

你可能不需要 Vuex

对于客户端的信息或者一些其他的数据状态与上面两种方式在一定程度上也是相似的。这一切看起来并没什么问题,然而细细想想,当一个应用的足够复杂时,我们该如何去设计我们的数据模型,本地共享的状态是存在
2017年7月30日

VueJS 开发常见问题集锦

vue-loader(https://vue-loader.vuejs.org/zh-cn/configurations/pre-processors.html)
2017年7月28日

纯 CSS 实现波浪效果!

值得注意的是,要看到,这里我们生成波浪,并不是利用旋转的椭圆本身,而是利用它去切割背景,产生波浪的效果。那为什么不直接使用旋转的椭圆本身模拟波浪效果呢?因为
2017年7月27日
2017年7月23日

用 jsx 写 vue 组件

我们平常写vue的组件时,一般都是用的是模版,这种方式看起来比较简洁,而且vue作者也推荐使用这个方式,但是这种方式也有一些它的弊端,例如模版调试麻烦,或者在一些场景下模版描述可能没那么简单和方便。
2017年7月22日

总结个人使用过的移动端布局方法

src="http://g.tbcdn.cn/mtb/lib-flexible/%7B%7Bversion%7D%7D/??flexible_css.js,flexible.js"/>
2017年7月22日

Threejs 开发 3D 地图实践总结

所以要在3D应用做点击拾取,首先要将屏幕坐标系转化成ndc坐标系,这时候得到ndc的xy坐标,由于2d屏幕并没有z值所以,屏幕点转化成3d坐标的z可以随意取值,一般取0.5(z在-1到1之间)。
2017年7月20日

ECMAScript 2017 语言规范发布

http://www.solidot.org/story?sid=53061
2017年7月20日

CSS 样式书写规范

我觉得不同的规范都有各自的长处与缺陷,对待所谓的规范最好的方式不是人云亦云,拿来就用,而是应该结合实际情况及需求,取长补短,取其精华去其糟粕。
2017年7月19日

你一定要知道的 Chrome DevTool 新功能

可访问性将测试屏幕阅读器的能力,以及其他可访问性是否能在页面中正常工作。例如:按元素来使用属性,ARIA属性的最佳实践,可辨别的元素命名等等。
2017年7月17日

只有20行Javascript代码!手把手教你写一个页面模板引擎

好了,这样就能跑了,但是还不够好。这里我们以data["property"]的方式使用了一个简单对象来传递数据,但是实际情况下我们很可能需要更复杂的嵌套对象。所以我们稍微修改了一下data对象:
2017年7月17日

纯 HTML+CSS+JS 编写的计算器应用

在关于页面,有一个版本更新检查按钮,就能检查是否有新版本,这个功能的原理是发送一个JSOPN请求去检查服务器上的JSON文件,比对版本号,如果服务器上的版本比APP的版本高则会提示有新版本可以下载。
2017年7月16日

十大经典排序算法的 JS 版

读者自行尝试可以想看源码戳这(https://github.com/damonare/Sorts),博主在github建了个库,读者可以Clone下来本地尝试。此博文配合源码体验更棒哦
2017年7月15日

你不可不知的 HTML 优化技巧

以上就是本文介绍的优化HTML代码的技巧,一个高质量高性能的网站,往往取决于对细节的处理,因此我们在日常开发中,能够考虑到用户体验,后期维护等方面,则会产生更高效的开发。
2017年7月14日

Chrome 控制台实用指南

有的时候后端传回来一大串数据,是不是觉得直接console.log或是通过抓包工具查看都会让人晕头转向呢,这个时候正事console.table发挥作用的时候了,以表格的形式呈现数据,自然一目了然。
2017年7月13日

趣图:这是我最见过的最牛叉的代码

href="javascript:alert("清除成功");">
2017年7月9日

九个Console命令,让 JS 调试更简单

console上述的集中度支持printf的占位符格式,支持的占位符有:字符(%s)、整数(%d或%i)、浮点数(%f)和对象(%o)
2017年7月7日

前端框架选型

ViewModel(控制层)是View与Model的粘合,它通过绑定事件与View交互并可以调用Service处理数据持久化,也可以通过数据绑定将Model的变动反映到View中
2017年7月3日

Web 前端知识体系精简:15篇前端热文回看

的核心团队正争论着为应该将哪款(前端框架)加入现在的架构之中。目前看来,暂时脱颖而出的是React与Vue.js,社区中的很多成员正权衡着这两款框架的利弊。
2017年7月2日

不要再在 JavaScript 中写 CSS 了

https://github.com/webpack-contrib/extract-text-webpack-plugin)。这意味着浏览器无法开始解释样式直到
2017年6月30日

Vue vs React: Javascript 框架之战

而对于React而言,每当应用的状态被改变时,全部子组件都会重新渲染。当然,这可以通过shouldComponentUpdate这个生命周期方法来进行控制,但Vue将此视为默认的优化。
2017年6月29日

刨根问底HTTP和WebSocket协议

A:它的前后端全部使用JS,做到了真正的前后端统一;前端浏览器里存有一份后台开放出来的数据库的拷贝,快;使用WebSocket协议来做数据传输协议,来同步前后端的数据库,实现了真正的实时同步。
2017年6月28日

前端工程师面试题汇总

每个模块的代码结构都应该比较简单,且每个模块之间的关系也应该非常清晰,随着功能和迭代次数越来越多,你会如何去保持这个状态的?
2017年6月25日

JavaScript 创建对象的七种方式

不过这种方式还是不够好,应为constructor属性默认是不可枚举的,这样直接设置,它将是可枚举的。所以可以时候,Object.defineProperty方法
2017年6月25日

一名 40 岁“老”程序员的反思

有趣的是,无休止的跟进,好像是我们这个领域或多或少独一无二的特点。编程生涯是真的如此不同吗?如果是,为什么?对我们的事业轨迹来说又意味着什么?我想从以下两个观点来尝试回答这些问题。
2017年6月24日

2017年前端框架、类库、工具大比拼

Vue.js是一个用于构建用户界面的轻量级渐进框架。它提供了一个类似React的虚拟DOM驱动视图层,可以与其它类库集成,用于构建强大的单页面应用。该框架是由之前在AngularJS工作过的Evan
2017年6月23日

Top 10 JavaScript编辑器,你在用哪个?

Atom源代码位于GitHub上,它是用CoffeeScript编写的,与Node.js集成在一起。Atom是Chromium浏览器的一个特殊的存在,它被设计成一个文本编辑器而不是一个Web浏览器;
2017年6月21日

Web 前端知识体系精简

Canvas和SVG相比,canvas更依赖于分辨率,不支持事件处理器,文本渲染能力弱,比较适合密集型游戏,其中的许多对象会被频繁绘制,而svg则比较适用于类似谷歌地图带有大型渲染区域的应用程序。
2017年6月20日

谁说 JavaScript 简单的

let和var的不同在于作用域。var的作用域是最近的函数块,let的作用域是最近的封闭块,封闭块可以小于函数块(如果不在任何块中,则let和var都是全局的)。
2017年6月19日

十行 HTML 实现增强现实

我们最近发布了AR.js。你不需要安装任何应用,用你的手机通过网络就能体验到强大的增强现实。但让我们更进一步,看一下如何让你也创作出自己的增强现实体验。多亏了神奇的a-frame,最短的
2017年6月16日

使用 flv.js 做直播

为什么要在这个时候探索flv.js做直播呢?原因在于各大浏览器厂商已经默认禁用Flash,之前常见的Flash直播方案需要用户同意使用Flash后才可以正常使用直播功能,这样的用户体验很致命。
2017年6月16日

奇妙的 CSS shapes(CSS图形)

发展到今天已经越来越强大了。其语法的日新月异,让很多以前完成不了的事情,现在可以非常轻松的做到。今天就向大家介绍几个比较新的强大的
2017年6月15日

6个月成为Google官方认证的前端开发工程师

大家可以根据自己的背景和需要灵活选择项目,掌握成为前端工程师的所需技能,开发在移动端和桌面都能表现出色的响应式网页,创造让人过目难忘的用户体验。
2017年6月13日

从前端小白到技术专家,这里有3点可执行的建议

有些人可能会认为:即使没有这些基础也能做前端(这也是我们之前说门槛低的原因),但是对这些基础知识的掌握情况和理解程度决定了我们可以走多远。这部分的学习是一个循序渐进的过程,不可能一蹴而就。
2017年6月12日

前端跨域请求原理及实践

由于数据请求一般都是由页面发送数据字段,服务器根据这些字段作相应的处理,如数据库查询,字符串操作等等。所以我们这里简单的处理数据(在数据后面加上字符串‘server
2017年6月11日

阿里、网易、滴滴共十次前端面试碰到的问题

阿里、网易的面试几乎都是围绕项目展开的,所以提醒自己搬砖的时候多想想、多看看,多站在一个高度去看整个项目:用到什么技术,技术实现原理是什么,项目框架怎么搭建的,采取安全措施了吗…
2017年6月10日

唯快不破:Web 应用的 13 个优化步骤

正确分析的话,内存则是另一块可能获得收益的部分。如果你正在运行着一个拥有很多虚拟元素的页面(庞大的动态表格)或者可交互式的元素(比如游戏),内存优化可以获得更少的卡顿和更高的帧率。从我们最近的文章
2017年6月9日

谷歌不喜欢 Node.js ? 听听开发团队怎么说

团队的开发者分别回答了他们对这个问题的看法,对于编程语言来说,每一门语言都有它自己的优势,重要的是如何用它去解决问题。
2017年6月8日

浅谈Web自适应

接下来我们可以根据根元素的字体大小用rem设置各种属性的相对值。当然,如果是移动设备,屏幕会有一个上下限制,我们可以控制分辨率在某个范围内,超过了该范围,我们就不再增加根元素的字体大小了:
2017年6月4日

GET和POST有什么区别?及为什么网上多数答案都是错的:15篇前端热文回看

很多人在找工作的过程中,总是碰壁,在之前一篇文章中讲述了我的一些个人经历。我是个普通的人,而我相信很多人都跟我一样,不是那么的有才华,也不是那么的笨,所以我的经历应该更普众化。
2017年6月3日

用 Canvas 编织璀璨星空图

A、B两点,也就是外侧循环是A,内侧循环是B,那么在下一次循环中,外侧为B,内侧为A,是不是也会创建一条边呢?而实际上,这两个边除了方向不一样以外是完全一样的,这完全没有必要而且占用资源。因此我们在
2017年6月2日

CSS 布局经典问题初步整理

涉及浮动和清除浮动,主要讲解“圣杯”和“双飞翼”两种解决方法。这两种方法实现的都是三栏布局,两边的盒子宽度固定,中间盒子自适应,它们实现的效果是一样的,差别在于其实现的思想。
2017年6月1日

GET和POST有什么区别?及为什么网上多数答案都是错的

那么,网上流传甚广的这个说法是从何而来的呢?我在HTML标准中,找到了相似的描述。这和网上流传的说法一致。但是这只是HTML标准对HTTP协议的用法的约定。怎么能当成GET和POST的区别呢?
2017年5月30日

图解 WebGL & Three.js 工作原理

这就是应用了矩阵matrix,将三维世界坐标转换成屏幕坐标,这个矩阵叫投影矩阵,由javascript传入,至于这个matrix怎么生成,我们暂且不讨论。
2017年5月29日

CSS3 3D 行星运转动画 + 浏览器渲染原理

每个页面至少需要一次回流,就是在页面第一次加载的时候。在回流的时候,浏览器会使渲染树中受到影响的部分失效,并重新构造这部分渲染树,完成回流后,浏览器会重新绘制受影响的部分到屏幕中,该过程成为重绘。
2017年5月28日

CSS3进阶:酷炫的3D旋转透视

立方体就完成了。写这篇文章的时候,本来到这里,这一块应该就结束了,但是写到这里的时候,突然突发奇想,既然正方体可以(正六面体),那么正四面体,正八面体甚至球体应该也能做出来吧?
2017年5月27日

HTTP 协议入门

数据流发送到一半的时候,客户端和服务器都可以发送信号(RST_STREAM帧),取消这个数据流。1.1版取消数据流的唯一方法,就是关闭TCP连接。这就是说,HTTP/2
2017年5月25日

前端跨域请求原理及实践

由于数据请求一般都是由页面发送数据字段,服务器根据这些字段作相应的处理,如数据库查询,字符串操作等等。所以我们这里简单的处理数据(在数据后面加上字符串‘server
2017年5月24日

vuejs 初体验— Chrome 插件开发实录

文件中需要注意一下的mainfest.json这个文件,这个json文件的作用是提供插件的各种信息,例如插件能够做的事情,以及插件的文件配置等等信息。下面是一个清单文件的示例:
2017年5月20日

JavaScript 深入之从 ECMAScript 规范解读 this

而规范类型相当于meta-values,是用来用算法描述ECMAScript语言结构和ECMAScript语言类型的。规范类型包括:Reference,
2017年5月19日

工作五年,后面四年重复着第一年的活儿?

本想写成一篇长文,把每个环节可以综合考虑的问题都提出来,不过本文的目的,只是表述一些观点,期望大家在编程的时候,有更多基于团队的思考,针对具体问题提出一些通用的解决方案。比如下面,再提出几个问题:
2017年5月19日

Babel 从入门到插件开发

这样就有一个问题,就是比如我们只是用了一个Button组件,这样引用就会导致会把所有的组件打包进来,导致整个js文件会非常大。我们能不能把代码动态实时的编译成如下的代码来解决这个问题?
2017年5月18日

WebSocket 教程

这种单向请求的特点,注定了如果服务器有连续的状态变化,客户端要获知就非常麻烦。我们只能使用“轮询”:每隔一段时候,就发出一个询问,了解服务器有没有新的信息。最典型的场景就是聊天室。
2017年5月18日

JavaScript 深入之作用域链

2.执行checkscope函数,创建checkscope函数执行上下文,checkscope函数执行上下文被压入执行上下文栈
2017年5月17日

CSS进阶:提高你前端水平的 4 个技巧

另外一个常见的组织文件的方式是按照功能将文件分组。举个栗子,如上面所示,所有和轮播效果组件有关的文件都被分类到了一起。采用这种方式可以让你更容易的找到相关文件。
2017年5月17日

Javascript图片预加载详解

这里,我们通过DOM创建三个元素来实现三个文件的预加载。正如上面提到的那样,使用Ajax,加载文件不会应用到加载页面上。从这点上看,Ajax方法优越于JavaScript。
2017年5月16日

JavaScript 深入之变量对象

这是因为在进入执行上下文时,首先会处理函数声明,其次会处理变量声明,如果如果变量名称跟已经声明的形式参数或函数相同,则变量声明不会干扰已经存在的这类属性。
2017年5月16日

JavaScript 深入之执行上下文栈

当遇到函数执行的时候,就会创建一个执行上下文,并且压入执行上下文栈,当函数执行完毕的时候,就会将函数的执行上下文从栈中弹出。知道了这样的工作原理,让我们来看看如何处理上面这段代码:
2017年5月15日

Emoji.prototype.length —— Unicode 字符那些事儿

www.zcfy.cc/article/emoji-prototype-length-a-tale-of-characters-in-unicode-2081.html
2017年5月14日

浅谈浏览器http的缓存机制

客户端会为资源标记上该信息,下次再次请求时,会把该信息附带在请求报文中一并带给服务器去做检查,若传递的时间值与服务器上该资源最终修改时间是一致的,则说明该资源没有被修改过,直接返回304状态码即可。
2017年5月14日

如何通过 Vue+Webpack 来做通用的前端组件化架构设计

我个人接触使用过:avalonjs、angularjs、vuejs。因为工作以及前端团队能力的问题,所以在不同的公司,在开发工作中选用了不同的前端架构。
2017年5月13日

JavaScript 深入之词法作用域和动态作用域

当采用静态作用域时,执行foo函数,先从foo函数内部查找是否有局部变量value,如果没有,就根据书写的位置,查找上面一层的代码,在这里是全局作用域,也就是value等于1,所以最后会打印1
2017年5月13日

JavaScript 深入之从原型到原型链

指向实例倒是没有,因为一个构造函数可以生成多个实例,但是原型指向构造函数倒是有的,这就要讲到第三个属性:construcotr,每个原型都有一个constructor属性指向关联的构造函数
2017年5月12日

怎么写好组件

调用template方法将数据渲染到页面上;将页面上的一些事件结果,映射到数据层。其实现在流行的MVVM模式,就是在逻辑层这里做了更多的事情,只是开发者们不用去关心细节处理,更专注业务的开发。
2017年5月12日

有趣的 CSS 题目(17):不可思议的颜色混合模式 mix-blend-mode

天天和混合模式打交道,想要记住这么多效果,还是挺困难的。不过有前人帮我们总结了一番,看看如何比较好的理解或者说记忆这些效果,摘自Photoshop中高级进阶系列之一——图层混合模式原理:
2017年5月11日

2017年前端开发工具趋势

受访者被要求判断自己的水平。有些人可能比较谦虚,有些有选择困难综合症。有些人可能高估了自己的水平,因为他们可能是一群新手程序员团队中唯一前端开发人员。自我偏见的偏差可以被平均,但没有办法证明。
2017年5月11日

前端开发转型产品经理,靠谱吗?

魏文庆此前是网易前端技术部总监,目前他转型成为了网易有数(一款数据可视化分析平台2B)的产品经理。魏文庆拥有八年网易前端开发经验,参与网易博客、网易手机邮等产品的前端开发,开发经验非常丰富。
2017年5月10日

一个栗子上手 CSS3 动画

原因:由于animation默认以ease方式过渡,它会在每个关键帧之间插入补间动画,所以动画效果是连贯性的。此时可以使用steps()取消补间动画。
2017年5月10日

从输入url到页面展示到底发生了什么

第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。
2017年5月9日

BOOM:一款有趣的Javascript动画效果

块运动的直线距离添加一个正负值恰当的随机数,那么就可以达到有的块炸的比较远,有的块炸的比较近。利用未缩放的小块图片做一下大概的示意图:
2017年5月7日

前端基础进阶(11):详细图解jQuery对象,以及如何扩展jQuery插件

而工具方法的特性也和工具一词非常贴近,他们与实例的自身属性毫无关联,仅仅只是实现一些通用的功能,我们可以通过$.each与$('div').each这2个方法来体会工具方法与实例方法的不同之处。
2017年5月6日

有趣的CSS题目(16): 奇妙的 background-clip: text

当然很多人会吐槽这个属性的兼容性,确实,我个人觉得前端现在的生态有一点面向未来编程的感觉(调戏)。不过提前掌握总体而言利大于弊,多多拓宽自己的视野。
2017年5月4日

前端基础进阶(10):面向对象实战之封装拖拽对象

在前面一章我给大家分享了面向对象如何实现,基于那些基础知识,我们来将上面实现的拖拽封装为一个拖拽对象。我们的目标是,只要我们声明一个拖拽实例,那么传入的目标元素将自动具备可以被拖拽的功能。
2017年5月3日

前端基础进阶(10):面向对象实战之封装拖拽对象

在前面一章我给大家分享了面向对象如何实现,基于那些基础知识,我们来将上面实现的拖拽封装为一个拖拽对象。我们的目标是,只要我们声明一个拖拽实例,那么传入的目标元素将自动具备可以被拖拽的功能。
2017年5月3日

前端基础进阶(9):详解面向对象、构造函数、原型与原型链

虽然构造函数解决了判断实例类型的问题,但是,说到底,还是一个对象的复制过程。跟工厂模式颇有相似之处。也就是说,当我们声明了100个person对象,那么就有100个getName方法被重新生成。
2017年5月2日

Vue 2.3.0 正式发布,全新的服务器端渲染

更新内容较多,详情请参阅发布说明:https://github.com/vuejs/vue/releases/tag/v2.3.0
2017年5月2日

纯 CSS3 实现小黄人动效:10 篇前端热文回看

本文标题的命名方式参考了芋头所写的《如何面试一名前端开发工程师?》。「考评」是「面试」的子集,是一个很重要的环节,如果谁打算做「前端工程师面试合集」的话,记得把我这篇文章收录进去哈,蛤蛤蛤蛤~
2017年5月1日

趣图:HTTP 状态码速记表

前端相关的技术文章、工具资源、精选课程、热点资讯
2017年4月30日

前端基础进阶(7):函数与函数式编程

与函数声明不同,函数表达式使用了var进行声明,那么我们在确认他是否可以正确使用的时候就必须依照var的规则进行判断,即变量声明。我们知道使用var进行变量声明,其实是进行了两步操作。
2017年4月29日

前端基础进阶(7):函数与函数式编程

与函数声明不同,函数表达式使用了var进行声明,那么我们在确认他是否可以正确使用的时候就必须依照var的规则进行判断,即变量声明。我们知道使用var进行变量声明,其实是进行了两步操作。
2017年4月29日

前端基础进阶(6):在Chrome开发者工具中观察函数调用栈、作用域链与闭包

这是来自《你不知道的js》中的一个例子。由于在使用断点调试过程中,发现chrome浏览器理解的闭包与该例子中所理解的闭包不太一致,因此专门挑出来,供大家参考。我个人更加倾向于chrome中的理解。
2017年4月28日

有趣的 CSS 题目(15): 谈谈 CSS 关键字 initial、inherit 和 unset

内联元素可继承:letter-spacing、word-spacing、white-space、line-height、color、font、
2017年4月27日

有趣的 CSS 题目(14): 纯 CSS 方式实现 CSS 动画的暂停与播放!

属性定义一个动画是否运行或者暂停。可以通过查询它来确定动画是否正在运行。另外,它的值可以被设置为暂停和恢复的动画的重放。
2017年4月26日

纯CSS3画出小黄人并实现动画效果

当然,很多人会说,明显大小不同,嘴巴,头发也是不一样的。但是其实最大的不同是,用一个形象一点的例子就是:这是两个孩子,第一个是从超市货架上拿的,另外一个是我自己生的。怎么生呢?——用CSS3!
2017年4月23日

你可能不知道的Chrome-devtools用法总结

方法提供一个简单的方法来查看相似数据对象。这将给一个数据提供属性并且创建一个头。行数据将会从每一个索引属性值中获取。
2017年4月20日

你可能不知道的Chrome-devtools用法总结

方法提供一个简单的方法来查看相似数据对象。这将给一个数据提供属性并且创建一个头。行数据将会从每一个索引属性值中获取。
2017年4月20日

高性能滚动 scroll 及页面渲染优化

当用户浏览网页时,拥有平滑滚动经常是被忽视但却是用户体验中至关重要的部分。当滚动表现正常时,用户就会感觉应用十分流畅,令人愉悦,反之,笨重不自然卡顿的滚动,则会给用户带来极大不舒爽的感觉。
2017年4月19日

如何考评一名前端工程师

为了避免上面所提到的尴尬情形,这就要求简历中的技能描述可信度高,省去面试官去检验其可信度的步骤,而现状是不可能的!实际情况是,不像会计等职业需要证件才能上岗,写代码的都是「无证从业」。记得前段时间
2017年4月17日

如何写一个简单的分页

f2e.souche.com/blog/ru-he-xie-ge-jian-dan-de-fen-ye/
2017年4月15日

用 canvas 实现 Web 手势解锁

画圆函数,需要注意:如何确定圆的半径和每个圆的圆心坐标(这个我是参考的),如果以圆心为中点,每个圆上下左右各扩展一个半径的距离,同时为了防止四边太挤,四周在填充一个半径的距离。那么得到的半径就是
2017年4月13日

浅谈图片宽度自适应解决方案

我们不难发现,在我们改变窗口可视区域的时候,图片宽度并不会随之变化,以至于在小屏幕中我们只能开到图片的一部分,这是很多人所不乐见的,因为这极有可能会导致重要信息丢失。那么这个问题如何解决?
2017年4月12日

2017 Web 开发者学习路线图

建立的一个仓库。在文中,作者为他的老教授分享了一组成为前端与后端开发者以及
2017年4月11日

80% 应聘者都不及格的 JS 面试题

Expression:声明即执行的函数表达式)来解决闭包造成的问题,确实是不错的思路,但是初学者可能并不觉得这样的代码很好懂,至少笔者初入门的时候这里琢磨了一会儿才真正理解。
2017年4月10日

一览前端技术干货,推荐这个技术周刊

期,其中也收录了「前端大全」一周的部分技术干货。内容做得很用心!周刊收录的文章和资讯列表中,包含标题和摘要,直接点击标题即可阅读感兴趣的内容,非常方便。
2017年4月9日

前端工程师是怎样一种职业

前端领域的技术更新相对于其他领域要快很多,原因大概也是因为这个领域离用户最近吧。有一些新的技术甚至是颠覆性的,前端工程师必须要跟上时代的步伐,否则你开发出的产品在体验上就落后别人一截了。
2017年4月7日

别再为了 this 发愁了:JS 中的 this 机制

this到底绑定或者引用的是哪个对象环境决定于函数被调用的地方。而函数的调用有不同的方式,在不同的方式中调用决定this引用的是哪个对象是由四种规则确定的。我们一个个来看。
2017年4月5日

Google 爬虫如何抓取 JavaScript 的?

很明显,这些都是重点:动态插入文本、图像、链接和导航。优质的文本内容对搜索引擎理解网页主题和内容是至关重要的。在这个动态网站的时代,它的重要性是无需质疑的。
2017年4月4日

有趣的CSS题目(13):巧妙地制作背景色渐变动画!

background-size:设置背景图片大小。当取值为百分比时,表示指定背景图片相对背景区的百分比大小。当设置两个参数时,第一个值指定图片的宽度,第二个值指定图片的高度。
2017年4月2日

从谷歌 V8 JS 引擎学到的优化经验

在执行过程中,V8会重新获得废弃对象的内存,即垃圾回收。为了保证拥有较快的对象分类、较短的垃圾回收停顿,以及没有内存碎片。V8使用了停顿、分代、精确垃圾回收器。这意味着V8使用了:
2017年4月1日

小公司的前端应该怎么做?

很多团队在快速迭代中会开始“欠账”,时间久了就不愿意还,问题的存在搁置需要想办法去解决,团队成员是看得到问题的,没人说,没人做是因为知道那是坑,你如果能解决的话,一到二次便能提升自己在团队中的位置。
2017年3月30日

最高 40 K,顺丰科技招前端工程师

大数据洞察经济发展,打造数字化物流。通过将公司内外部数据整合、智能化,生产出帮助商家进行物流决策以及产品优化的产品,包括件量实时监控预警、智慧云仓、用户画像、行业分析等多项功能。
2017年3月16日

终于,JavaScript 专属T恤来了!意料之外,情理之中

很合身,穿着非常舒服。面料手感非常好,内侧跟皮肤接触的一面十分柔软。这件hoodie比较厚实,适合比较凉快的地方穿,在办公室空调房里平时觉得冷的地方穿着这件衣服就暖和了
2017年3月13日

前端基础进阶(五):全方位解读this

常规的解决办法很简单,就是使用一个变量,将this的引用保存起来。我们常常会用到这方法,但是我们也要借助上面讲到过的知识,来判断this是否在传递中被修改了,如果没有被修改,就没有必要这样使用了。
2017年3月11日

前端基础进阶(四):详细图解作用域链与闭包

我们知道函数在调用激活时,会开始创建对应的执行上下文,在执行上下文生成的过程中,变量对象,作用域链,以及this的值会分别被确定。之前一篇文章我们详细说明了变量对象,而这里,我们将详细说明作用域链。
2017年3月9日

JavaScript 的 this 指向问题深度解析

指向问题有很多博客在解释,仍然有很多人问。上周我们的开发团队连续两个人遇到相关问题,所以我不得不将关于前端构建技术的交流会延长了半个时候讨论
2017年3月8日

JS 中国象棋(1):校验棋子走法

0000,右起第八位是1。128到255这些数的二进制,右起第8位都是1;0到127这些数的二进制,右起第8位都是0。因此,如果象没过河,也就是pcDst和sqSrc位于相同的一半棋盘,那么
2017年3月7日

JS 中国象棋程序(0):界面设计

幸运的是,我在这本书最后一页的参考文献里,发现了象棋百科全书网。在这家网站的github仓库,发现了一个JavaScript版本的中国象棋软件,而且性能还不错。使用HTML
2017年3月6日

44个 Javascript 变态题解析 (上)

javascript-puzzlers(http://javascript-puzzlers.herokuapp.com/)
2017年3月5日

前端基础进阶(三):变量对象详解

根据这个规则,理解变量提升就变得十分简单了。在很多文章中虽然提到了变量提升,但是具体是怎么回事还真的很多人都说不出来,以后在面试中用变量对象的创建过程跟面试官解释变量提升,保证瞬间提升逼格。
2017年3月5日

使用Angular与TypeScript构建Electron应用(一)

server命令并不能输出文件,我们需要的是即时监视并编译出文件来供作electron渲染才行,所以我们需要为package.json文件的script这一栏添加一行命令:"watch":
2017年3月2日

前端基础进阶(二):执行上下文详细图解

全局上下文入栈之后,其中的可执行代码开始执行,直到遇到了changeColor(),这一句激活函数changeColor创建它自己的执行上下文,因此第二步就是changeColor的执行上下文入栈。
2017年3月1日

小公司的前端应该怎么做?

很多团队在快速迭代中会开始“欠账”,时间久了就不愿意还,问题的存在搁置需要想办法去解决,团队成员是看得到问题的,没人说,没人做是因为知道那是坑,你如果能解决的话,一到二次便能提升自己在团队中的位置。
2017年3月1日

前端基础进阶(一):内存空间详细图解

JavaScript有自动垃圾收集机制,那么这个自动垃圾收集机制的原理是什么呢?其实很简单,就是找出那些不再继续使用的值,然后释放其占用的内存。垃圾收集器会每隔固定的时间段就执行一次释放操作。
2017年2月28日

写一个网页进度loading

既然是“假”的,我们就要做到“仿真”才有用。仿真是有意义的,事实上用户并不在乎某一刻你是不是真的加载到了百分之几,他只关心你还要load多久。所以接下来我们就来实现一个页面加载进度loading。
2017年2月27日

移动端H5页面注意事项

使用移动设备查看页面时会发现,在微信浏览器中有顶部导航栏,在qq内置浏览器里不止有顶部导航,底部也有操作栏(safari浏览器也一样),这些都会占用设计稿显示区域,因此在
2017年2月26日

前端必备,十大热门的 JavaScript 框架和库

应用也说得很详细,同时还有许多成熟的插件可供选择。jQuery能够使用户的html页保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需定义id即可。
2017年2月22日

不装逼地说,在 Google 到底能学到啥?

往小了说,身边既有缩在角落里闷头写代码,讨厌和人交流的社交恐惧症患者,也有精神焕发的社交明星。办公室里,有带狗上班的爱心族,有重视家庭的好爸好妈,有整夜整夜奋斗的梦想家,有痴迷奇特爱好的技术极客……
2017年2月18日

Chrome 开发者控制台中,你可能意想不到的功能

会根据你的要求打印多个事件。传递参数包含所有事件的字符串数组,而不是单个事件名字。比如,monitorEvents($(‘#firstName’),[‘click’,’focus’])
2017年2月17日

从输入 URL 到页面加载完成的过程中都发生了什么事情?(上)

当手指在这个传感器上触摸时,有些电子会传递到手上,从而导致该区域的电压变化,触摸屏控制器芯片根据这个变化就能计算出所触摸的位置,然后通过总线接口将信号传到
2017年1月31日

从输入 URL 到页面加载完成的过程中都发生了什么事情?(下)

/@乔3少:放开了说所有互联网相关的知识都能体现的,比如dns、浏览器缓存,tcp连接、http响应,web服务的工作原理,浏览器的响应和渲染等等,刚刚在本子上列了下想到的安全威胁,很有意思!
2017年1月31日

一道常被人轻视的前端JS面试题

2、若有返回值则检查其返回值是否为引用类型。如果是非引用类型,如基本类型(string,number,boolean,null,undefined)则与无返回值相同,实际返回其实例化对象。
2017年1月30日

React 常用面试题目与分析

中抓取数据,而不需要添加额外的代码。不过实际开发中我们并不提倡使用非受控组件,因为实际情况下我们需要更多的考虑表单验证、选择性的开启或者关闭按钮点击、强制输入格式等功能支持,而此时我们将数据托管到
2017年1月20日

前端不为人知的一面——前端冷知识集锦

现在很流行的CDN即从专门的服务器加载一些通用的JS和CSS文件,出于安全考虑有的CDN服务器使用HTTPS方式连接,而有的是传统的HTTP,其实我们在使用时可以忽略掉这个,将它从URL中省去。
2017年1月20日

有趣的CSS题目(12):你该知道的字体 font-family

也就是无衬线的意思。专指西文中没有衬线的字体,与汉字字体中的黑体相对应。与衬线字体相反,该类字体通常是机械的和统一线条的,它们往往拥有相同的曲率,笔直的线条,锐利的转角。
2017年1月13日

有趣的CSS题目(11):reset.css 知多少?

这些拥有具体语义化的元素,一旦去掉了它们本身的特性,而又没有赋予它们本身语义化该有的样式(经常没有),导致越来越多人弄不清它们的语义,侧面来说,这也是现在越来越多的页面上
2017年1月12日

小公司的前端可以怎么做?

我们在处理用户表的时候,除了抽象基础用户信息时,有可能还需要一层业务公共层,以我们公司为例,多数用户是医生,所以像职称、所属医院这种信息会经常被用到,这个时候就会出现直接使用这种业务公共表的情况:
2017年1月10日

浅谈 Web 缓存

浏览器缓存是将文件保存在客户端,在同一个会话过程中会检查缓存的副本是否足够新,在后退网页时,访问过的资源可以从浏览器缓存中拿出使用。通过减少服务器处理请求的数量,用户将获得更快的体验
2017年1月9日

<2017> 来自前端的特别祝福

Costas是一位希腊设计师,住在雅典。目前就职于智威汤逊(雅典),也会做一些自由职业者的工作。他擅长桌面出版和Logo设计,也做过网页设计和用户界面设计。以下是他制作的一组前端代码主题创意海报。
2016年12月31日

穿上 GitHub 章鱼猫

先领券再购物:满99减5元,满159减10元,满259减20元,满359减30元。购买方式,请见末尾
2016年12月27日

拿好这段代码,愿你求职路上不再迷茫

爬虫跟文中所提的手工统计、抽样查看方法一样,都是手段,只是更高效一些。文章的重点是利用统计分析的方法来解决“xx与yy,我该如何选择”这类问题。目标思维很重要,黑猫白猫抓到老鼠就是好猫。
2016年12月6日

有趣的CSS题目(10):结构性伪类选择器

[Demo戳我::empty结构性伪类示例(http://codepen.io/Chokcoco/pen/VmvWpG)]
2016年11月30日

有趣的CSS题目(9):巧妙实现 CSS 斜线

Demo戳我:CSS斜线(伪元素+三角形实现)(https://codepen.io/Chokcoco/pen/Mbgaeq)
2016年11月28日

有趣的 CSS 题目(8):纯CSS的导航栏Tab切换方案

Demo戳我:纯CSS导航切换(:target伪类实现)(http://codepen.io/Chokcoco/pen/mAxQBv)
2016年10月31日

月薪最高 30K!15个岗位急招(含前端开发岗位)

作为香港上市名企、中国房企30强——中国奥园地产集团,大力实施跨境电商O2O战略,注册成立了奥园跨境电商集团和奥买家电子商务有限公司,开展跨境电商进口和出口业务。
2016年10月31日

有趣的 CSS 题目(7):消失的边界线问题

到此本文结束,如果还有什么疑问或者建议,可以多多交流,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。
2016年10月21日

有趣的 CSS 题目(6): 全兼容的多列均匀布局问题

中没有说明如何处理连字符,因为不同的语言有不同的连字符规则。规范没有尝试去调和这样一些很可能不完备的规则,而是干脆不提这个问题。
2016年10月19日

有趣的CSS题目(5): 单行居中,两行居左,超过两行省略

text-align:center,居左是默认值也就是text-align:left。如合让两者结合起来达到单行居中,多行居左呢?这就需要多一个标签,假设一开始我们定义如下:
2016年10月18日

有趣的CSS题目(4): 从倒影说起,谈谈 CSS 继承 inherit

到此本文结束,如果还有什么疑问或者建议,可以多多交流,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。
2016年10月17日

有趣的 CSS 题目(3): 层叠顺序与堆栈上下文知多少

到此本文结束,如果还有什么疑问或者建议,可以多多交流,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。
2016年10月16日

有趣的CSS题目(2): 从条纹边框的实现谈盒子模型

background-image:url('http://www.qq1234.org/uploads/allimg/150602/8_150602171754_2.jpg');
2016年10月15日

有趣的 CSS 题目(1): 左边竖条的实现方法

codepen-单标签左边竖条的实现方式(https://codepen.io/Chokcoco/pen/PGkgRX)
2016年10月14日

2016年里做前端是怎样一种体验

答:是的,你应该知道JavaScript最早于1995年提出,而后在1999年第一个正式版本定稿。之后的十数年里JavaScript的发展一直很凌乱,不过经过七个版本之后已经逐步清晰了。
2016年10月12日

React + Redux 渲染性能优化原理

我们优化的方向就是将shouldComponentUpdate中所有的props和state的比较算法复杂度降到最低,而浅层对比(isShallowEqual)就是复杂度最低的对象比较算法:
2016年10月3日

微信小程序开发教程(第2弹)

这里还有个左滑删除名片功能,微信没有提供这个在移动端很实用的功能真的比较遗憾,后面得花点时间自己写下(后续完善)。
2016年9月27日

首个微信小程序开发教程,通宵吐血写的!

本文档将带你一步步创建完成一个微信小程序,并可以在手机上体验该小程序的实际效果。这个小程序的首页将会显示欢迎语以及当前用户的微信头像,点击头像,可以在新开的页面中查看当前小程序的启动日志。
2016年9月23日

移动端开发真机调试神器

'http://localhost:63342/nonghui/extend.html?_ijt=5d9fjooo2tdvvf1uh6tb8qmlma#/index',
2016年9月16日

CSS 函数的 8 个妙用

grids(流体网格划分)很棒,但是有几个严重的问题。例如,无法实现顶部和底部的空隙和左右的空隙大小相同。此外,根据所使用的栅格系统不同,标记有些混乱。即使是
2016年9月15日

怎么找工作,怎么找到工作,怎么找到满意工作?

有些同学是学其他专业的,然后对另一个专业敢兴趣。然后想转行,但是又没有什么实践经历。这里博主可以建议跟之前一样去了解这个行业啊,因为其实很多本专业的同学也不怎么了解本专业,也是个空白。︿( ̄︶ ̄)︿
2016年9月1日

HTTP 协议入门

数据流发送到一半的时候,客户端和服务器都可以发送信号(RST_STREAM帧),取消这个数据流。1.1版取消数据流的唯一方法,就是关闭TCP连接。这就是说,HTTP/2
2016年8月25日
2016年8月24日

移动端样式小技巧

这个方法虽然实现了页面模拟滚动的效果,但是当蒙层弹出的时候设置了overflow:hidden会导致页面scrollTop变成0,页面相当于被滚到顶部了。如果UI或者PM不愿意,请与他们撕逼。
2016年8月17日

Vue.js 60 分钟快速入门

ViewModel是Vue.js的核心,它是一个Vue实例。Vue实例是作用于某一个HTML元素上的,这个元素可以是HTML的body元素,也可以是指定了id的某个元素。
2016年8月15日

从零开始,DIY一个jQuery(1)

中,实例的内部原型(__proto__)总是指向其构造函数的原型(prototype),而经过我们这番修改,JQ实例的构造函数已经变成了
2016年8月9日

工作五年,后面四年重复着第一年的活儿?

本想写成一篇长文,把每个环节可以综合考虑的问题都提出来,不过本文的目的,只是表述一些观点,期望大家在编程的时候,有更多基于团队的思考,针对具体问题提出一些通用的解决方案。比如下面,再提出几个问题:
2016年8月6日

前端工程师面试题汇总

链接:http://markyun.github.io/2015/Front-end-Developer-Questions/
2016年6月29日

PNG格式小图标的CSS任意颜色赋色技术

在Chrome浏览器下,如果一个元素的主体部分,无论以何种方式,只要在页面中不可见,其drop-shadow是不可见的;实体部分哪怕有1像素可见,则drop-shadow完全可见。
2016年6月18日

利用 Service worker 创建一个非常简单的离线页面

在这篇文章里,我打算用此特性检查用户的当前网络连接状况,如果没连接则返回一个超级简单的离线页面。尽管这是一个非常基础的案例,但它能给你带来启发,让你知道启动并运行该特性是多么的简单!如果你没了解过
2016年6月15日

CSS3 filter:drop-shadow滤镜与box-shadow区别应用

我们实现带有箭头指向的浮层面板的时候,考虑到兼容性,三角基本上都是使用border绘制的,没法box-shadow,但是,矩形部分设计师希望是有阴影的,于是,就会出现下图所示的情况:
2016年5月25日

WEB请求处理(2):Nginx请求反向代理

Nginx总共有5大一类模块:core、conf、event、http、mail,和48个二类模块。每个模块有属于自己的配置项,由commands字段决定;每个模块在初始化和退出销毁时均有回调函数。
2016年5月9日

WEB请求处理(1):浏览器请求发起处理

条件请求头部:If-Modified-Since是浏览器向服务器端询问某个资源文件如果自从什么时间修改过,那么重新发给我,这样就保证服务器端资源文件更新时,浏览器再次去请求,而不是使用缓存中的文件。
2016年5月6日

CSS3 3D 行星运转动画 + 浏览器渲染原理

每个页面至少需要一次回流,就是在页面第一次加载的时候。在回流的时候,浏览器会使渲染树中受到影响的部分失效,并重新构造这部分渲染树,完成回流后,浏览器会重新绘制受影响的部分到屏幕中,该过程成为重绘。
2016年4月30日

CSS3进阶:酷炫的3D旋转透视

立方体就完成了。写这篇文章的时候,本来到这里,这一块应该就结束了,但是写到这里的时候,突然突发奇想,既然正方体可以(正六面体),那么正四面体,正八面体甚至球体应该也能做出来吧?
2016年4月27日

H5页面快速搭建之高级字体应用实践

等软件将文字转化为图片再贴到平台上使用。使用成本很高,修改,调试都非常不便,而且图片占用的资源也比较多,为了降低用户的使用成本,基于一站式搭建的理念,我们需要将高级字体的使用透明化,使用户和使用
2016年4月16日

BOOM:一款有趣的Javascript动画效果

块运动的直线距离添加一个正负值恰当的随机数,那么就可以达到有的块炸的比较远,有的块炸的比较近。利用未缩放的小块图片做一下大概的示意图:
2016年4月11日

如何优雅的在 koa 中处理错误

直接处理。这个简直是废话。举个例子:尝试向一个文件中写东西,但是这个文件不存在,那这个时候会报错吧?处理这个错误的方法就是先创建好要写入的文件。如果我们知道怎么处理错误,那直接处理就是。
2016年3月24日

2016年Web前端面试题目汇总

以下是收集一些面试中经常会遇到的经典面试题以及自己面试过程中无法解决的问题,通过对知识的整理以及经验的总结,重新巩固自身的前端基础知识,如有错误或更好的答案,欢迎指正。:)
2016年3月21日

如何在前端圈扩大知名度?

开始招募专栏作者啦!我们愿意为优秀技术作者搭台,帮扩大知名度的同时,还带去赞赏收入和发现更多合作机会。
2016年3月16日

学干货拿高薪、顺带解决终身大事,就在这 19 个热门公众号

个公众号,可以帮您学干货、拿高薪、顺带还可能解决终身大事!那真是,喜迎新春无所惧,笑对姑姨关切情。哪里需要关注哪里,so
2016年2月17日

Service Worker初体验

navigator.serviceWorker.register('service-worker.js').then(function(registration)
2016年1月15日

使用高阶函数实现类的扩展设计

一个非常简单的案例即日志的记录。通常框架自身并不会有业务相关的日志记录的功能,而业务代码也不希望混入并非业务逻辑的日志记录部分。那么使用一个扩展,在合适的点进行日志的收集和存储是很合适的设计。
2016年1月7日

Vitural Dom & diff算法 (一) 伪代码实现

源码大概是最幸福的事情,因为在社区里有数之不尽的高手都会给出自己很独到的见解,即使有不懂的地方也会能找到前人努力挖掘的痕迹。我反问自己,然后即使在这样优越的环境下,还不去读源码,是不是就太懒了。
2016年1月3日

Chrome 控制台新玩法-console显示图片以及为文字加样式

300px;line-height:120px;background:url('http://wayouliu.duapp.com/img/tagsImg/youth.gif')
2015年9月27日

调试时屏蔽 JS 库代码:Chrome DevTools Blackbox 功能介绍

代码难免会有Bug,每次我们在Chrome调试代码时,总是会进入各种各样的库代码(比如jQuery、Zepto),但实际上很多时候我们并不希望这样,要是能把这些库代码“拉黑”多好啊。
2015年8月26日