我一直在思考jQuery在Javascript代码中的实现方式。 jQuery和Prototype等库默认绑定到别名;对于这些示例,他们使用美元符号$
。 (适当地,下划线使用下划线字符_
。)
我理解这是如何运作的。我也明白许多库提供了noConflict模式。
我的问题是,为什么这些库默认使用别名?
从我所看到的,像这样的别名似乎只是让程序员在调用一个函数时键入较少的字符,这看起来微不足道。 (老实说 - 我有点偏颇,因为我没有输入长变量名称的问题。)我认为这可能是为了文件化目的,但随着minifiers的扩散,它似乎是一个有争议的点(以及一种过早优化的形式)。
另一方面,别名似乎是cause a lot of confusion for people using these libraries。
现在,我并没有真正反对使用别名 - 我只是想知道为什么它是这些库的默认选项。目前,为了避免别名,我们明确地必须声明我们不想使用它。对于库调用使用别名,我是否缺少特定的好处?我能够轻易想到的唯一优势是,如果你以某种方式编写跨库代码 - 交换库,你只需交换别名。但我认为我从未见过这样做过。
任何人都知道这背后的原因吗?我是一个人,真的喜欢知道。
答案 0 :(得分:1)
“从我所看到的,像这样的别名似乎只是让程序员在调用函数时键入较少的字符,这似乎微不足道。”
这也是设计VB的人所想到的。 “这是什么
for (int i=0; i<10;i+=2){
}
东西!出了什么问题:
For i as Integer = 0 To 10 Step 2
Next i
所以我节省了13次击键!那是微不足道的。“
当这是我们所做的一切时, 是微不足道的。天。很长。
使用jQuery Cycle插件:http://malsup.github.com/jquery.cycle.all.js。它有 400 $的实例。如果你使用jQuery而不是$,那将是一个额外的 2000 键击。这就是IDE现在执行parens等自动完成等的原因。
答案 1 :(得分:0)
一起使用jQuery和Prototype并不是一个好主意。理想情况下,该网站必须只有一个javascript框架,并且有很多调用它。所以最好的(默认)选择是为它的主要功能使用速记别名。
无论如何,如果您需要在同一页面上同时使用多个库/框架,并且希望避免冲突,可以使用noConflict模式。