scriptaculous.jsでprototype.jsを使用したいのはなぜですか?主な理由は何ですか?いつ両方のライブラリが必要になり、いつ必要になりませんか?
4 に答える
私はかなり長い間プロトタイプを使用してきましたが、それを使ってスクリプトを作成しました。私は現在、いくつかのプロジェクトでjQueryを使用し、他のプロジェクトでMootoolsを使用し、他のプロジェクトでプロトタイプを使用しています...
なぜJSフレームワークを使用するのですか?
さて、3つの主な理由:
- 彼らは私が自分で再開発したくないものをたくさん提供します
- それらは十分にテストされています; 私自身のコードよりも
- それらは、ブラウザー間の互換性のレイヤーを提供します(そして、私は、この戦争を自分で戦わなければならないのではなく、それを処理するフレームワークを持つことを好みます!)
どのJSフレームワークを使用すべきかについては、それは別の質問です-それは完全にあなた次第です^^
protocol.jsおよび/またはscriptaculous.jsを含める場合:
- protocol.js:JSのものを必要とするすべてのページ(一般的にほとんどのページ)
- scriptaculous.js:少なくともドラッグアンドドロップ、オートコンプリートなどの効果を必要とするページでは...
他のJSフレームワークでも同じです、ところで...
ScriptaculousはPrototypeを内部で使用します。Scriptaculousを使用する場合は、Prototypeが必要です。
scriptaculous.jsファイルは、document.write呼び出しを使用する残りのスクリプトを含むヘルパーファイルです。
scriptaculous.jsファイルに記述されたコードからわかるように、require
関数を呼び出すことにより、ビルダー、エフェクトなどのライブラリが含まれます。
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を探すことです。