पहले पदों मैं की एक प्रतिलिपि बनाई से प्रेरित होकर Rakefile और विक्रेता निर्देशिका के साथ वितरित WysiHat (एक आरटीई बदलाव का उल्लेख) और कोड की जाँच के साथ शामिल करने के लिए कुछ सुधार किए हैं JSLint और साथ minification YUI कंप्रेसर ।
यह विचार है कि Sprockets का उपयोग (WysiHat से) एक ही फाइल में कई JavaScripts को मर्ज करने के लिए, JSLint के साथ मर्ज किए गए फ़ाइल के सिंटैक्स की जाँच करें और वितरण से पहले YUI कंप्रेसर के साथ इसे छोटा करें।
आवश्यक शर्तें
- जावा रनटाइम
- माणिक और रेक रत्न
- आपको पता होना चाहिए कि क्लासपैथ में जार को कैसे रखा जाए
अब करते हैं
- राइनो डाउनलोड करें और अपने वर्गपथ पर JAR ("js.jar") डालें
- YUI कंप्रेसर डाउनलोड करें और अपने वर्गपथ में JAR (बिल्ड / युकोमप्रेसर-एक्सज़ेज़) डालें
- WysiHat डाउनलोड करें और "विक्रेता" निर्देशिका को अपने जावास्क्रिप्ट प्रोजेक्ट के रूट पर कॉपी करें
- राइनो के लिए JSLint डाउनलोड करें और इसे "विक्रेता" निर्देशिका के अंदर रखें
अब जावास्क्रिप्ट प्रोजेक्ट के रूट डायरेक्टरी में "Rakefile" नामक एक फाइल बनाएं और उसमें निम्न सामग्री जोड़ें:
require 'rake'
ROOT = File.expand_path(File.dirname(__FILE__))
OUTPUT_MERGED = "final.js"
OUTPUT_MINIFIED = "final.min.js"
task :default => :check
desc "Merges the JavaScript sources."
task :merge do
require File.join(ROOT, "vendor", "sprockets")
environment = Sprockets::Environment.new(".")
preprocessor = Sprockets::Preprocessor.new(environment)
%w(main.js).each do |filename|
pathname = environment.find(filename)
preprocessor.require(pathname.source_file)
end
output = preprocessor.output_file
File.open(File.join(ROOT, OUTPUT_MERGED), 'w') { |f| f.write(output) }
end
desc "Check the JavaScript source with JSLint."
task :check => [:merge] do
jslint_path = File.join(ROOT, "vendor", "jslint.js")
sh 'java', 'org.mozilla.javascript.tools.shell.Main',
jslint_path, OUTPUT_MERGED
end
desc "Minifies the JavaScript source."
task :minify => [:merge] do
sh 'java', 'com.yahoo.platform.yui.compressor.Bootstrap', '-v',
OUTPUT_MERGED, '-o', OUTPUT_MINIFIED
end
यदि आपने सब कुछ सही ढंग से किया है, तो आपको अपने कंसोल में निम्नलिखित कमांड का उपयोग करने में सक्षम होना चाहिए:
rake merge
- विभिन्न जावास्क्रिप्ट फ़ाइलों को एक में मिलाने के लिए
rake check
- अपने कोड के सिंटैक्स की जांच करने के लिए (यह डिफ़ॉल्ट कार्य है, इसलिए आप बस टाइप कर सकते हैं rake
)
rake minify
- अपने जेएस कोड का छोटा संस्करण तैयार करने के लिए
स्रोत विलय पर
Sprockets का उपयोग करते हुए, जावास्क्रिप्ट प्री-प्रोसेसर आप require
अन्य जावास्क्रिप्ट फ़ाइलों को शामिल (या ) कर सकते हैं । प्रारंभिक फ़ाइल से अन्य स्क्रिप्ट शामिल करने के लिए निम्न सिंटैक्स का उपयोग करें ("main.js" नाम दिया गया है, लेकिन आप इसे Rakefile में बदल सकते हैं):
(function() {
//= require "subdir/jsfile.js"
//= require "anotherfile.js"
// some code that depends on included files
// note that all included files can be in the same private scope
})();
और तब...
स्वचालित इकाई परीक्षण को सेट करने के लिए WysiHat के साथ प्रदान की गई Rakefile पर एक नज़र डालें। अच्छी सामग्री :)
और अब जवाब के लिए
यह बहुत अच्छी तरह से मूल सवाल का जवाब नहीं है। मुझे पता है और मुझे इसके बारे में खेद है, लेकिन मैंने इसे यहां पोस्ट किया है क्योंकि मुझे आशा है कि यह किसी और को अपनी गंदगी को व्यवस्थित करने के लिए उपयोगी हो सकता है।
समस्या के प्रति मेरा दृष्टिकोण उतना ही ऑब्जेक्ट-ओरिएंटेड मॉडलिंग करना है जितना कि मैं कर सकता हूं और विभिन्न फाइलों में कार्यान्वयन को अलग कर सकता हूं। फिर हैंडलर जितना संभव हो उतना छोटा होना चाहिए। List
सिंगलटन के साथ उदाहरण भी अच्छा है।
और नाम स्थान ... अच्छी तरह से गहरी वस्तु संरचना द्वारा उनका अनुकरण किया जा सकता है।
if (typeof org === 'undefined') {
var org = {};
}
if (!org.hasOwnProperty('example')) {
org.example = {};
}
org.example.AnotherObject = function () {
// constructor body
};
मैं नकल का बहुत बड़ा प्रशंसक नहीं हूं, लेकिन यह मददगार हो सकता है यदि आपके पास कई वस्तुएं हैं जिन्हें आप वैश्विक दायरे से बाहर करना चाहेंगे।