Angular.js এর সাথে Require.js ব্যবহার করা কি বোধগম্য? [বন্ধ]


443

আমি অ্যাঙ্গুলার.জেএস-এর একজন নবাগত এবং এটি কীভাবে ব্যাকবোন.জেএস থেকে আলাদা তা বোঝার চেষ্টা করছি ... ব্যাকবোন ব্যবহার করার সময় আমরা আমাদের প্যাকেজগুলির নির্ভরতা ম্যানেজ করতাম। Angular.js এর সাথে কি একই বোঝা যায়?


অন্য একটি ব্লগ এবং বীজ প্রকল্প: স্টার্টারসকোড.ব্লগ
angularjs

19
না - অ্যাংুলার.জেএস এর সাথে আবশ্যক। জেএস বা ব্রাউজ করুন না simply অ্যাংুলারজেএসের একটি মডিউল সিস্টেম রয়েছে এবং এটির উপরে অন্য একটি মডিউল সিস্টেম ব্যবহার করা আপনার জীবনকে অহেতুক শক্ত করে তুলবে। আমি এই থ্রেডে উত্তরগুলি অনুসরণ করেছি এবং এমন কোনও কিছুতে খুব বেশি ঘন্টা নষ্ট করেছি যা সম্পূর্ণ অযাচিত। দয়া করে এই নিবন্ধটি কেন নয় ব্যাখ্যা পড়ুন: medium.com/@dickeyxxx/...
VitalyB


1
এখানে একটি মহান ভিডিও ব্যাখ্যা দিয়েছে কেন এটি একটি ভাল ধারণা এবং শো কিভাবে angularJS সঙ্গে requireJS ব্যবহার করতে হয় youtube.com/watch?v=4yulGISBF8w#t=142
gskalinskii

2
@ ভিটালিবি চমৎকার নিবন্ধ! আমি ছোট ছোট টুকরোয় অ্যাপ্লিকেশন লোডের পক্ষে। এটি শীঘ্রই যথেষ্ট কিছুই ব্যয় করা হবে । মুরগি, এই মুহুর্তে আমার জন্য কোনও খরচ হয় না।
ডিজাইন

উত্তর:


224

হ্যাঁ এটির angular.jsপাশাপাশি require.jsআপনি require.jsউপাদানগুলিকে মডুলারিজ করতে ব্যবহার করতে পারেন তা বোঝা যায় ।

একটি বীজ প্রকল্প রয়েছে যা ব্যবহার করে both angular.js and require.js


108
উপরে উল্লিখিত বীজ প্রকল্পটি এক বছরের জন্য স্পর্শ করা যায় নি তাই আমি টেস্টাকুলার চালিত পরীক্ষার জন্য সম্পূর্ণ সমর্থন সহ সর্বশেষ অ্যাংুলারজেএস এবং প্রয়োজনীয় জেএস ব্যবহার করে একটি নতুন তৈরি করেছি ।
tnajdek

2
@ টনজাদেক, আপনার প্রস্তাবিত ব্যক্তির প্রতি ইঙ্গিত করার জন্য আমি আনশুর উত্তরের লিঙ্কটি আপডেট করেছি।
ডেভিড নদী

7
উল্লেখ্য যে those বীজ প্রকল্পগুলির কোনওটিই কৌণিক দল দ্বারা অনুমোদিত নয়। প্রয়োজনীয়তা এমন একটি নিদর্শন যা অন্যান্য প্রসঙ্গে আরও অনুভূত হয়েছিল এবং জুতার আঙ্গুলটি এঙ্গুলারে পরিণত করা নয়, আইএমএইচও, এটি একটি সেরা অনুশীলন।
এক্সএমএল

2
ব্র্যাড গ্রিন অ্যান্ড শ্যাম শেশেদ্রি (এই বছরের এপ্রিল প্রকাশিত) এর ও'রিলি অ্যাঙ্গুলার জেএস বইটিও একটি কৌণিক প্রকল্পের প্রারম্ভিক দিকে প্রয়োজনীয় জেএস যুক্ত করার পরামর্শ দিয়েছে এবং বিশদটি খুব পরিষ্কারভাবে প্রকাশ করেছে clearly
বজোরকে

1
আমি বরং বিল্ড সময়ে সবকিছু করতে চাই 1. browserify.org 2. npmjs.org/package/gulp-angular-filesort
এ-Dubb

150

আমার মনে হয় ওপি'র প্রশ্নটি যা সত্য তা আবার পুনঃস্থাপন করা:

যদি আমি মূলত কৌণিক 1.x তে একটি অ্যাপ্লিকেশন তৈরি করছি এবং (স্পষ্টভাবে) গ্রান্ট / গুলপ / ব্রকলি এবং বাভার / এনপিএম এর যুগে করছি এবং আমার আরও কয়েকটি অতিরিক্ত গ্রন্থাগার নির্ভরতা রয়েছে, তবে কি স্পষ্ট, নির্দিষ্ট যুক্ত করার দরকার আছে? বিনা প্রয়োজনে কৌণিক ব্যবহার করে আমি যা পাই তার থেকেও মূল্য?

অথবা, অন্য কোনও উপায় রাখুন:

" যদি আমার কাছে বেসিক স্ক্রিপ্ট-লোডিংয়ের অন্যান্য উপায় থাকে তবে ভ্যানিলা কৌণিকের কী বেসিক কৌণিক উপাদান-লোডিং কার্যকরভাবে পরিচালনা করার দরকার আছে? "

