前言
本文档为网酷前端规范系列,主要介绍前端性能优化点
一、HTTP优化
1. 减少HTTP请求
- 合并文件,例如css代码和js代码分别合并到一个css文件和js文件中;
- 使用css sprite,详细请参考css优化中的css sprite部分。
- 使用base64技术
2. 重定向优化
- 消除没必要的跳转
- 利用服务器重写用户键入的链接
- 使用HTTP而不是js或者meta来重定向
JS在处理时间格式方面不够灵活,最初想到用字符串拼接来解决,通过getFullYear()、getMonth()、getDate()获取再拼接相应的格式,表现的十分不灵活。下面的函数能够快速方便的将时间格式化,代码实现也极为巧妙。最后提供了获取最近日期始终时间的函数。
1 2 3 4 5 6 7 8 9 |
var d = new Date().format('yyyy-MM-dd'); d = "2014-11-08" var d = new Date().format('yyyy年MM月dd日'); d = "2014年11月08日" var zone = getRecentMonth(7) zone.start = "2014-11-01" zone.end = "2014-11-08" |
链接:https://gist.github.com/xuanfeng/43d7abdaf9c4cbff1ebd 查看全文
本文档为网酷前端JS规范,可根据需求进行改变
为提高团队协作效率,便于前端后期优化维护,输出高质量的文档。
Javascript语言的设计不够严谨,很多地方一不小心就会出错。
举例来说,请考虑以下情况。
现在,我们要判断一个全局对象myObj是否存在,如果不存在,就对它进行声明。用自然语言描述的算法如下:
1 2 3 |
if (myObj不存在){ 声明myObj; } |
你可能会觉得,写出这段代码很容易。但是实际上,它涉及的语法问题,远比我们想象的复杂。Juriy Zaytsev指出,判断一个Javascript对象是否存在,有超过50种写法。只有对Javascript语言的实现细节非常清楚,才可能分得清它们的区别。
根据直觉,你可能觉得可以这样写:
1 2 3 |
if (!myObj) { myObj = { }; } |
但是,运行这段代码,浏览器会直接抛出ReferenceError错误,导致运行中断。请问错在哪里? 查看全文
前段时间的项目有用到NodeJs,而比较主流的模版引擎当属Ejs与Jade,该如何选择呢?各自又有什么优缺点?
EJS 结构更像原生 HTML,而 Jade 更简洁。你使用其中之一,是出于什么原因呢?看一看知乎上大家的讨论。
Jade有两点是超出传统模板技术的。
第一、简洁。
注意,简洁并非单指更少的符号,而是看是否能match你的需要。Jade强制的缩进格式能凸显html的结构,而对于前端来说,最重要的任务恰恰是处理结构,而不像一般的html author那样是处理内容。反过来说,假如你的主要任务是处理内容,比如写作blog之类的,那你应该用wiki或者markdown之类的,而不应该用Jade。 查看全文