তার আগে পোস্ট আমি এর একটি অনুলিপি তৈরি দ্বারা অনুপ্রাণিত Rakefile এবং বিক্রেতা ডিরেক্টরি সঙ্গে বিতরণ করা WysiHat (ক আরটিই পরিবর্তণের উল্লেখ) এবং কোড-পরীক্ষণের অন্তর্ভুক্ত করতে কয়েক পরিবর্তন করেছেন JSLint এবং minification Yui কম্প্রেসার ।
একাধিক জাভাস্ক্রিপ্টকে এক ফাইলে একীভূত করতে, জেএসলিন্টের সাথে মার্জ হওয়া ফাইলটির বাক্য গঠনটি পরীক্ষা করে বিতরণের আগে ওয়াইইউআই কমপ্রেসর দিয়ে মিনিফাইজ করার জন্য স্প্রোকেটগুলি (উইসাইহাট থেকে) ব্যবহার করার ধারণা ।
পূর্বশর্ত
- জাভা রানটাইম
- রুবি এবং রেক রত্ন
- আপনার জেনে রাখা উচিত কীভাবে ক্লাসপাথে একটি জেআর স্থাপন করা যায়
এখন কর
- রাইনো ডাউনলোড করুন এবং আপনার ক্লাসপথে জেআর ("js.jar") রাখুন
- YUI সংক্ষেপকটি ডাউনলোড করুন এবং জার (বিল্ড / ইউইকম্প্রেসার-xyz.jar) আপনার ক্লাসপথে রাখুন
- WysiHat ডাউনলোড করুন এবং আপনার জাভাস্ক্রিপ্ট প্রকল্পের মূলটিতে "বিক্রেতা" ডিরেক্টরিটি অনুলিপি করুন
- গেন্ডার জন্য জেএসলিন্ট ডাউনলোড করুন এবং এটিকে "বিক্রেতা" ডিরেক্টরিতে রেখে দিন
এখন জাভাস্ক্রিপ্ট প্রকল্পের মূল ডিরেক্টরিতে "রেকফিল" নামে একটি ফাইল তৈরি করুন এবং এতে নিম্নলিখিত লিখিত সামগ্রী যুক্ত করুন:
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
- আপনার জেএস কোডের সংক্ষিপ্ত সংস্করণ প্রস্তুত করতে
উত্স একত্রিত করা
স্প্রোকেটস, জাভাস্ক্রিপ্ট প্রি-প্রসেসর ব্যবহার করে আপনি (বা require
) অন্যান্য জাভাস্ক্রিপ্ট ফাইল অন্তর্ভুক্ত করতে পারেন । প্রাথমিক ফাইল থেকে অন্য স্ক্রিপ্টগুলি অন্তর্ভুক্ত করার জন্য নিম্নলিখিত সিনট্যাক্সটি ব্যবহার করুন (নাম "মেইন.জেস", তবে আপনি এটি রেকফাইলে পরিবর্তন করতে পারেন):
(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 এর সাথে সরবরাহ করা রাকফাইলে একবার দেখুন। দারুণ জিনিস :)
এবং এখন উত্তরের জন্য
এটি মূল প্রশ্নের উত্তর খুব ভাল দেয় না। আমি জানি এবং আমি এটির জন্য দুঃখিত, তবে আমি এটি এখানে পোস্ট করেছি কারণ আমি আশা করি এটি অন্য কারও পক্ষে তাদের জগাখিচুড়ি আয়োজনে কার্যকর হতে পারে।
সমস্যার প্রতি আমার দৃষ্টিভঙ্গি হ'ল আমি যতটা অবজেক্ট অরিয়েন্টেড মডেলিং করতে পারি এবং বিভিন্ন ফাইলগুলিতে প্রয়োগগুলি পৃথক করে। তারপরে হ্যান্ডলারগুলি যতটা সম্ভব সংক্ষিপ্ত হওয়া উচিত। List
সিঙ্গেলনের সাথে উদাহরণটিও দুর্দান্ত ।
এবং নেমস্পেসগুলি ... ভাল তারা গভীর অবজেক্ট কাঠামোর দ্বারা অনুকরণ করতে পারে।
if (typeof org === 'undefined') {
var org = {};
}
if (!org.hasOwnProperty('example')) {
org.example = {};
}
org.example.AnotherObject = function () {
// constructor body
};
আমি অনুকরণের বড় অনুরাগী নই, তবে আপনি যদি বিশ্বব্যাপী সুযোগ থেকে সরে যেতে চান এমন অনেকগুলি জিনিস থাকে তবে এটি সহায়ক হতে পারে।