💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۱۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۵ shahab sb
نوشتن helper برای تغییر دادن اندازه متن
جامعه نود جی اس ایجاد شده در ۲۸ مرداد ۱۴۰۲

سلام وقت بخیر

یه سوال در مورد helper‌ها در express-handlebars داشتم ممنون میشم راهنمایی کنید

واسه اینکه ما مقدار مشخصی از یه متن طولانی رو در یه قسمت نمایش دهیم آیا میتونیم از helper استفاده کنیم

یا باید مثل مواردی که تاریخ رو شمسی کردیم از قابلیت presented استفاده کنیم؟

سلام،

منظورتون از قابلیت presented چیه؟

محسن موحد ۲۹ مرداد ۱۴۰۲، ۱۱:۵۹

نمیشه اسمش رو گذاشت قابلیت ولی خب منظورم اینه که ما مواقعی که مثلا مقالات رو از دیتابیس میگیریم

واسه نمایش دادنشون یه سری تغییرات میدیم به عنوان مثال تاریخ ش رو شمسی میکنیم و ... و اینا رو داخل یه متغییر جدید ذخیره میکنیم

و به view پاسش میدیم

داخل دوره استاد هم استفاده کرده از این مورد توی جلسه مربوط به نمایش لیست مقالات

الان هم واسه قسمت‌های مختلف باید بیایم مثلا متن طولانی که دارن حالا یا داخل پنل مدیریت و یا داخل فرانت سایت توی بخش card که هر مقاله ای رو میذاریم

بخشی از اون متن رو نمایش بدیم .خواستم بدونم واسه اینکار helper بنویسم بهتر یا به این شکل تغییرش بدم و پاسش بدم به view؟

ممنون میشم راهنمایی کنید


shahab sb ۲۹ مرداد ۱۴۰۲، ۱۲:۱۴

بله، معمولاً به این شکل است که وقتی یک عمل خاص قراره انجام بشه و در موقعیت‌های مختلف این عمل تغییری ایجاد نمیشه و یک منطق ثابتی رو پیروی میکنه، helper‌ها مناسب خواهند بود اما وقتی منطق پیچیده‌تر میشود و براساس موقعیت‌های مختلف، خروجی‌ها تغییر میکند و داده‌های نمایشی مدل متفاوت خواهند بود استفاده از presenter مناسب خواهد بود تا منظق‌های مختلف در موقعیت‌های مختلف را روی مدل انجام دهد.


برای کوتاه سازی متن، یک وظیفه مستقل و یکسان در موقعیت‌های مختلف صورت میگیرد. بنابراین helper میتواند مناسب باشد.(یعنی فقط کوتاه سازی هر متن اعم از مقاله و ... و انجام یک کار تکراری ثابت)

اما اگر بخواهید برای متن شرایط مختلفی را در نظر بگیرید و مختص یک مدل برنامه ریزی شده اند، مثلاً در قسمتی کوتاه سازی متن رو دارید، در جای دیگر متن کامل بهمراه جزئیات مثل نویسنده، در جایی پردازش آمار یک مقاله و ... میتونید یک ArticlePresenter بعنوان کلاس در نظر بگیرید و برای تمام این موارد متد در نظر بگیرید. اهمیت این روش برای جداسازی منطق نمایش داده‌ها از منطق مدل خواهد بود.


محسن موحد ۲۹ مرداد ۱۴۰۲، ۱۲:۵۰

خیلی ممنون از راهنمایی تون

الان helper نوشتم منتها اگه بخوام این helper به صورت گلوبال باشه و در همه جا بهش دسترسی داشته باشم باید توی کدوم قسمت تعریفش کنم؟

 helpers: {
      showDisabled: function (isDisabled, options) {
        return !isDisabled ? "disabled" : "";
      },
      showStatus: function (status, options) {
        return status == "0" ? "غیر فعال" : "فعال";
      },
      showText: function (text, num, options) {
        let dots = "";
        if (text.length > num) {
          dots = "...";
        }
        return text.slice(0, num) + dots;
      },
    },

showText هلپر مربوط به کوتاه کردن یه متن

الان این رو در بیشتر کنترولر‌ها نیازش دارم باید توی کدوم قسمت از پروژه تعریفش کنم ؟

(ساختار پروژه م مث پروژه دوره هستش)


shahab sb ۲۹ مرداد ۱۴۰۲، ۱۵:۵۴

ساختار پروژه یادم نبود، ولی یک نگاه کلی انداختم.

فک میکنم نکته ی خاصی نداشته باشه و میتونید از registerHelper استفاده کنید چون بصورت گلوبال دسترسی باز خواهد بود.

نمونه مثال هاش در این لینک آمده است.

محسن موحد ۰۵ شهریور ۱۴۰۲، ۲۰:۳۵