মডিউল ঘোষণা করার 'সেরা' উপায়
যেহেতু কৌণিক বৈশ্বিক স্কোপটিতে রয়েছে এবং মডিউলগুলি তার পরিবর্তনশীলটিতে সংরক্ষণ করা হয় আপনি এর মাধ্যমে মডিউলগুলি অ্যাক্সেস করতে পারবেন angular.module('mymod'):
// one file
// NOTE: the immediately invoked function expression
// is used to exemplify different files and is not required
(function(){
// declaring the module in one file / anonymous function
// (only pass a second parameter THIS ONE TIME as a redecleration creates bugs
// which are very hard to dedect)
angular.module('mymod', []);
})();
// another file and/or another anonymous function
(function(){
// using the function form of use-strict...
"use strict";
// accessing the module in another.
// this can be done by calling angular.module without the []-brackets
angular.module('mymod')
.controller('myctrl', ['dep1', function(dep1){
//..
}])
// appending another service/controller/filter etc to the same module-call inside the same file
.service('myservice', ['dep2', function(dep2){
//...
}]);
// you can of course use angular.module('mymod') here as well
angular.module('mymod').controller('anothermyctrl', ['dep1', function(dep1){
//..
}])
})();
অন্য কোনও গ্লোবাল ভেরিয়েবলের প্রয়োজন নেই।
অবশ্যই এটি সমস্ত পছন্দগুলির উপর নির্ভর করে তবে আমি মনে করি এটি সর্বোত্তম অনুশীলনের মতো
- আপনি বৈশ্বিক সুযোগ দূষিত করতে হবে না
- আপনি আপনার মডিউলগুলি সর্বত্র অ্যাক্সেস করতে পারেন এবং তাদের এবং তাদের ফাংশনগুলিকে ইচ্ছামত বিভিন্ন ফাইলগুলিতে বাছাই করতে পারেন
- আপনি "কঠোর ব্যবহার" এর ফাংশন-ফর্মটি ব্যবহার করতে পারেন;
- ফাইলগুলির লোডিং ক্রমটি ততটা গুরুত্বপূর্ণ নয়
আপনার মডিউল এবং ফাইল বাছাই করার জন্য বিকল্প
মডিউলগুলি ঘোষণা এবং অ্যাক্সেস করার এই উপায় আপনাকে খুব নমনীয় করে তোলে। আপনি ফাংশন-টাইপ (যেমন অন্য উত্তরে বর্ণিত) বা রুটের মাধ্যমে মডিউলগুলি বাছাই করতে পারেন:
/******** sorting by route **********/
angular.module('home')...
angular.module('another-route')...
angular.module('shared')...
আপনি কীভাবে শেষ পর্যন্ত এটি সাজান তা ব্যক্তিগত স্বাদ এবং প্রকল্পের স্কেল এবং ধরণের বিষয়। আমি ব্যক্তিগতভাবে একই ফোল্ডারের ভিতরে থাকা মডিউলটির সমস্ত ফাইল (নির্দেশ, নিয়ন্ত্রণকারী, পরিষেবাদি এবং ফিল্টারগুলির সাব-ফোল্ডারগুলিতে অর্ডার করা) সহ সমস্ত ভিন্ন টেস্ট-ফাইলগুলি অন্তর্ভুক্ত করতে চাই, কারণ এটি আপনার মডিউলগুলি আরও পুনরায় ব্যবহারযোগ্য করে তোলে। সুতরাং মাঝারি আকারের প্রকল্পগুলিতে আমি বেস-মডিউলটি দিয়ে শেষ করি, যার মধ্যে সমস্ত মৌলিক রুট এবং তাদের নিয়ন্ত্রক, পরিষেবা, নির্দেশাবলী এবং আরও কম কম সাব-মডিউল অন্তর্ভুক্ত থাকে, যখন আমি মনে করি তারা অন্যান্য প্রকল্পের জন্যও কার্যকর হতে পারে, যেমন :
/******** modularizing feature-sets **********/
/controllers
/directives
/filters
/services
/my-map-sub-module
/my-map-sub-module/controllers
/my-map-sub-module/services
app.js
...
angular.module('app', [
'app.directives',
'app.filters',
'app.controllers',
'app.services',
'myMapSubModule'
]);
angular.module('myMapSubModule',[
'myMapSubModule.controllers',
'myMapSubModule.services',
// only if they are specific to the module
'myMapSubModule.directives',
'myMapSubModule.filters'
]);
খুব বড় প্রকল্পগুলির জন্য, আমি মাঝে মাঝে উপরে বা কিছু নির্বাচিত প্রধান রুটগুলি এমনকি রাস্তার এবং কিছু নির্বাচিত উপাদানগুলির সংমিশ্রণ অনুসারে রুটগুলি দ্বারা গ্রুপিং মডিউলগুলি শেষ করি, তবে এটি সত্যই নির্ভর করে।
সম্পাদনা:
কারণ এটি সম্পর্কিত এবং আমি খুব সম্প্রতি এটিতে ছুটে এসেছি: ভাল যত্ন নিন যে আপনি কেবল একবারই মডিউল তৈরি করেছেন (কৌণিক.মডিউল-ফাংশনে দ্বিতীয় প্যারামিটার যুক্ত করে)। এটি আপনার অ্যাপ্লিকেশনটিকে বিশৃঙ্খলা করবে এবং এটি সনাক্ত করা খুব শক্ত।
মডিউলগুলি বাছাইয়ের জন্য 2015 সম্পাদনা:
পরে কৌণিক-অভিজ্ঞতার দেড় বছর পরে, আমি যুক্ত করতে পারি যে আপনার অ্যাপ্লিকেশনটির মধ্যে আলাদাভাবে নামযুক্ত মডিউলগুলি ব্যবহারের সুবিধাগুলি কিছুটা সীমাবদ্ধ কারণ এএমডি এখনও কৌণিক এবং পরিষেবাদি, নির্দেশিকা এবং ফিল্টারগুলির সাথে সত্যিই ভাল কাজ করে না বিশ্বব্যাপী কৌণিক প্রেক্ষাপটের ভিতরে যেভাবেই পাওয়া যায় ( যেমন উদাহরণ হিসাবে এখানে )। এখনও একটি শব্দার্থক এবং কাঠামোগত সুবিধা আছে এবং এটি কোডের একক লাইনের সাথে মন্তব্য করা বা বাইরে মডিউলটি অন্তর্ভুক্ত / বাদ দিতে সক্ষম হতে পারে।
সাধারণত সাধারণত একে অপরের উপর নির্ভরশীল হওয়ায় এটি টাইপ করে উপ-মডিউলগুলি পৃথক করার পক্ষে প্রায়শই বোঝা যায় না । (যেমন: 'মাইম্যাপসডমডিউলকন্ট্রোলার')।