新人求解,如何编写更加高性能的 Javascript 代码?

2016-07-06 17:25:01 +08:00
 DoraJDJ

今天闲得无聊想弄 AJAX ,然后一下午的时间就弄出了这个玩意:

https://gist.github.com/DoraJDJ/4ef581e202f5dcf4dd5245500d8aebdc

功能也很简单,就是利用 jQuery 和 AJAX ,从我在本机上开的一个 API 服务器里获取数据,然后将信息整理成 HTML 写进去。

虽然我在本机里运行速度较快(排除服务端因素),但我还是觉得代码有点乱,比如下面这个处理日期时间的部分:

var dateStr = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + ' ' + date.getHours() + ':' + date.getMinutes();

虽然处理日期可以用 Moment.js 完成,但是我不怎么喜欢在前端里使用过于多的 JS 库,所以在这部分我写的过于长而复杂,感觉会影响一定的性能(?)。

我想在此请教一下,这个代码需不需要做一些优化或修正,以及写 JS 代码的一些技巧?

4120 次点击
所在节点    JavaScript
31 条回复
xiaoxiuaoliang
2016-07-06 22:48:22 +08:00
推荐'高性能 javascript'一书 感觉很赞
murmur
2016-07-06 22:53:37 +08:00
另外给楼主一个建议,如果是针对传统企业开发或者要求比较高的互联网页面( IE8 兼容性甚至 IE6 的),上手阶段能用库尽量别自己写,你面对的可是 IE 、 chrome 、 ff 、 safari 至少四个浏览器,还不算 360 安全浏览器这种非标准浏览器的,你不知道一路上会遇到多少坑,老板也不会给你时间填坑因为大把库可以用
如果你的东西只要 chrome 能跑就够了,你完全可以一开始就自己写功能函数
sagnitude
2016-07-06 23:02:57 +08:00
lz ,你贴的这一句里面, getYear(), getMonth()这些方法都是 native 代码,不用担心性能
mumuy
2016-07-06 23:07:45 +08:00
date.toLocaleString().replace(/\//g,'-').replace(/[^\d\s:\-]/g,'');
比你的短
DoraJDJ
2016-07-06 23:11:10 +08:00
@mumuy 哈哈,看上去确实缩短了很多
不过又感觉有点不对
目标:`2009-10-17 16:37`
实际:`2009-10-17 4:37:00`
mumuy
2016-07-06 23:15:06 +08:00
@DoraJDJ 哦哦,好像它是 12 小时进制的
DoraJDJ
2016-07-06 23:23:48 +08:00
@mumuy 自己在 MDN 上找到解决方法了:
`date.toLocaleString('chinese', {hour12: false}).replace(/\//g,'-').replace(/[^\d\s:\-]/g,'');`
mumuy
2016-07-06 23:26:23 +08:00
@DoraJDJ (new Date(Date.now()+2.88e7)).toJSON().replace(/^([\d\-]+)T([\d:]+)\..+$/,'$1 $2');
mumuy
2016-07-06 23:31:35 +08:00
@DoraJDJ (new Date(Date.now()+8*3.6e6)).toJSON().replace('T',' ').replace(/\..+/g,'');
mumuy
2016-07-06 23:32:43 +08:00
(new Date(Date.now()+2.88e7)).toJSON().replace('T',' ').replace(/\..+/g,'');
yxzblue
2016-07-07 08:08:28 +08:00
原生 js

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/290685

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX