今天在码云遇到一个很有意思的人 for Per.js
今天在码云遇到一个很有意思的人,他在我的Per.js项目下面评论了一句,大意为“你试试这句代码,看看速度到底是你快还是Vue快”【当然,这个评论被我手残不小心删掉了...】。
然后我就试了,结果发现:WDF?
代码:
var arr = [];
for(var i=0;i<=20000;i++){
arr[arr.length] = i;
}
console.time("Vue.js");
var c = new Vue({
el: "#ul1",
data: {
object: []
}
});
c.object = arr;
console.timeEnd("Vue.js");
arr[arr.length] = "";
console.time("Per.js");
var a = Per("#ul2");
a.do({
for: arr
});
console.timeEnd("Per.js");
ok,这我就不服了,于是我又写了一段代码:
var arr = [];
for(var i=0;i<=20000;i++){
arr[arr.length] = i;
}
console.time("time");
var html = "";
for(var a=0;a<arr.length;a++){
html+="<li>"+arr[a]+"</li>";
}
document.querySelector("#ul2").innerHTML = html;
console.timeEnd("time");
看,这就是最最普通的遍历数组的JS代码,现在我们来运行一下:
好,现在结果出来了,就连最最普通的遍历数组的JS代码都需要58ms,那么Vue又是怎么做到只需要24ms的呢?
现在我们继续往下推理。
普遍的初、中级开发者都会认为,js代码是阻塞式的,但是结果并非如此。
接下来我们再来做一个实验。
我们把之前的代码都删掉,写上这段代码:
var arr = [];
for(var i=0;i<=20000;i++){
arr[arr.length] = i;
}
console.time("Vue.js");
var c = new Vue({
el: "#ul1",
data: {
object: []
}
});
c.object = arr;
console.timeEnd("Vue.js");
alert(document.querySelector("#ul1").innerHTML);
这段代码的意思是说,我们在vue运行完毕之后,获取一下Vue设置的ul里的innerHTML值,看看是什么。
结果输出:
好了,那么现在大家发现Vue输出的居然是空白了吧。
那么我们接下来这么做,写上这段代码:
var arr = [];
for(var i=0;i<=20000;i++){
arr[arr.length] = i;
}
arr[arr.length] = "";
console.time("Per.js");
var a = Per("#ul2");
a.do({
for: arr
});
console.timeEnd("Per.js");
alert(document.querySelector("#ul2").innerHTML);
这段代码的意思是说,我们在per.js运行完毕之后,获取一下Per.js设置的ul里的innerHTML值,看看是什么。
结果输出:
好的,现在只要稍微有点智商的开发者都能看出来差别是什么了吧?
但是你可能还会疑惑,Vue是如何实现这一切的?
很简单,我们只需要这么写:
var arr = [];
for(var i=0;i<=20000;i++){
arr[arr.length] = i;
}
arr[arr.length] = "";
console.time("Per.js");
setTimeout("var a = Per('#ul2');a.do({for: arr});");
console.timeEnd("Per.js");
那么现在让我们运行一下,看看运行时间是多少。
只有0.06ms,对吧?
你看着很快,但实际上,它在真实世界的执行速度还是没有变慢。
这就是为什么Vue响应式会比Per.js快这么多的原因。
顺便推荐一下Per.js:
Per.js - 快速、简便的响应式JavaScript开发框架
Per.js是一个开源的渐进式+响应式的大型JavaScript开发框架,他拥有一系列简便的DOM操作函数,例如Vue的模板渲染、双向绑定等等。
同时他的执行速度还是Vue的7~8倍。
尽管他的DOM操作已经如此方便,但是他不只可以作用于DOM操作上。您还可以使用他的Ajax、Component(组件)等等操作。
-
他可以有效的帮助你减少需要编写的代码量
-
他完全是开源可扩展的
-
他的执行速度几乎是Vue.js的8~7倍
-
他对于JavaScript新手极其友好,文档极其易学
他类似Safe.js和Vue.js,但功能比Safe.js更强大,速度比Vue.js更快
欢迎使用Per.js!
【同时也欢迎查看Per和Vue的速度对比,链接:https://gitee.com/skyogo/Per.js/blob/master/速度对比VueJS.md】
【如果你不知道为何要使用Per.js,他解决了什么问题,那么就请参考这篇文章:https://my.oschina.net/u/3754126/blog/2051925】

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
还在用 Git 的 -f 参数强推仓库,你这是在作死!
最近,美国一个程序员因为同事不写注释,代码不规范,最严重的是天天使用 git push -f 参数强行覆盖仓库,该程序员忍无可忍向四名同事开抢,其中一人情况危急!!!(此信息后来证实枪击事件的确发生,但并非代码原因,但从另外的角度也可看出强推代码所引发的后果让人非常愤怒) 不写注释、代码不规范是一个非常普遍的问题,其严重性还不足以导致枪击事件发生,毕竟算是个人行为,不会对别人的工作产生大的破坏作用。但是 git push -f 的仓库强推参数,则直接导致别人辛辛苦苦编写的代码付之一炬。这种被删代码的愤怒之心想必有过此遭遇的人都深有体会。 但是我们在谴责这种强行推送仓库的行为之时也应该注意到,有挺大一部分开发人员对 -f 参数所产生的破坏并不知晓,另外也可能可能存在一些无心的误操作。而我们宁愿相信绝大多数人并不会恶意强行覆盖同事的仓库,他们只是在遇到代码冲突时无所适从,再加上网上一些文章的误导,只要能解决推送,就不顾及任何后果。 由于很多用户跟我们反馈各种因为强推导致仓库被重置、代码被删除、提交记录消失等问题,甚至还有用户直接甩锅给平台,认为是平台的故障导致他们仓库出现问题,这让我们意识...
-
下一篇
白话SpringCloud | 第五章:服务容错保护(Hystrix)
前言 前一章节,我们知道了如何利用RestTemplate+Ribbon和Feign的方式进行服务的调用。在微服务架构中,一个服务可能会调用很多的其他微服务应用,虽然做了多集群部署,但可能还会存在诸如网络原因或者服务提供者自身处理的原因,或多或少都会出现请求失败或者请求延迟问题,若服务提供者长期未对请求做出回应,服务消费者又不断的请求下,可能就会造成服务提供者服务崩溃,进而服务消费者也一起跟着不可用,严重的时候就发生了系统雪崩了。鉴于此,产生了断路器等一系列的服务保护机制。本章节,就来说下如何利用Hystrix进行容错处理。 一点知识 按照此系列的惯例,我们先来了解下一些相关的知识。 注:以下部分内容转至大佬纯洁的微笑:熔断器Hystrix。 容错处理手段 容错处理是指软件运行时,能对由非正常因素引起的运行错误给出适当的处理或信息提示,使软件运行正常结束——百度百科 从百度百科的解释中可以看出,简单理解,所谓的容错处理其实就是捕获异常了,不让异常影响系统的正常运行,正如java中的try catch一样。 而在微服务调用中,自身异常可自行处理外,对于依赖的服务若发生错误,或者调用异常,...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2整合Redis,开启缓存,提高访问速度
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Dcoker安装(在线仓库),最新的服务器搭配容器使用