tl; dr: পুনরায় ব্যবহারযোগ্য টেমপ্লেটকে কী আক্ষরিক করা সম্ভব?
আমি টেম্পলেট আক্ষরিক ব্যবহার করার চেষ্টা করছি কিন্তু আমার ধারণা আমি কেবল এটি পাই না এবং এখন আমি হতাশ হচ্ছি। আমার অর্থ, আমি মনে করি আমি এটি পেয়েছি তবে "এটি" কীভাবে এটি কাজ করে, বা এটি কীভাবে পাওয়া উচিত তা হওয়া উচিত নয়। এটি অন্যভাবে পাওয়া উচিত।
আমি যে সমস্ত উদাহরণ দেখি (এমনকি ট্যাগযুক্ত টেমপ্লেটগুলি) তারও দরকার যে "বিকল্পগুলি" ঘোষণার সময় করা উচিত এবং রান রান সময় নয়, যা কোনও টেমপ্লেটের জন্য আমার কাছে একেবারেই অকেজো বলে মনে হয়। হতে পারে আমি পাগল, তবে আমার কাছে একটি "টেমপ্লেট" হ'ল একটি নথিতে টোকেন রয়েছে যা আপনি যখন ব্যবহার করবেন তখন তা প্রতিস্থাপিত হয়, আপনি যখন এটি তৈরি করেন তা নয়, অন্যথায় এটি কেবল একটি দস্তাবেজ (অর্থাত্ একটি স্ট্রিং)। টোকেন হিসাবে টোকেনের সাথে একটি টেম্পলেট সংরক্ষণ করা হয় এবং যখন আপনি ... মূল্যায়ন করেন তখন সেই টোকেনগুলি মূল্যায়ন করা হয়।
প্রত্যেকে এর মতো একটি ভয়াবহ উদাহরণ উদ্ধৃত করে:
var a = 'asd';
return `Worthless ${a}!`
এটা সুন্দর, কিন্তু যদি আমি ইতিমধ্যে জানেন a
, আমি would শুধু return 'Worthless asd'
বা return 'Worthless '+a
। আলোচ্য বিষয়টি কি? সিরিয়াসলি। ঠিক আছে বিন্দুটি অলসতা; কম প্লাস, আরও পঠনযোগ্যতা। গ্রেট। তবে এটি কোনও টেম্পলেট নয়! আইএমএইচও নয়। আর এমএইচও এটাই গুরুত্বপূর্ণ! আইএমএইচও সমস্যা হ'ল টেমপ্লেটটি ঘোষণার সাথে সাথে মূল্যায়ন করা হয়, তাই আপনি যদি করেন, আইএমএইচও:
var tpl = `My ${expletive} template`;
function go() { return tpl; }
go(); // SPACE-TIME ENDS!
যেহেতু expletive
ঘোষিত হয়নি, এটি এর মতো কিছু করে My undefined template
। সুপার. আসলে, কমপক্ষে ক্রোমে, আমি এমনকি টেমপ্লেটটিও ঘোষণা করতে পারি না; এটি ত্রুটি ছুড়ে দেয় কারণ expletive
সংজ্ঞায়িত হয়নি। আমার যা প্রয়োজন তা হ'ল টেমপ্লেটটি ঘোষণার পরে প্রতিস্থাপনটি করতে সক্ষম হওয়া:
var tpl = `My ${expletive} template`;
function go() { return tpl; }
var expletive = 'great';
go(); // My great template
তবে এটি কীভাবে সম্ভব তা আমি দেখতে পাচ্ছি না, কারণ এগুলি আসলে টেম্পলেট নয়। এমনকি আপনি যখন বলছেন আমার ট্যাগ, নোপ ব্যবহার করা উচিত, তারা কাজ করে না:
> explete = function(a,b) { console.log(a); console.log(b); }
< function (a,b) { console.log(a); console.log(b); }
> var tpl = explete`My ${expletive} template`
< VM2323:2 Uncaught ReferenceError: expletive is not defined...
এগুলি আমাকে বিশ্বাস করতে পরিচালিত করেছে যে টেমপ্লেটের আক্ষরিকগুলি ভয়াবহভাবে ভুল নাম দেওয়া হয়েছে এবং তাদের আসলে কী তা বলা উচিত: বংশগত । আমি অনুমান করি যে "আক্ষরিক" অংশটি আমার সম্পর্কে অবহিত হওয়া উচিত (যেমন, স্থায়ী)?
আমি কিছু অনুপস্থিত করছি? পুনরায় ব্যবহারযোগ্য টেম্পলেটকে আক্ষরিক করার জন্য কি কোনও (ভাল) উপায় আছে?
আমি আপনাকে দিচ্ছি, পুনরায় ব্যবহারযোগ্য টেম্পলেট আক্ষরিক :
> function out(t) { console.log(eval(t)); }
var template = `\`This is
my \${expletive} reusable
template!\``;
out(template);
var expletive = 'curious';
out(template);
var expletive = 'AMAZING';
out(template);
< This is
my undefined reusable
template!
This is
my curious reusable
template!
This is
my AMAZING reusable
template!
এবং এখানে একটি নিষ্পাপ "সহায়ক" ফাংশন ...
function t(t) { return '`'+t.replace('{','${')+'`'; }
var template = t(`This is
my {expletive} reusable
template!`);
... এটি "আরও ভাল" করতে।
আমি যে অঞ্চল থেকে তারা কুঁচকে যাওয়া অনুভূতি তৈরি করে সেগুলির কারণে আমি তাদেরকে টেমপ্লেট গেটেরাল বলতে আগ্রহী।
<strike>
ট্যাগ রাখুন ।