এবং আমি এর মুল উত্তরটি বিশ্বাস করি: "যদি না আপনি অন্য কিছু চালাচ্ছেন এবং / অথবা আপনি আরও আধুনিক, আরও আধুনিক সরঞ্জাম ব্যবহার করতে অক্ষম হন তবে না"।

শুরুতে পরিষ্কার হওয়া যাক: RequireJS একটি দুর্দান্ত সরঞ্জাম যা কিছু খুব গুরুত্বপূর্ণ সমস্যা সমাধান করে এবং আমাদের যে রাস্তায় চলতে শুরু করে তা আরও স্কেলযোগ্য, আরও পেশাদার জাভাস্ক্রিপ্ট অ্যাপ্লিকেশনগুলির দিকে শুরু করে। গুরুত্বপূর্ণ বিষয় হচ্ছে, এটি প্রথমবারের মতো বহু মানুষ মডুলারাইজেশন এবং জিনিসকে বিশ্বব্যাপী সুযোগ ছাড়িয়ে যাওয়ার ধারণার মুখোমুখি হয়েছিল। সুতরাং, যদি আপনি একটি জাভাস্ক্রিপ্ট অ্যাপ্লিকেশন তৈরি করতে যা যা স্কেল করা প্রয়োজন, তবে প্রয়োজনীয়তা এবং এএমডি প্যাটার্নটি এটি করার জন্য খারাপ সরঞ্জাম নয়।

তবে, অ্যাঙ্গুলার সম্পর্কে এমন কোনও কিছুর প্রয়োজন রয়েছে যা প্রয়োজনীয়তা / এএমডিকে বিশেষত ভাল ফিট করে? না। প্রকৃতপক্ষে, কৌণিকটি আপনাকে তার নিজস্ব মডুলারাইজেশন এবং এনক্যাপসুলেশন প্যাটার্ন সরবরাহ করে, যা বিভিন্ন উপায়ে এএমডির মৌলিক মডুলারাইজেশন বৈশিষ্ট্যগুলিকে রিন্ডন্ড করে। এবং, এএমডি প্যাটার্নে কৌণিক মডিউলগুলি সংহত করা অসম্ভব নয়, তবে এটি কিছুটা ... চতুর। আপনি অবশ্যই নিখুঁতভাবে সংহত করার জন্য দুটি প্যাটার্ন পেতে সময় ব্যয় করবেন।

কৌণিক দল নিজেই থেকে কয়েকটি আঙ্গিক জন্য, সেখানে এই , ব্রায়ান ফোর্ড, কৌণিক Batarang লেখক এবং এখন কৌণিক কোর দলের সদস্য থেকে:

আমি AngularJS এর ​​সাথে RequireJS ব্যবহার করার পরামর্শ দিচ্ছি না। যদিও এটি অবশ্যই সম্ভব, আমি এমন কোনও উদাহরণ দেখিনি যেখানে প্রযোজনায় জেএস প্রয়োজনে উপকারী ছিল।

সুতরাং, AngularJS এর ​​খুব নির্দিষ্ট প্রশ্নে: কৌণিক এবং প্রয়োজন / এএমডি অরথোগোনাল হয় এবং জায়গায় ওভারল্যাপিং হয়। আপনি এগুলি একসাথে ব্যবহার করতে পারেন, তবে অ্যাঙ্গুলারের নিজেই প্রকৃতি / নিদর্শনগুলির সাথে বিশেষভাবে সম্পর্কিত কোনও কারণ নেই।

তবে স্কেলযোগ্য জাভাস্ক্রিপ্ট অ্যাপ্লিকেশনগুলির জন্য অভ্যন্তরীণ এবং বাহ্যিক নির্ভরতার প্রাথমিক পরিচালনার বিষয়ে কী? সেখানে কি আমার জন্য সত্যিই সমালোচনামূলক কিছু করার দরকার নেই?

আমি বাওয়ার এবং এনপিএম এবং বিশেষত এনপিএম চেক করার পরামর্শ দিচ্ছি। আমি এই সরঞ্জামগুলির তুলনামূলক সুবিধা সম্পর্কে পবিত্র যুদ্ধ শুরু করার চেষ্টা করছি না start আমি কেবল বলতে চাই: সেই বিড়ালের ত্বকের অন্যান্য উপায় আছে এবং এই উপায়গুলি এএমডি / প্রয়োজনের চেয়েও ভাল হতে পারে। (ইএস 6 বা কমনজেএস মডিউলগুলির সাথে মিলিয়ে 2015-এর শেষের দিকে অবশ্যই তাদের আরও জনপ্রিয় গতি রয়েছে, বিশেষত এনপিএম related সম্পর্কিত এসও প্রশ্নটি দেখুন ))

অলস-লোডিংয়ের কী হবে?

