前言
本文介绍针对轩枫阁V3主题开发过程中,遇到的图片问题及加载优化。
图片居中裁剪
本站的每一篇文章,都会配一张570×200的特色图像,使文章不那么单调。
然而移动端移动端首页图片为60×60的正方形配图,这里有两种解决方案。 查看全文
本文介绍针对轩枫阁V3主题开发过程中,遇到的图片问题及加载优化。
本站的每一篇文章,都会配一张570×200的特色图像,使文章不那么单调。
然而移动端移动端首页图片为60×60的正方形配图,这里有两种解决方案。 查看全文
对于Javascript来说,提高网络下载的性能最直接的方法就是把JS文件体积减小。
>>>留意亮点
为了方便理解和对比,本文会给出压缩前后代码作为参考,但压缩后的代码仍会换行,变量名字不做混淆处理,同时一个压缩规则的例子会尽量不混其它压缩策略进去。
将可预先计算的表达式替换成其计算结果,同时要比较原来表达式以及生成后的结果的大小,保留小的。 查看全文
代码中嵌套的if/else结构往往导致代码不美观,也不易于理解。面向过程的开发中代码有大量的if else,在java中可以用一些设计模式替换掉这些逻辑,那么在js中是否也有类似的方法用来尽可能减少代码中的if/else嵌套呢?
有人认为:if else多就多呗,只要可读性强,维护起来方便。jQuery.fn.init里就是一堆if else判断,难道要质疑jQuery作者的水平了?
并不是说if else多就不好,关键是看用的地方,jQuery.fn.init里除了if else判断简洁点,难道要改成switch?就算用工厂模式,还不是得做大量的if判断。
代码整洁强迫症患者必须要来个抛砖引玉:
在做时间转换的时候,发现用“2016-04-12”转出来的时间戳是 2016-04-12 08:00的时间点,而不是0点。
1 2 3 4 5 |
new Date('2016-04-12').getTime(); // 1460419200000 new Date(1460419200000); // Tue Apr 12 2016 08:00:00 GMT+0800 |
最后发现,如果将日期格式换成“2016/04/12”,则正常换算成0点。
1 2 |
new Date(new Date('2016/04/12').getTime()); // Tue Apr 12 2016 00:00:00 GMT+0800 |
具体原因参见以下介绍 查看全文
随机数是统计学领域的一个重要概念,对于游戏来说同样意义非凡,用好随机数,可以使你的游戏更真实、更人性、富有魅力。
举例子来说:一个打靶游戏,子弹每次都命中准心所示位置是不科学的,加上抖动误差,会使真实感更加强烈;再如,抽奖大转盘程序,每当转盘停止转动时,指针恰好都指向奖品图片的正中点,人们会觉得这个转盘很不自然,指向一个随机位置效果要好得多。
学过 JavaScript 的人都知道,使用随机数很简单,只要一个 Math.random()
就可以获得一个大于等于 0 小于 1 的浮点数。从一个集合中随机选择对象时,使用浮点数离散化后的结果作为选择集的索引:
1 2 3 |
var objects = [...]; var randomIndex = Math.floor( objects.length * Math.random() ); var object = objects[ randomIndex ]; |
前面代码中 Math.random()
和 randomIndex
的取值,在「概率分布」理论中属于「连续型分布」和「离散型分布」,分布用来描述随机变量的概率性质。其中,不论是连续型还是离散型,均匀分布都是最最常用的分布类型(没有之一)。在大转盘的例子中,决定转盘「停在哪个奖品上」和「停到该奖品的哪个位置」,都可以采用均匀分布。
均匀分布的特点是:所有基本事件的可能性相等,以下是 100 万次 Math.random()
实验的取值发生次数直方图:
可以看出,即便是伪随机数,它的分布仍然是均匀到无可挑剔,如果样本数足够大,上面直方图将呈现出一条直线。
再考虑一下打靶游戏的例子,假设对命中准心所示位置做了「均匀分布」的抖动误差,来看看 2000 次实验之后的样子: