1

为什么我想将prototype.js 与scriptaculous.js 一起使用?主要原因是什么?我什么时候需要这两个库,什么时候不需要?

4

4 回答 4

7

我已经使用原型很长一段时间了,并且对它很有脚本;我现在在一些项目上使用 jQuery,在其他项目上使用 Mootools,在其他项目上使用原型......

为什么我使用 JS 框架?
嗯,三个主要原因:

  • 他们提供了很多我不想自己重新开发的东西
  • 它们经过充分测试;不仅仅是我自己的代码
  • 它们提供了一层跨浏览器兼容性(我更喜欢有一个框架来处理这个问题,而不是自己打这场战争!)

至于你应该使用哪个 JS 框架,那是另一个问题 - 这完全取决于你 ^^


当包含prototype.js 和/或scriptaculous.js 时:

  • prototype.js :在任何需要一些 JS 内容的页面上(通常是大多数页面)
  • scriptaculous.js:至少在需要拖放、自动完成等效果的页面上......

其他 JS 框架也一样,顺便说一句...

于 2009-08-07T06:47:10.467 回答
6

Scriptaculous 在内部使用 Prototype。如果您使用 Scriptaculous,则需要 Prototype。

于 2009-08-07T06:45:30.143 回答
1

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,因为它调用原型库中可用的方法。

于 2009-08-07T06:43:40.927 回答
1

Scriptaculous使用Prototype,因此如果您在页面上使用任何 Scriptaculous 效果,则需要包含它。

如果您看不到 Scriptaculous 的任何明显用途,则可能您使用 Prototype 获得了其他 javascript,它提供了一种用于编写简洁有效的代码的跨平台实用程序层。一种快速的检查方法是查找 javascript,包括对 $() 的调用

于 2009-08-07T06:44:14.170 回答