লক্ষ করুন যে অলস-লোডিং এবং অলস-ডাউনলোডিং আলাদা। কৌণিকর অলস-লোডিংয়ের অর্থ এই নয় যে আপনি তাদের সার্ভার থেকে সরাসরি টানছেন। জাভাস্ক্রিপ্ট অটোমেশনের সাথে ইয়েমেন-স্টাইলের একটি অ্যাপ্লিকেশনটিতে আপনি সম্পূর্ণ শেবাংকে একক ফাইলে একত্রে এবং ক্ষুদ্র করে দিচ্ছেন। তারা উপস্থিত আছেন, তবে প্রয়োজনীয় না হওয়া পর্যন্ত মৃত্যুদণ্ড কার্যকর / তাত্ক্ষণিকভাবে চালিত হয় না। আপনি এই গতি এবং ব্যান্ডউইথ উন্নতিগুলি ব্যাপকভাবে করার মাধ্যমে পান, নির্দিষ্ট 20-লাইনের নিয়ামককে অলস-ডাউনলোড করা থেকে কোনও অভিযোগযুক্ত উন্নতিকে ছাড়িয়ে যান। প্রকৃতপক্ষে, সেই নিয়ামকের জন্য নষ্ট নেটওয়ার্কের বিলম্বিতা এবং সংক্রমণ ওভারহেডটি নিয়ামকের নিজের আকারের চেয়ে বৃহত্তরতার একটি ক্রম হতে চলেছে।

তবে আসুন আমরা আপনাকে অলস-ডাউনলোডের প্রয়োজন, সম্ভবত আপনার অ্যাপ্লিকেশনটির প্রায়শই ব্যবহৃত টুকরো যেমন অ্যাডমিন ইন্টারফেসের প্রয়োজন। এটি একটি খুব বৈধ মামলা। প্রয়োজন আপনার জন্য সত্যিই এটি করতে পারে। কিন্তু আছে এছাড়াও অনেক অন্যান্য , সম্ভাব্য আরো নমনীয় অপশন যে একই জিনিস সাধা। এবং কৌণিক 2.0 2.0 আমাদের জন্য রাউটারের অন্তর্নির্মিতভাবে দৃশ্যত এই যত্ন নেবে । ( বিশদ ।)

তবে আমার স্থানীয় ডেভ বক্সনে বিকাশের সময় কী হবে?

আমি কীভাবে আমার সমস্ত ডজন / শত শত স্ক্রিপ্ট ফাইলগুলি মেনুয়ালি সূচক html এ সংযুক্ত করার প্রয়োজন ছাড়াই লোড করতে পারি?

ইওমেনের জেনারেটর- কৌণিকের সাব-জেনারেটরগুলি দেখুন, বা জেনারেটর- গাল্প-কৌণিকের সাথে সংযুক্ত অটোমেশন নিদর্শনগুলিতে বা প্রতিক্রিয়াটির জন্য স্ট্যান্ডার্ড ওয়েবপ্যাক অটোমেশনটিতে দেখুন। এগুলি আপনাকে একটি পরিষ্কার, স্কেলযোগ্য উপায় সরবরাহ করে: উপাদানগুলি স্ক্যাফলড হওয়ার সময় স্বয়ংক্রিয়ভাবে ফাইলগুলি সংযুক্ত করুন বা নির্দিষ্ট ফোল্ডারে উপস্থিত থাকলে / নির্দিষ্ট গ্লোব-নিদর্শনগুলির সাথে মেলে তবে কেবল সেগুলি স্বয়ংক্রিয়ভাবে গ্রাস করুন। পরবর্তী বিকল্পগুলি পেয়ে গেলে আপনাকে আর কখনও নিজের স্ক্রিপ্ট-লোডিংয়ের কথা ভাবার দরকার নেই।

শেষের সারি?

প্রয়োজনীয় কিছু জিনিসগুলির জন্য দুর্দান্ত সরঞ্জাম। তবে যখনই সম্ভব শস্যের সাথে যান, এবং যখনই সম্ভব আপনার উদ্বেগগুলি আলাদা করুন। কৌণিককে অ্যাংুলারের নিজস্ব মডুলারাইজেশন প্যাটার্ন সম্পর্কে উদ্বিগ্ন হতে দিন এবং ES6 মডিউল বা কমন জেএসকে সাধারণ মডুলারাইজেশন প্যাটার্ন হিসাবে ব্যবহার করার বিষয়টি বিবেচনা করুন। আধুনিক অটোমেশন সরঞ্জামগুলিকে স্ক্রিপ্ট-লোডিং এবং নির্ভরতা-পরিচালনা সম্পর্কে উদ্বিগ্ন হতে দিন। এবং অন্যান্য দুটি উদ্বেগের সাথে জড়িত হওয়ার পরিবর্তে দানাদার উপায়ে অ্যাসাইক অলস-লোডিংয়ের যত্ন নিন।

এতে বলা হয়েছে, আপনি যদি কৌনিক অ্যাপ্লিকেশন বিকাশ করছেন তবে জাভাস্ক্রিপ্ট অটোমেশন সরঞ্জামগুলি কোনও কারণে ব্যবহার করার জন্য আপনার মেশিনে নোড ইনস্টল করতে না পারেন, তবে প্রয়োজনীয় বিকল্প একটি ভাল সমাধান হতে পারে। এবং আমি সত্যিই বিস্তৃত সেটআপগুলি দেখেছি যেখানে লোকেরা কৌণিক উপাদানগুলিকে গতিশীলভাবে লোড করতে চায় যা প্রতিটি তাদের নিজস্ব নির্ভরতা বা কিছু ঘোষণা করে। এবং আমি সম্ভবত সেই সমস্যাটিকে অন্যভাবে সমাধান করার চেষ্টা করব, আমি সেই বিশেষ পরিস্থিতির জন্য ধারণার গুণাবলী দেখতে পাচ্ছি।

