আমি কখন প্রয়োজনের পরিবর্তে অটোলোড ব্যবহার করব?


30

আমি যা বুঝি requireসেগুলি থেকে কোডগুলি (মডিউলগুলির মতো কিছু) লোড করতে ব্যবহৃত হয় যদিও এটি পৃথক ফাংশনগুলিও লোড করতে পারে।

অন্যদিকে অটোল্যাড, কেবল ফাংশনগুলি নিবন্ধভুক্ত করে এবং কার্যকরকরণের সময়টিতে লোডকে পিছনে দেয় ।

আমি সম্প্রতি একটি নিবন্ধ পড়েছি যা autoloadএকচেটিয়াভাবে ব্যবহারের পক্ষে রয়েছে ।

এটা কি autoloadচেয়ে ভাল require? এগুলির প্রতিটির জন্য কিছু সাধারণ ব্যবহারের মামলাগুলি কী কী?


3
@ গিলস: এফডাব্লুআইডাব্লু, আপনার ট্যাগ autoloadএবং requireএই প্রশ্নটি সরিয়ে দেওয়ার সাথে আমি একমত নই । ট্যাগ যুক্ত librariesকরা ভাল ছিল, তবে এখন যে কেউ ট্যাগ খুঁজছেন, সে সম্পর্কে প্রশ্নগুলির জন্য autoloadবা requireএটি খুঁজে পাবেন না। এগুলি উভয়ই ইম্যাক্স-লিস্প ফাংশন যা লোকেরা অনুসন্ধান করবে। খুব খারাপ. এবং ভাবুন যে কোনও ইম্যাক্স সাইটের জন্য বাস্তবে বাস্তবে কতটা সহায়ক elispএবং libraries(স্প্যানিশ। elisp) অনুশীলন হবে: তারা ইমাসল্যান্ডে খুব বেশি পার্থক্য করে না, আমি ভীত। (তবে না, আমি তাদের রাখার এবং সেগুলি ব্যবহারের বিপক্ষে নই))
ড্র করেছেন

@ ড্র আমি প্রয়োগযোগ্য মেটা আলোচনা নিয়ে যাচ্ছি । আপনি যদি ভাবেন যে এই সাধারণ নীতিটি এখানে প্রয়োগ হয় না, দয়া করে এটি মেটাতে উত্থাপন করুন।
গিলস 2'13

1
@Gilles: সম্পন্ন । হ্যাঁ, আমি এটি পড়েছি এবং বুঝতে পেরেছিলাম যে এটি সম্ভবত আপনাকে অনুপ্রাণিত করেছিল। আমি প্রচুর সাধারণ নীতিগুলির সাথে একমত নই। এর অর্থ এই নয় যে কম্বল উপায়ে তাদের অনুসরণ করা সর্বদা টিআরটি হয়।
ড্রিউ

2
আমি ড্রয়ের সাথে একমত: যেহেতু এই প্রশ্নটি বিশেষত ব্যবহারের ক্ষেত্রে আলাদা করার বিষয়ে autoloadএবং requireআমি মনে করি যে ট্যাগগুলি ন্যায্য। আসলে, এই প্রশ্নটি [কেবল] দিয়ে লেবেল librariesকরা অতিরিক্ত-সাধারণকরণ। আমি এক ব্যবহারের জন্য require"আমার-FOOBAR-cfg", যা, নাম হিসাবে সুপারিশ ট্রিগার লোড করার জন্য, কেবল মাত্র আমার কনফিগারেশন, ধারণ করে না একটি লাইব্রেরি।
পেপ্রিকা

উত্তর:


28

autoloadএর বিকল্প নয় require। সাধারণত requireএকটি নির্দিষ্ট ফাইল লোড হয়েছে কিনা তা নিশ্চিত করতে ব্যবহৃত হয়। autoloadঅন্যদিকে ইমাসকে একটি ইঙ্গিত দেয় যাতে ফাইলটি এখনই লোড না করে কোনও ফাংশন সন্ধান করতে পারে। কেবলমাত্র অটোলয়েড ফাংশন বলা হলে সংশ্লিষ্ট ফাইল লোড হয়।

মূলত autoloadআপনি যখন প্রয়োজন তখন পুরো ফাইলটির লোডিংটি মুহুর্তে বিলম্ব করতে পারে। এই কারণেই (বিশেষত বড়) প্যাকেজগুলি সাধারণত তাদের এন্ট্রি ফাংশনগুলি autoloadগুলি হিসাবে সংজ্ঞায়িত করে ।

আপনি যদি কোনও প্যাকেজের জন্য ভারী কাস্টমাইজেশন করতে চান তবে সাধারণত আপনার ভাগ্যের বাইরে autoload। আপনি যদি এখনও এড়াতে চান requireতবে ফাইলটি লোড না করে আপনার কাস্টমাইজেশনগুলি স্থগিত করতে পারেন eval-after-load

ইমাস ম্যানুয়ালটি নিম্নলিখিত বিষয়গুলিতে এই বিষয়টি কভার করে:


2
সম্ভবত উল্লেখ করার মতো: autoloadহ'ল কমান্ড সংজ্ঞা প্রদান সম্পর্কে (কমবেশি), যাতে আপনি এই আদেশগুলি ব্যবহার করতে পারেন। একটি লাইব্রেরিতে (এবং লাইব্রেরিতে যে গ্রন্থাগারের প্রয়োজন হয়, পুনরাবৃত্তভাবে) উপলভ্য সমস্ত কিছুrequire তৈরি করা about কমান্ডের চেয়ে ইমাকের আরও অনেক কিছু আছে। (তবে হ্যাঁ, অবশ্যই একবার স্বতঃআক্ত কমান্ডটি শুরু করা হলে তার পুরো লাইব্রেরিটি লোড হয়ে যায়))
ড্র হয়েছে

4

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


3

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

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