
1.4 高效率的开发
开发效率的高低取决于两大因素,一是自身,二是外在。自身因素包括开发者的逻辑思维能力、对开发语言和工具的熟悉程度。外在因素通常包括工具的灵活度、代码复用率、语法复杂度等。
1.4.1 熟悉语法
JavaScript的语法非常灵活多变,所以很多工作数年的JavaScript同行常常使用的也只是其中一部分语法技巧。读者不要因为JavaScript上手简单而忽略它原本的语法体系,只有熟悉了语法才能在大型项目中游刃有余或是推陈出新。
市面上有很多语法书籍,本书只对语法进行简单概括以供参考查阅。JavaScript语法基本要素:
● 区分大小写。
● 变量不区分类型。
● 每条语句结尾可以省略分号。
● 注释与C、C++、Java、PHP相同。
● 代码段要封闭。
JavaScript数据类型有字符串、数字、布尔值、数组、对象、Null、undefined、NaN。JavaScript中的所有事物都是对象,包括字符串、数值、数组、函数等,由数据类型确定JavaScript内置的几大对象就是String、Number、Boolean、Array、Object,除此之外还提供了正则表达式对象RegExp、日期对象Date、函数对象Function、静态数学对象Math。
注意:
● Null和undefined没有对应的内置对象,只在赋值和对比时使用。
● 除了Math对象,其他内置对象都可以用new关键字调用。
● 常见的window对象和document对象不是JavaScript内置对象,而由浏览器BOM和DOM提供,在Node.js等非浏览器环境下是无法调用的。
● 单双引号都可以用来定义字符串对象,见【范例1-3】。
● 数字对象接受十进制数;接受以0开头的八进制数,如023420;以0x开头的十六进制数,如0x2710;还接受科学计数,如1e4,见【范例1-3】。
● NaN是Not a Number的缩写,主要用于处理计算中出现的错误情况。
● Boolean对象初始化值为0、-0、null、""、false、undefined、NaN时,对象值就是false,反之则为true。
● []可表示创建一个新数组对象Array,见【范例1-3】。
● {}可表示创建一个新对象Object,见【范例1-3】。
● 对象通过中括号运算符能够创建任意名称的对象成员,见【范例1-3】。
【范例1-3 JavaScript常见语法技巧】
1. '<span class="z3f"></span>' == "<span class=\"z3f\"></span>" //等于true 2. 023420 === 0x2710; //八进制和十六进制,等于true 3. 023420 === 10000; //八进制和十进制,等于true 4. 023420 === 1e4; //八进制和科学计数,等于true 5. var myArray = [] 6. var myObject = {} 7. var myFunction = function(){}; //创建函数 8. myFunction.3f = 1; //会报错 9. myObject[myFunction] = 1; //对象成员名称是一个匿名函数 10. "10.567890"|0 === 10 //取整同时转成数值型 11. +new Date() === new Date().getTime() //日期转数值 12. Math.random().toString(16).substring(2); //14 位字符长度的漂亮随机码 13. Math.random().toString(36).substring(2); //11 位字符长度的漂亮随机码 14. myArray = [1,2,3] 15. Array.prototype.push.apply(myArray, [4,5,6]); //合并数组后,myArray===[1,2,3,4,5,6] 16. var a=1, b=2; 17. a= [b, b=a][0]; //a, b 交换数值使a=2, b=1
更多语法技巧有待读者自己去探索和发现,笔者只是抛砖引玉。
1.4.2 自动完成
语法自动完成功能,相信读者在使用各种IDE工具时都有所感受,在这里要顺便提示的是,前面介绍的很多JavaScript开发IDE都有代码片段自动完成功能,它能一下子完成一大段代码的输入工作。以EditPlus为例,在菜单栏单击“工具(T)”→“首选项(P)”可打开如图1-15所示的对话框。

图1-15 EditPlus首选项对话框
在EditPlus安装目录下可以看到acp结尾的文件,它就是自动完成规则文件。acp文件有4个规则:
● 以#TITLE开头的表示声明,如#TITLE=XHTML就表示是HTML/XHTML的自动完成文件,同理也可以自定义html等文件的自动完成。
● 以#T开头的表示简写,后面紧跟所表示的全部代码。
● 分号(; )代表注释。
● ^!表示指针位置。
【范例1-4】是一小段XHTML的自动完成示例。
【范例1-4 EditPlus自动完成acp文件规则片段】
1. #TITLE=XHTML 2. ; EditPlus Auto-completion File v1.0 written by ES-Computing. 3. ; This file is intended to be used by HTML Toolbar of EditPlus. 4. ; <WARNING> 5. ; This file is required for EditPlus to run correctly. 6. ; You can modify only the content of each entry. 7. ; Do not add/remove any entry. 8. ; Do not modify title of each entry. 9. #CASE=y 10. #T=B 11. <b>^! </b> 12. #T=I 13. <i>^! </i> 14. #T=U 15. <u>^! </u> 16. #T=H1 17. <h1>^! </h1> 18. ;中间省略部分 19. #T=H6 20. <h6>^! </h6> 21. #T=A 22. <a href="">^! </a> 23. #T=IMG 24. <img src="" width="" height="" alt="^! " />
设置好后,可能需要重启EditPlus。新建一个html或xhtml文档,在文件中输入IMG,软件就自动转换为<img src="" width="" height="" alt=""/>。这绝对是提高效率的最佳方式,一次定义多次使用。
限于篇幅,无法一一列举所有软件的自动完成功能,读者可上网搜寻。
1.4.3 使用成熟框架和便捷工具
很多成熟框架(如jQuery和Ext等)都有悠久的历史,代码久经千万网站考验,也符合绝大多数项目需求和开发人员的习惯,对这些框架的使用是提高开发效率的有效手段。
本书第17章将详细介绍jQuery,其他常见的框架还有Ext、Prototype、Yahoo UI、Mootools、Dojo、MochiKit、Zepto、Rialto、Spry等。在这里先给出几个框架的相关链接:
● http://jquery.com——大名鼎鼎的jQuery。
● https://www.sencha.com/products/extjs/——Ext官网
利器在手,编程不愁,笔者特收集了一些有用的工具供读者平时使用:
● 正则工具——http://refiddle.com/。
● 正则表达式库——http://regexlib.com。
● 在线调试(非IE可用)——http://jsfiddle.net/。
● css、js兼容性支持查询——http://caniuse.com。
● CSS3的loading——https://icons8.com/cssload/。
● 常用Web图标——https://pfefferle.github.io/openwebicons/。
● 检查网站配色是否正确的工具——http://www.checkmycolours.com/。