তবে অন্যথায় ... একটি নতুন কৌণিক অ্যাপ্লিকেশন এবং একটি আধুনিক অটোমেশন পরিবেশ তৈরি করার নমনীয়তার সাথে স্ক্র্যাচ থেকে শুরু করার সময় ... আপনি প্রচুর অন্যান্য, আরও নমনীয়, আরও আধুনিক বিকল্প পেয়েছেন।

(বিকশিত জেএস দৃশ্যের সাথে তাল মিলিয়ে চলতে বারবার আপডেট করা হয়েছে))


1
এনজি-বয়লারপ্লেট বীজ প্রকল্প ( github.com/ngbp/ngbp ) এছাড়াও একটি জেএস ফাইলের সাথে একটি একক পৃষ্ঠার ওয়েব অ্যাপ তৈরি করে। এইচটিএমএল 5 ম্যানিফেস্ট ব্যবহার করা নিশ্চিত করে যে এই ফাইলটি প্রতি সংস্করণে একবারে লোড হয়েছে।
ফেডেরিকো এলেস

2
যদিও, সর্বদা হিসাবে, <i> এটি নির্ভর করে </ i>। অনেক লোক তাদের সম্পূর্ণ আর্কিটেকচারের জন্য প্রয়োজনীয়তা ব্যবহার করে এবং এঙ্গুলারটিকে সেই বাস্তুতন্ত্রের সাথে সংহত করার প্রয়োজন হয়। আপনি যখন বিচ্ছিন্নতার সাথে অ্যাপ্লিকেশন তৈরি করছেন তখন তার থেকে খুব আলাদা পরিস্থিতি।
ডেভ নিকোল

2
একমত। তবে ওপি'র জোর মনে হচ্ছে: "আমি যদি মূলত কৌণিকভাবে একটি অ্যাপ্লিকেশন তৈরি করি এবং গ্রান্টের যুগে (স্পষ্টতই) এটি করি, এবং আমার আরও কয়েকটি অতিরিক্ত গ্রন্থাগার নির্ভরতা থাকতে পারে, তবে কি এর বাইরে পরিষ্কার, নির্দিষ্ট মান যুক্ত করার প্রয়োজন আছে? বিনা প্রয়োজনে কৌণিক ব্যবহার করে আমি কী পাই? " এবং আমি বিশ্বাস করি, উত্তরটি হ'ল: না। আপনার যদি 40 টি বাইরের নির্ভরতা সহ বিশাল অ্যাপ্লিকেশন থাকে, বা আপনি আপনার সিআই পরিবেশ নিয়ন্ত্রণ করতে পারবেন না, বা আপনার বস প্রয়োজনীয়তা উপস্থাপন করতে পারেন, বা আপনি প্রয়োজনীয়তা পছন্দ করেন, বা অ্যাঙ্গুলার একটি বৃহত্তর অ্যাপ্লিকেশন ইত্যাদির এক টুকরো ইত্যাদি etc. YMMV।
এক্সএমএল

1
তবে যেহেতু তিনি এই প্রশ্নগুলি জিজ্ঞাসা করছেন বলে মনে হচ্ছে না এবং যেহেতু তিনি কেবল ব্যাকবোন অ্যাপ্লিকেশনটির বিকল্প প্রসঙ্গে উল্লেখ করেছেন, তাই তিনি মনে করছেন যে: "ভ্যানিলা কৌণিকর কীভাবে এর উপাদানগুলি কার্যকরভাবে পরিচালনা করতে হবে?" এবং উত্তরটি হ'ল: "যদি না আপনি অন্য কিছু চালিয়ে যান তবে got" এছাড়াও, এই প্রশ্নটি জাভাস্ক্রিপ্ট সিআই মুভমেন্টের উত্সাহে এসেছিল, যেখানে আমরা বেসিক, শারীরিক 'স্ক্রিপ্ট-লোডিং' পরিচালনা করার জন্য আরও অনেক ভাল উপায় পেয়েছি। আপনার যদি সমস্যাটি সমাধান হয় তবে প্রয়োজনীয়তা মূলত নির্ভরতা-ম্যাচিং এবং এনক্যাপসুলেশন সম্পর্কে। কৌনিক এই দুটি জিনিসই আপনার জন্য করে।
এক্সএমএল

গুগল এর কয়েকটি অ্যাংুলারজেএস প্রকল্পগুলিতে অলস-লোডিং ব্যবহার করে, কারণ অন্যথায়, ব্যবহারকারী প্রথম পৃষ্ঠার লোডে 24 এমবি ফাইল ডাউনলোড করবে (এবং এটি ফাইলটি অগ্লিফাইড এবং কনটেনেটেড সহ)। সুতরাং হ্যাঁ, জটিল অ্যাপ্লিকেশনগুলিতে এটি কেবলমাত্র সমস্ত বিভাগকেই বোঝাতে পারে না, যখন বিভাগগুলি থাকে যখন ব্যবহারকারী প্রতিটি দর্শন দিয়ে খোলেন না।
এনজিডি ডেভলপার

136

হ্যাঁ, এটা বোঝা যায়।

কৌণিক মডিউলগুলি স্ক্রিপ্ট লোড ক্রম বা অলস স্ক্রিপ্ট আনার সমস্যাটি সমাধান করার চেষ্টা করবেন না। এই লক্ষ্যগুলি অরথোগোনাল এবং উভয় মডিউল সিস্টেম পাশাপাশি থাকতে পারে এবং তাদের লক্ষ্যগুলি পূরণ করতে পারে।

সূত্র: কৌণিক জেএস অফিসিয়াল ওয়েবসাইট


