为什么我想将prototype.js 与scriptaculous.js 一起使用?主要原因是什么?我什么时候需要这两个库,什么时候不需要?
4 回答
我已经使用原型很长一段时间了,并且对它很有脚本;我现在在一些项目上使用 jQuery,在其他项目上使用 Mootools,在其他项目上使用原型......
为什么我使用 JS 框架?
嗯,三个主要原因:
- 他们提供了很多我不想自己重新开发的东西
- 它们经过充分测试;不仅仅是我自己的代码
- 它们提供了一层跨浏览器兼容性(我更喜欢有一个框架来处理这个问题,而不是自己打这场战争!)
至于你应该使用哪个 JS 框架,那是另一个问题 - 这完全取决于你 ^^
当包含prototype.js 和/或scriptaculous.js 时:
- prototype.js :在任何需要一些 JS 内容的页面上(通常是大多数页面)
- scriptaculous.js:至少在需要拖放、自动完成等效果的页面上......
其他 JS 框架也一样,顺便说一句...
Scriptaculous 在内部使用 Prototype。如果您使用 Scriptaculous,则需要 Prototype。
scriptaculous.js 文件是一个帮助文件,其中包含使用 document.write 调用的剩余脚本。
从scriptaculous.js文件中编写的代码可以看出,通过调用该require
函数,它包含了builder、effects等库。
var Scriptaculous = {
Version: '1.8.2',
require: function(libraryName) {
// inserting via DOM fails in Safari 2.0, so brute force approach
document.write('<script type="text/javascript" src="'+libraryName+'"><\/script>');
},
REQUIRED_PROTOTYPE: '1.6.0.3',
load: function() {
function convertVersionString(versionString) {
var v = versionString.replace(/_.*|\./g, '');
v = parseInt(v + '0'.times(4-v.length));
return versionString.indexOf('_') > -1 ? v-1 : v;
}
if((typeof Prototype=='undefined') ||
(typeof Element == 'undefined') ||
(typeof Element.Methods=='undefined') ||
(convertVersionString(Prototype.Version) <
convertVersionString(Scriptaculous.REQUIRED_PROTOTYPE)))
throw("script.aculo.us requires the Prototype JavaScript framework >= " +
Scriptaculous.REQUIRED_PROTOTYPE);
var js = /scriptaculous\.js(\?.*)?$/ig;
$$('head script[src]').findAll(function(s) {
return s.src.match(js);
}).each(function(s) {
var path = s.src.replace(js, ''),
includes = s.src.match(/\?.*load=([a-z,]*)/);
(includes ? includes[1] : 'builder,effects,drag-drop,controls,slider,sound').split(',').each(
function(include) { Scriptaculous.require(path+include+'.js') });
});
}
};
Scriptaculous.load();
而且,我们包含原型库是因为 scriptaculous 是一种基于原型库的附加组件。你不能在没有原型的情况下使用 scriptaculous,因为它调用原型库中可用的方法。
Scriptaculous使用Prototype,因此如果您在页面上使用任何 Scriptaculous 效果,则需要包含它。
如果您看不到 Scriptaculous 的任何明显用途,则可能您使用 Prototype 获得了其他 javascript,它提供了一种用于编写简洁有效的代码的跨平台实用程序层。一种快速的检查方法是查找 javascript,包括对 $() 的调用