6
আপনি যদি প্রতি জেএস ফাইলের জন্য একটি মডিউল ব্যবহার করেন তবে আপনি কোনও আদেশে নিজের কৌণিক মডিউলটি লোড করতে পারেন। তবে আপনি উদাহরণস্বরূপ বিভিন্ন জেএস ফাইলগুলিতে বিভিন্ন পরিষেবা রাখতে চান তবে আপনি সেগুলি একই কৌণিক মডিউলে সংযুক্ত করতে চান আপনাকে পরিষেবা ঘোষণার আগে মডিউল ঘোষণা লোড করতে হবে। সুতরাং এটি একটি আর্কিটেকচারের সিদ্ধান্ত।
মাতোহক

@ টিয়াগো: আপনি যে জায়গা থেকে এটি পেয়েছেন তা দয়া করে একটি লিঙ্ক সরবরাহ করুন। আমি এটি কোথাও খুঁজে পাচ্ছি না। আমি অনুমান করছি যে এটি কৌণিক দস্তাবেজগুলির পূর্ববর্তী সংস্করণ থেকে এসেছে, অ্যাংুলারের ধরণগুলি সুপ্রতিষ্ঠিত হওয়ার আগে এবং এটি স্পষ্ট হয়ে যাওয়ার আগে অন্তত কৌণিক উপাদানগুলির জন্য প্রয়োজনীয়তা এড়িয়ে যাওয়ার গুরুত্বপূর্ণ সুবিধা রয়েছে।
এক্সএমএল

@ এক্সএমএল্লি: আপনি কি এমন লিঙ্ক সরবরাহ করতে পারেন যা অ্যাংুলার ব্যবহারের সময় প্রয়োজনীয়তা এড়ানোর সুবিধার ব্যাখ্যা দেয়? আমি আমার প্রকল্পে প্রয়োজন ব্যবহার করবেন কিনা তা আমি সিদ্ধান্ত নিচ্ছি এবং এটির মতো মনে হচ্ছে এটি সহায়ক হবে।
ট্রেভর

1
আমি এখানে আমার ভাষায় অস্পষ্ট ছিলাম: অ্যাংুলারের নিজস্ব বিল্ট-ইন মডিউল-লোডারগুলি উপকার করার এবং কৌণিক নিদর্শনগুলির শস্যের সাথে যাওয়ার জন্য গুরুত্বপূর্ণ সুবিধা রয়েছে। প্রশ্নটি এড়াতে হবে কিনা তা নয় , বরং জটিলতার অতিরিক্ত স্তর যুক্ত করার কোনও মূল্য আছে কিনা তা নয়। যা পরিষ্কার তা হল যে কৌণিকের অন্তর্নির্মিত নিদর্শনগুলি কৌতুকের নিজস্ব মডিউলগুলি লোড করার প্রয়োজনীয়তার জন্য হাতের এবং মার্জিতভাবে সমাধান করবে। যদি চাহিদা কৌণিক প্রসঙ্গে বাইরের মডিউল লোড করার উদ্দেশ্যে কাজ করে তবে তা হয়ে উঠুন। তবে অ্যাঙ্গুলার ফর অ্যাঙ্গুলার ব্যবহার করা বহিরাগত।
এক্সএমএল

6
@ XMLilley সমস্ত কৌণিকটি আপনাকে নির্ভরতা ইনজেকশন দেয়। মডিউলটির আসল লোড করা আপনার দায়িত্ব। আপনি এটি কোনও স্ক্রিপ্ট ট্যাগ যুক্ত করে, একটি বিল্ড স্ক্রিপ্ট পেয়ে বা প্রয়োজনীয়js ব্যবহার করে করতে পারেন। অ্যাঙ্গুলারস মডিউল সিস্টেমটির এ সম্পর্কে কোনও মতামত নেই।
gillesruppert

57

এটি আমি বিশ্বাস করি এটি একটি বিষয়গত প্রশ্ন, তাই আমি আমার বিষয়গত মতামত প্রদান করব।

কৌণিকটিতে একটি মডুলারাইজেশন মেকানিজম অন্তর্নির্মিত রয়েছে app আপনি যখন নিজের অ্যাপটি তৈরি করেন, প্রথম কাজটি আপনি করেন

var app = angular.module("myApp");

এবং তারপর

app.directive(...);

app.controller(...);

app.service(...);

যদি আপনার কৌণিক-বীজের দিকে নজর থাকে যা কৌণিকের জন্য ঝরঝরে স্টার্টার অ্যাপ্লিকেশন, তারা নির্দেশাবলী, পরিষেবাগুলি, নিয়ন্ত্রণকারীগণকে আলাদা আলাদা আলাদা আলাদা মডিগুলিতে আলাদা করে ফেলেছে এবং তারপরে আপনার মূল অ্যাপ্লিকেশনে নির্ভরতা হিসাবে এই মডিউলগুলি লোড করেছে।

কিছুটা এইরকম :

var app = angular.module("myApp",["Directives","Controllers","Services"];

কৌণিক এছাড়াও অলস এই মডিউলগুলি লোড করে (মেমোরিতে) তাদের স্ক্রিপ্ট ফাইলগুলি নয়।

অলস লোডিং স্ক্রিপ্ট ফাইলগুলির ক্ষেত্রে, আপনি যদি খুব বড় কিছু না লিখে থাকেন তা স্পষ্ট করে বললে এটি ওভারকিল হবে কারণ কৌণিক স্বভাবের কারণে এটি আপনার কোডের কোডের পরিমাণ কমিয়ে দেয়। বেশিরভাগ অন্যান্য ফ্রেমওয়ার্কগুলিতে লেখা একটি সাধারণ অ্যাপ্লিকেশনটি কৌণিকভাবে লিখিত থাকলে LOC- এ প্রায় 30-50% হ্রাস আশা করতে পারে।


5
প্রকৃতপক্ষে, এটি প্রয়োজনীয়.জেএস সহ লোড মডিউলগুলির চেয়ে Angular.js এ পরিষেবাগুলি কনফিগার করা আরও ভাল। এটি সকেট.ইও
মার্কো গডেনেজ

33

অ্যাঙ্গুলারজেএস এর সাথে রিকোয়ারজেজেএস ব্যবহার করা অর্থবোধ করে তবে কেবল যদি আপনি বুঝতে পারেন যে তাদের প্রত্যেকটি নির্ভরতা ইনজেকশন সম্পর্কিত কীভাবে কাজ করে , যদিও উভয়ই নির্ভরতা ইনজেকশনের পরেও তারা খুব আলাদা জিনিস ইনজেক্ট করে।

অ্যাঙ্গুলারজেএস এর নিজস্ব নির্ভরতা সিস্টেম রয়েছে যা আপনাকে বাস্তবায়নের পুনরায় ব্যবহার করতে একটি নতুন নির্মিত মডিউলটিতে অ্যাঙ্গুলারজেএস মডিউলগুলি ইনজেক্ট করতে দেয়। ধরা যাক আপনি একটি "প্রথম" মডিউল তৈরি করেছেন যা একটি কৌণিক জেএস ফিল্টার "অভিবাদন" প্রয়োগ করে:

angular
  .module('first', [])
  .filter('greet', function() {
    return function(name) {
      return 'Hello, ' + name + '!';
    }
  });

এবং এখন আসুন আমরা বলি যে আপনি "সেকেন্ড" নামে একটি অন্য মডিউলে "শুভেচ্ছা" ফিল্টারটি ব্যবহার করতে চান যা "বিদায়" ফিল্টারটি প্রয়োগ করে। আপনি "দ্বিতীয়" মডিউলটিতে "প্রথম" মডিউলটি ইনজেকশন করতে পারেন:

angular
  .module('second', ['first'])
  .filter('goodbye', function() {
    return function(name) {
      return 'Good bye, ' + name + '!';
    }
  });

জিনিসটি হ'ল প্রয়োজনীয়তা জেএস ছাড়াই এই কাজটি সঠিকভাবে করার জন্য আপনাকে "দ্বিতীয়" অ্যাঙ্গুলারজেএস মডিউলটি তৈরি করার আগে নিশ্চিত করতে হবে যে "প্রথম" অ্যাঙ্গুলারজেএস মডিউলটি পৃষ্ঠায় লোড হয়েছে। ডকুমেন্টেশন উদ্ধৃত:

মডিউলের উপর নির্ভর করে বোঝানো হয় যে প্রয়োজনীয় মডিউলটি লোড হওয়ার আগে প্রয়োজনীয় মডিউলটি লোড করা দরকার।

সেই অর্থে, এখানে প্রয়োজনীয়তা জেএস আপনাকে সহায়তা করতে পারে যেখানে প্রয়োজনীয় জেএস আপনাকে একে অপরের মধ্যে স্ক্রিপ্ট নির্ভরতাগুলি সংগঠিত করতে সহায়তা করে পৃষ্ঠায় স্ক্রিপ্টগুলি ইনজেক্ট করার একটি পরিষ্কার উপায় সরবরাহ করে।

"প্রথম" এবং "দ্বিতীয়" অ্যাঙ্গুলারজেএস মডিউলগুলিতে ফিরে যাওয়া, এখানে স্ক্রিপ নির্ভরতা লোডিংয়ের জন্য বিভিন্ন ফাইলগুলিতে মডিউলগুলি পৃথক করে প্রয়োজনীয় জেএস ব্যবহার করে আপনি এটি করতে পারেন:

// firstModule.js file
define(['angular'], function(angular) {
  angular
    .module('first', [])
    .filter('greet', function() {
      return function(name) {
        return 'Hello, ' + name + '!';
      }
    });
});
// secondModule.js file
define(['angular', 'firstModule'], function(angular) {
  angular
    .module('second', ['first'])
    .filter('goodbye', function() {
      return function(name) {
        return 'Good bye, ' + name + '!';
      }
    });
});

আপনি দেখতে পাচ্ছেন যে আমরা প্রয়োজনীয় জেএস কলব্যাকের সামগ্রীটি কার্যকর করার আগে ইনজেকশনের জন্য "ফার্স্টমডুল" ফাইলের উপর নির্ভরশীল যা "দ্বিতীয়" অ্যাঙ্গুলারজেএস মডিউলটি তৈরি করতে "প্রথম" অ্যাঙ্গুলারজেএস মডিউলটি লোড করা দরকার।

পার্শ্ব দ্রষ্টব্য: "ফার্স্টমডিউল" এবং "সেকেন্ডমোডুল" ফাইলগুলিতে নির্ভরতা হিসাবে "কৌণিক" ইনজেকশনের জন্য প্রয়োজনীয় জেএস কলব্যাক ফাংশনের ভিতরে অ্যাংুলারজেএস ব্যবহার করার প্রয়োজন হয় এবং এটি লাইব্রেরি কোডটিতে "কৌণিক" মানচিত্রের জন্য প্রয়োজনীয় জেএস কনফিগারেশনে কনফিগার করা উচিত। আপনার অ্যাংুলারজেএস পেজে প্রচলিত পদ্ধতিতে খুব ভারে চাপিয়ে দিতে পারে (স্ক্রিপ্ট ট্যাগ) যদিও প্রয়োজনীয় জেএস সুবিধাগুলি পরাস্ত করে।

আমার ব্লগ পোস্টের ২.০ সংস্করণ থেকে অ্যাংুলারজেএস কোরের কাছ থেকে জেএসপি সহায়তা পাওয়ার বিষয়ে আরও বিশদ।

আমার ব্লগ পোস্টের ভিত্তিতে "অ্যাঙ্গুলারজেএসের সাথে প্রয়োজনীয়তা জেএসের বোধ তৈরি করা" এর লিঙ্কটি এখানে দেওয়া হয়েছে ।


2
লিঙ্কের বিষয়বস্তু সংক্ষিপ্ত করে স্ট্যাক ওভারফ্লোতে এখানে কোনও লিঙ্ক অন্তর্ভুক্ত করার সময় এটি সর্বোত্তম। যদি আপনার লিঙ্কটি কখনও ভেঙে ফেলা হয়, যা লিঙ্কগুলি ইন্টারনেটে করে, আপনার উত্তর এখানে ভবিষ্যতের দর্শকদের পক্ষে অকেজো। একটি সংক্ষিপ্তসার আনতে এবং এই পোস্টে উন্নতি করতে একটি সম্পাদনা বিবেচনা করুন । শুভকামনা!
jmort253

3
আপনি সেখানে যান, ধন্যবাদ jmort253।
লিগ

এডিটগুলি তৈরি করার জন্য এবং অ্যাঙ্গুলারটি এখনও বিদ্যমান নেই এমন কিছু লোড করার চেষ্টা করার সাথে অ্যাংুলার সমস্যাগুলি এড়াতে কীভাবে নির্ভরতা পরিচালনা করতে সহায়তা করতে পারে তা ব্যাখ্যা করার জন্য ধন্যবাদ
jmort253

আমি সম্পূর্ণরূপে সম্মত, বৃহত অ্যাপ্লিকেশনগুলির জন্য এই পদ্ধতির ব্যবহার করা ভাল তবে আপনার আবেদনে আপনার একাধিক <স্ক্রিপ্ট> ট্যাগ থাকবে having
I.Tyger

21

@Ganaraj হিসাবে উল্লেখ করা হয়েছে যে AngularJS এর ​​মূল অংশে নির্ভরতা ইঞ্জেকশন রয়েছে। প্রয়োজনীয় জেএস সাথে বা ছাড়াই খেলনা বীজ অ্যাপ্লিকেশনগুলি তৈরি করার সময়, আমি ব্যক্তিগতভাবে দেখতে পেয়েছি যে প্রয়োজনীয় ব্যবহারগুলি বেশিরভাগ ক্ষেত্রে ব্যবহারযোগ্য ক্ষেত্রে ওভারকিল ছিল।

এর অর্থ এই নয় যে এটির স্ক্রিপ্ট লোড করার ক্ষমতা এবং বিকাশের সময় আপনার কোডবেস পরিষ্কার রাখার জন্য প্রয়োজনীয় জেএস কার্যকর নয়। R.js অপটিমাইজার (মিশ্রন https://github.com/jrburke/r.js বাদাম (সঙ্গে) https://github.com/jrburke/almond ) একটি খুব পাতলা স্ক্রিপ্ট লোড গল্প তৈরি করতে পারেন। তবে যেহেতু এটির নির্ভরতা পরিচালনার বৈশিষ্ট্যগুলি আপনার অ্যাপ্লিকেশনটির মূলটিতে কৌণিকের সাথে অতটা গুরুত্বপূর্ণ নয়, আপনি অন্যান্য ক্লায়েন্টের দিক (হেডজেএস, ল্যাবজ, ...) বা এমনকি সার্ভার সাইড (এমভিসি 4 বান্ডলার, ...) স্ক্রিপ্ট লোডিং সমাধানগুলিও মূল্যায়ন করতে পারেন since আপনার বিশেষ অ্যাপ্লিকেশন জন্য।


17

হ্যাঁ, এটি বিশেষত খুব বড় এসপিএর জন্য।

কিছু পরিস্থিতিতে, RequireJS একটি আবশ্যক। উদাহরণস্বরূপ, আমি অ্যাঙ্গুলারজেএস ব্যবহার করে ফোনগ্যাপ অ্যাপ্লিকেশনগুলি বিকাশ করি যা গুগল ম্যাপ এপিআইও ব্যবহার করে। প্রয়োজনীয় জেএস-এর মতো এএমডি লোডার ছাড়া, অ্যাপ্লিকেশনটি অফলাইনে থাকা অবস্থায় লঞ্চ করার সময় কেবল ক্র্যাশ হয়ে যায় কারণ এটি Google মানচিত্র এপিআই স্ক্রিপ্টগুলি উত্স করতে পারে না। একটি এএমডি লোডার আমাকে ব্যবহারকারীকে ত্রুটি বার্তা প্রদর্শন করার সুযোগ দেয় gives

তবে, AngularJS এবং RequireJS এর ​​মধ্যে সংহতকরণ কিছুটা জটিল। এটিকে একটি কম বেদনাদায়ক প্রক্রিয়া করার জন্য আমি কৌণিক এএএমডি তৈরি করেছি:

http://marcoslin.github.io/angularAMD/


12

সংক্ষিপ্ত উত্তরটি, এটি বোধগম্য হয়। সম্প্রতি এটি এনজি-কনফিডে ২০১৪-তে আলোচিত হয়েছিল this এই বিষয়ে এখানে আলোচনা হচ্ছে:

http://www.youtube.com/watch?v=4yulGISBF8w


7

আপনি অলস লোডিং কন্ট্রোলার এবং নির্দেশিকা ইত্যাদির উপর পরিকল্পনা করেন, তবে অল্প অলস লোডিংয়ের জন্য একাধিক অলস নির্ভরতা একক স্ক্রিপ্ট ফাইলগুলিতে সংযুক্ত করার সময় এটি কৌণিক জালগুলির সাথে প্রয়োজনীয় ব্যবহারগুলি বোধগম্য হয়। প্রয়োজনীয় জেএস এর একটি অপ্টিমাইজেশন সরঞ্জাম রয়েছে যা সংমিশ্রণটিকে সহজ করে তোলে। Http://ify.io/using-requirejs-with-optimisation-for-lazy-loading-angularjs-artefacts// দেখুন


7

হ্যাঁ এঙ্গুলার সহ প্রয়োজনীয় জেএস ব্যবহার করা বোধগম্য, বেশ কয়েকটি প্রযুক্তিগত সমাধান পরীক্ষার জন্য আমি বেশ কয়েক দিন ব্যয় করেছি।

আমি সার্ভার সাইডে প্রয়োজনীয় জেএস দিয়ে একটি কৌণিক বীজ তৈরি করেছি। খুব সাধারণ একটি। আমি কোনও এএমডি মডিউল এবং এএমডি নয় শিম সংকেত ব্যবহার করি কারণ আমার মনে হয় দুটি ভিন্ন নির্ভরশীল ইনজেকশন সিস্টেমের সাথে মোকাবিলা করা খুব কঠিন।

সার্ভারে জেএস ফাইলগুলি সংযুক্ত করতে আমি গ্রান্ট এবং আর.জেএস ব্যবহার করি শিম কনফিগারেশন (নির্ভরতা) ফাইলের উপর নির্ভর করে। সুতরাং আমি আমার অ্যাপ্লিকেশনটিতে কেবল একটি জেএস ফাইল উল্লেখ করি।

আরও তথ্যের জন্য আমার গিথুব কৌণিক বীজে যান: https://github.com/matohawk/angular-seed-requirejs


3

আমি Require.js ব্যবহার এড়াতে চাই। আমি যে অ্যাপ্লিকেশনগুলি দেখেছি সেগুলি একাধিক ধরণের মডিউল প্যাটার্ন আর্কিটেকচারের গোলমাল সৃষ্টি করে। এএমডি, প্রকাশক, IIFE বিভিন্ন স্বাদে, ইত্যাদি মত চাহিদা লোড অন্যান্য উপায় আছে loadOnDemand কৌণিক গেলিক ভাষার । অন্যান্য স্টাফ যুক্ত করা কেবল আপনার কোডটি পূর্ণ ক্রাফ্টে পূর্ণ করে এবং শব্দের অনুপাতের একটি কম সংকেত তৈরি করে এবং আপনার কোডটি পড়তে শক্ত করে তোলে।


2

আমি যে পদ্ধতিটি ব্যবহার করছি তা এখানে: http://thaiat.github.io/blog/2014/02/26/angularjs-and-requirejs- for-very-large-applications/

পৃষ্ঠাটি AngularJS + RequireJS এর ​​একটি সম্ভাব্য বাস্তবায়ন দেখায়, যেখানে কোডটি বৈশিষ্ট্য এবং তারপরে উপাদান ধরণের দ্বারা বিভক্ত করা হয়।


3
এমনকি যখন লিঙ্কটি প্রশ্নের উত্তর দিতে তথ্য দেয়, পৃষ্ঠা প্রদর্শনটি কী সেরা অনুশীলন তার ব্যাখ্যা।
জুলিওসার

1

ব্রায়ান ফোর্ডের কাছ থেকে উত্তর

অ্যাঙ্গুলারজেএস এর নিজস্ব মডিউল সিস্টেম রয়েছে সাধারণত একটি আরজেএসের মতো কিছু প্রয়োজন হয় না।

তথ্যসূত্র: https://github.com/yeoman/generator-angular/issues/40


0

আমি মনে করি যে এটি আপনার প্রকল্পের জটিলতার উপর নির্ভর করে যেহেতু কৌণিকটি বেশ পরিমাণে মডিউলাইজড। আপনার নিয়ন্ত্রকরা ম্যাপ করা যায় এবং আপনি কেবলমাত্র আপনার সূচি। Html পৃষ্ঠায় সেই জাভাস্ক্রিপ্ট ক্লাস আমদানি করতে পারেন।

তবে আপনার প্রকল্পটি বড় হওয়ার ক্ষেত্রে। বা আপনি যেমন দৃশ্যের পূর্বাভাস দেন, আপনার প্রয়োজনের সাথে কৌনিক একীকরণ করা উচিত। ইন এই নিবন্ধ আপনি এই ধরনের ইন্টিগ্রেশন জন্য একটি ডেমো অ্যাপ্লিকেশন দেখতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.