چارچوب یا کتابخانه جاوا اسکریپت را انتخاب کنید

این مقاله اطلاعاتی درباره نحوه انتخاب کتابخانه یا چارچوب برای استفاده در برنامه وب ارائه می‌دهد. بحث‌های مطرح‌شده در اینجا به شما کمک می‌کند تا مزایا و معایب را در یافتن کتابخانه یا چارچوب جاوا اسکریپت مناسب برای مشکل کسب‌وکاری که می‌خواهید حل کنید، بسنجید. درک اینکه کدام مزایا و معایب در موقعیت‌های مختلف اعمال می‌شوند، کلید بررسی تعداد زیادی از انتخاب‌های کتابخانه جاوا اسکریپت است که دردسترس هستند.

چارچوب‌ها و کتابخانه‌های جاوا اسکریپت چیست

کتابخانه جاوا اسکریپت چیست؟ در ساده‌ترین شکل، کتابخانه جاوا اسکریپت کدی ازپیش‌نوشته‌شده است که می‌توانید آن را در کد پروژه‌تان فراخوانی کنید تا کار خاصی را انجام دهید.

این پست عمدتاً به «کتابخانه‌ها» اشاره می‌کند. بااین‌حال، بسیاری از این بحث‌ها برای چارچوب‌ها نیز قابل‌اجرا هستند. اساساً تفاوت بین این دو را می‌توان به‌صورت زیر خلاصه کرد:

  • برای کتابخانه، کد برنامه شما کد کتابخانه را فراخوانی می‌کند.
  • برای چارچوب، کد برنامه شما توسط چارچوب فراخوانی می‌شود.

مثال‌های کاربردی زیر به توضیح تفاوت‌ها کمک می‌کند.

نمونه فراخوانی به کتابخانه جاوا اسکریپت

کتابخانه جاوا اسکریپت تکلیف خاصی را انجام می‌دهد و سپس کنترل را به برنامه شما برمی‌گرداند. وقتی از کتابخانه استفاده می‌کنید، جریان برنامه را کنترل می‌کنید و انتخاب می‌کنید که چه زمانی با کتابخانه تماس بگیرید.

در مثال زیر، کد برنامه روشی را از کتابخانه lodash وارد می‌کند. پس‌از تکمیل عملکرد، کنترل به برنامه شما برگردانده می‌شود.

import capitalize from 'lodash.capitalize';
capitalize('hello'); // Hello

وقتی روش lodash.capitalize اجرا می‌شود، کد جاوا اسکریپت ازپیش نوشته‌شده‌ای را فراخوانی می‌کند که اولین نویسه رشته را با حروف بزرگ می‌نویسد.

نمونه استفاده از چارچوب جاوا اسکریپت

چارچوب جاوا اسکریپت یک الگوی کد ازپیش تعریف‌شده است که در آن رفتار برنامه‌تان را می‌سازید. یعنی وقتی از چارچوب استفاده می‌کنید، چارچوب جریان برنامه را کنترل می‌کند. برای استفاده از چارچوب، کد برنامه سفارشی‌تان را می‌نویسید و سپس چارچوب کد برنامه‌تان را فراخوانی می‌کند.

مثال زیر تکه‌کدی را نشان می‌دهد که از چارچوب جاوا اسکریپت Preact استفاده می‌کند:

import { createElement } from 'preact';

export default function App() {
  return (
    <p class="big">Hello World!</p>
  )
}

در این مثال، توجه کنید که چارچوب کنترل بسیار بیشتری بر کدی که می‌نویسید دارد و در برخی موارد، چارچوب حتی کنترل زمان اجرای کد شما را نیز برعهده می‌گیرد.

چرا باید از کتابخانه استفاده کرد؟

استفاده از کتابخانه جاوا اسکریپت می‌تواند به جلوگیری از تکرار غیرضروری کد کمک کند. کتابخانه‌ها می‌توانند منطق پیچیده را، مانند دستکاری تاریخ یا محاسبات مالی، انتزاعی کنند. کتابخانه همچنین می‌تواند به شما کمک کند محصول اولیه خود را عرضه کنید، به‌جای اینکه مجبور باشید همه کدها را از ابتدا بنویسید که می‌تواند زمان‌بر باشد.

برخی‌از کتابخانه‌های جاوا اسکریپت سمت کارخواه به انتزاعی کردن ویژگی‌های عجیب پلاتفرم وب کمک می‌کنند. کتابخانه می‌تواند به‌عنوان ابزار یادگیری هم عمل کند. برای مثال، اگر با توابع هموارسازی پویانمایی آشنا نیستید، کد منبع کتابخانه می‌تواند به شما آموزش دهد که این هموارسازی‌ها چگونه کار می‌کنند.

برخی‌از کتابخانه‌ها توسط شرکت‌های بزرگی پشتیبانی می‌شوند که برای به‌روز و ایمن نگه داشتن کتابخانه‌ها وقت و هزینه صرف می‌کنند. بسیاری‌از کتابخانه‌ها با اسناد گسترده‌ای همراه هستند که به شما و تیمتان کمک می‌کند به‌سرعت با نحوه استفاده از کتابخانه آشنا شوید.

درنهایت، استفاده از کتابخانه جاوا اسکریپت باعث صرفه‌جویی در زمان شما می‌شود.

چرا باید به استفاده از کتابخانه اهمیت دهید؟

ازنظر فنی، می‌توانید برنامه وب خود را از ابتدا توسعه دهید، اما چرا وقتی می‌توانید از نرم‌افزار رایگان (متن‌باز) استفاده کنید یا راهکاری را خریداری کنید که در درازمدت می‌تواند در زمان و هزینه صرفه‌جویی کند، خود را به دردسر بیندازید؟ تعداد زیادی کتابخانه و چارچوب جاوا اسکریپت دردسترس است که هرکدام رویکردی منحصربه‌فرد برای حل مشکلات ارائه می‌دهند و هرکدام ویژگی‌های متفاوتی دارند. برای مثال:

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

همان‌طور که احتمالاً حدس می‌زنید، ویژگی‌های مختلف می‌توانند به روش‌های مختلفی بر برنامه وب شما تأثیر بگذارند. گاهی اوقات، تصمیم‌گیری چندان پیچیده نیست و اگر از کتابخانه‌ای خوشتان نیامد، می‌توانید به‌راحتی آن را عوض کنید. بااین‌حال، گاهی‌اوقات یک کتابخانه می‌تواند تأثیر قابل‌توجهی بر کار و برنامه وب شما داشته باشد، که نشان می‌دهد ممکن است رویکرد آگاهانه‌تری لازم باشد.

برخی محیط‌های جاوا اسکریپت غیرسمت کارخواه وجود دارند، مانند محیط‌های سمت سرور (اجرا در محیط ابری) یا روی Raspberry Pi، که ممکن است نیاز باشد معیارهای مورداستفاده برای بررسی کتابخانه‌ها و چارچوب‌ها را تنظیم کنید.

عملکرد

تأثیر عملکرد کتابخانه جاوا اسکریپت بر برنامه وب سمت کارخواه نباید نادیده گرفته شود. کتابخانه بزرگ جاوا اسکریپت می‌تواند عملکرد بارگیری صفحه‌تان را مختل کند؛ به‌یاد داشته باشید که میلی‌ثانیه‌ها میلیون‌ها می‌سازند.

سناریویی را درنظر بگیرید که در آن از کتابخانه جاوا اسکریپت برای پویانمایی استفاده می‌کنید. برخی‌از کتابخانه‌ها می‌توانند به‌راحتی ده‌ها کیلوبایت و در برخی موارد حتی صدها کیلوبایت اضافه کنند. منابع جاوا اسکریپت مانند این می‌توانند تأخیر قابل‌توجهی در بار کردن صفحه شما ایجاد کنند زیرا مرورگر باید کد را بارگیری، تجزیه، کامپایل و اجرا کند.

هرچه کتابخانه «جاوا اسکریپت» بزرگ‌تر باشد، تأثیر عملکرد بر کاربران شما بیشتر خواهد بود.

هنگام ارزیابی یا استفاده از چارچوب یا کتابخانه جاوا اسکریپت، پیشنهادهای زیر را برای بهبود عملکرد درنظر بگیرید:

  • اگر کتابخانه جاوا اسکریپت بزرگ است، از جایگزین کوچک‌تری استفاده کنید. برای مثال، date-fns در مقایسه با برخی گزینه‌های دیگر، قابلیت‌های زیادی را با اندازه معقول‌تری ارائه می‌دهد.
  • به‌دنبال مثال قبلی date-fns، فقط توابعی را که نیاز دارید وارد کنید، مانند: import { format } from 'date-fns'. حتماً این رویکرد را با تکان دادن درخت ترکیب کنید تا حداقل بار داده جاوا اسکریپت ساخته و برای کاربران ارسال شود.
  • از ابزارهای آزمایش عملکرد مانند Lighthouse برای مشاهده تأثیر عملکرد استفاده از یک کتابخانه جاوا اسکریپت خاص استفاده کنید. اگر کتابخانه‌ای یک ثانیه تأخیر به زمان بار کردن صفحه‌تان اضافه می‌کند (فراموش نکنید که درطول آزمایش، شبکه و CPU را محدود کنید)، ممکن است لازم باشد کتابخانه انتخابی‌تان را دوباره ارزیابی کنید. علاوه‌بر بررسی بارگیری صفحه، حتماً هر رفتار صفحه وب را که کد را از کتابخانه موردنظر فراخوانی می‌کند نمایه کنید—عملکرد بارگیری صفحه کل داستان را نمی‌گوید.
  • اگر نویسنده کتابخانه از نظرات استقبال می‌کند، مشاهدات عملکرد، پیشنهادها، و حتی مشارکت‌های خود را به پروژه ارسال کنید. اینجا جایی است که انجمن متن‌باز می‌درخشد! اگر تصمیم به مشارکت دارید، ممکن است لازم باشد ابتدا با کارفرمایتان مشورت کنید.
  • از ابزار خودکار ردیابی بسته، مثل bundlesize، برای نظارت بر به‌روزرسانی‌های بزرگ غیرمنتظره در کتابخانه استفاده کنید. معمولاً کتابخانه جاوا اسکریپت با گذشت زمان رشد می‌کند. افزودن ویژگی، رفع اشکال، موارد حاشیه‌ای، و غیره همگی می‌توانند به اندازه فایل کتابخانه اضافه کنند. وقتی شما/ تیمتان با استفاده از کتابخانه موافقت کردید، به‌روزرسانی کتابخانه ممکن است مشکل کمتری داشته باشد و سؤالات کمی ایجاد کند یا اصلاً سؤالی ایجاد نکند. اینجا است که تکیه بر خودکارسازی مفید است.
  • الزامات خود را برای یک کتابخانه بررسی کنید و ارزیابی کنید که آیا پلتفرم وب همان عملکرد را به‌صورت بومی ارائه می‌دهد یا خیر. برای مثال، پلاتفرم وب ازقبل انتخاب‌گر رنگ ارائه می‌دهد که نیاز به استفاده از کتابخانه جاوا اسکریپت طرف سوم را برای پیاده‌سازی همان عملکرد برطرف می‌کند.

امنیت

استفاده از ماژول طرف سوم با برخی خطرات امنیتی ذاتی همراه است. یک بسته مخرب در پایگاه کد برنامه وب شما می‌تواند امنیت تیم توسعه و کاربران شما را به‌خطر بیندازد.

کتابخانه‌ای را درنظر بگیرید که در بوم‌سازگان NPM منتشر شده است. چنین بسته‌ای ممکن است قانونی باشد. اما با گذشت زمان، ممکن است بسته درمعرض خطر قرار گیرد.

در اینجا چند نکته امنیتی برای درنظر گرفتن هنگام استفاده یا ارزیابی کد شخص ثالث آورده شده است:

  • اگر از GitHub استفاده می‌کنید، پیشنهادهای امنیتی کد، مانند Dependabot، را درنظر بگیرید. یا از سرویس‌های جایگزینی که کد شما را برای یافتن آسیب‌پذیری‌ها اسکن می‌کنند، مانند snyk.io، استفاده کنید.
  • استفاده از سرویس‌های ممیزی کد را مدنظر قرار دهید، تیمی از مهندسان که می‌توانند کد شخص ثالثی را که استفاده می‌کنید به‌صورت دستی ممیزی کنند.
  • ارزیابی کنید که آیا باید وابستگی‌هایتان را به نسخه خاصی قفل کنید یا کد طرف سوم را در کنترل نسخه خود ثبت کنید. این کار می‌تواند به قفل کردن وابستگی شما به یک نسخه خاص کمک کند—که احتمالاً ایمن تلقی می‌شود. ازقضا، این کار می‌تواند تأثیر معکوسی بر امنیت داشته باشد، زیرا ممکن است به‌روزرسانی‌های حیاتی کتابخانه را ازدست بدهید.
  • صفحه اصلی پروژه یا صفحه GitHub را (درصورت وجود) اسکن کنید. بررسی کنید که آیا مشکلات امنیتی حل‌نشده‌ای وجود دارد یا نه، و آیا مشکلات امنیتی قبلی در چارچوب زمانی معقولی حل شده‌اند یا نه.
  • کد طرف سومی که از کد طرف سوم دیگری استفاده می‌کند می‌تواند خطر بیشتری نسبت‌به کتابخانه‌ای داشته باشد که هیچ وابستگی‌ای ندارد. مراقب این خطر باشید.

دسترس‌پذیری

شاید برایتان سؤال باشد که کتابخانه‌های نرم‌افزار چه ارتباطی با دسترس‌پذیری وب دارند. درحالی‌که از کتابخانه نرم‌افزار می‌توان در محیط‌های مختلف استفاده کرد، در زمینه کتابخانه مبتنی بر جاوا اسکریپت سمت کارخواه، دسترس‌پذیری وب از اهمیت بالایی برخوردار است.

کتابخانه (یا چارچوب) مبتنی بر جاوا اسکریپت در سمت کارخواه می‌تواند دسترس‌پذیری وب‌سایت شما را افزایش یا کاهش دهد. یک کتابخانه جاوا اسکریپت شخص ثالث را درنظر بگیرید که یک لغزنده تصویر به صفحه اضافه می‌کند. اگر لغزنده تصویر دسترسی‌پذیری وب را درنظر نگیرد، شما به‌عنوان توسعه‌دهنده وب ممکن است چنین ویژگی مهمی را نادیده بگیرید و محصولی را منتشر کنید که ویژگی‌های مهمی را ندارد، مثلاً لغزنده با صفحه‌کلید قابل‌پیمایش نباشد!

  • آیا افزونه تایپوگرافی واکنش‌گرا از کاربرانی که صفحه را زوم‌پیش یا زوم‌پس می‌کنند پشتیبانی می‌کند؟
  • آیا افزونه بارگذارنده فایل از بارگذاری فایل از دستگاه‌های کمکی پشتیبانی می‌کند؟
  • آیا کتابخانه پویانمایی از کاربرانی که حرکت کاهش‌یافته را ترجیح می‌دهند پشتیبانی می‌کند؟
  • آیا افزونه نقشه‌های تعاملی از استفاده فقط با صفحه‌کلید پشتیبانی می‌کند؟
  • آیا کتابخانه پخش‌کننده صوتی تجربه مناسبی در صفحه‌خوان‌ها ارائه می‌دهد؟

منطقی است که انتظار داشته باشیم برای برآورده کردن این الزامات دسترس‌پذیری، به سطحی از مشارکت شما به‌عنوان توسعه‌دهنده وب نیاز باشد. برای مثال:

  • برای هر ویژگی‌ای که وجود ندارد، می‌توانید آن ویژگی را در پایگاه کد خود پیاده‌سازی کنید، حتی درحالی‌که همچنان از کتابخانه موردنظر استفاده می‌کنید.
  • با پشتیبانی کارفرمایتان، می‌توانید چنین ویژگی مفقودی را به کتابخانه اضافه کنید، البته اگر نویسنده کتابخانه اجازه چنین مشارکتی را بدهد.
  • می‌توانید با نویسنده کتابخانه گفتگو کنید. برای مثال، آیا این ویژگی‌های دسترس‌پذیری خاص در نقشه راه شما وجود دارد؟ آیا موافقید که این عکس‌ها به کتابخانه تعلق دارند؟
  • برای موارد استفاده رایج، می‌توانید گزینه‌های کتابخانه جایگزین را که دردسترس‌تر هستند کاوش کنید؛ ممکن است وجود داشته باشند اما پیدا کردن آن‌ها سخت‌تر باشد.
  • در موارد شدید، ممکن است لازم باشد کتابخانه‌ای را کاملاً کنار بگذارید و ویژگی‌هایتان را از ابتدا پیاده‌سازی کنید. این اتفاق زمانی می‌افتد که یک کتابخانه یا چارچوب در اولین استفاده، تجربه دسترس‌پذیری ضعیفی داشته باشد و شما مجبور شوید بسیاری از چیزهایی را که کتابخانه یا چارچوب ظاهراً به‌طور رایگان به شما ارائه می‌دهد، لغو کنید.

همایش‌ها

کار کردن با کتابخانه نرم‌افزاری که از قراردادهای کدنویسی تثبیت‌شده استفاده می‌کند آسان‌تر است. اگر کتابخانه‌ای از قرارداد کدنویسی ناشناخته‌ای استفاده کند، ممکن است کار با چنین کتابخانه‌ای برای شما و تیمتان دشوار باشد.

اگر کتابخانه‌ای از قراردادهای کدنویسی رایج (برای مثال، راهنمای سبک رایج) پیروی نکند، کار زیادی نمی‌توانید برای رفع فوری آن انجام دهید. بااین‌حال، هنوز چند گزینه وجود دارد:

  • حتماً بین کد منبع کتابخانه و میانای برنامه‌سازی کاربردی که برای شما (کاربر کتابخانه) نمایان است تمایز قائل شوید. اگرچه کد منبع داخلی ممکن است از قراردادهای ناآشنا استفاده کند، اما اگر میانای برنامه‌سازی کاربردی (بخشی از کتابخانه که با آن تعامل دارید) از قراردادهای آشنا استفاده کند، ممکن است جای نگرانی نباشد.
  • اگر میانای برنامه‌سازی کاربردی کتابخانه از قراردادهای کدنویسی رایج پیروی نمی‌کند، می‌توانید از الگوی طراحی جاوااسکریپت، مانند الگوی پراکسی، برای بسته‌بندی و گنجاندن همه تعاملات با کتابخانه در یک فایل واحد در پایگاه کد استفاده کنید. سپس پراکسی شما می‌تواند میانای برنامه‌سازی کاربردی شهودی‌تری را به بخش‌های دیگر کد در پایگاه کد شما ارائه دهد.

قراردادها نقش مهمی در سهولت استفاده دارند. کتابخانه‌ای که شامل میانای برنامه‌سازی کاربردی شهودی است می‌تواند درمقایسه با میانای برنامه‌سازی کاربردی غیرشهودی که برای درک آن به آزمایش‌های زیادی نیاز است، در زمان افراد صرفه‌جویی کند و ساعت‌ها یا حتی روزها در وقت آن‌ها صرفه‌جویی کند.

به‌روزرسانی‌ها

به‌عنوان مثال، برای کتابخانه‌ای که کاملاً کار می‌کند و چند محاسبه ریاضی انجام می‌دهد، چنین کتابخانه‌ای ممکن است به‌ندرت به به‌روزرسانی نیاز داشته باشد. درواقع، کتابخانه کامل ازنظر ویژگی در دنیای همیشه درحال تغییر توسعه وب به‌ندرت پیدا می‌شود! اما گاهی اوقات می‌خواهید نویسنده کتابخانه پاسخگو باشد و مایل به انجام به‌روزرسانی باشد. پژوهش‌ها و یافته‌های جدید می‌توانند روش‌های بهتری برای انجام کارها نشان دهند، بنابراین تکنیک‌های مورداستفاده در کتابخانه‌ها و چارچوب‌ها همیشه درمعرض تغییر هستند.

هنگام انتخاب کتابخانه یا چارچوب، به نحوه مدیریت به‌روزرسانی‌ها توجه کنید و آگاه باشید که چنین تصمیماتی می‌تواند بر شما تأثیر بگذارد:

  • آیا کتابخانه برنامه زمانی انتشار معقولی دارد؟ برای مثال، به‌روزرسانی‌های مخزن کد منبع ممکن است به‌طور مکرر اتفاق بیفتد، اما اگر چنین به‌روزرسانی‌هایی به‌طور مناسب «منتشر» یا «عرضه» نشوند، ممکن است بارگیری چنین به‌روزرسانی‌هایی دشوار باشد.
  • آیا کتابخانه به‌روزرسانی‌ها را با طرح نسخه‌بندی نرم‌افزار معقولی منتشر می‌کند؟ کتابخانه باید در وقت شما صرفه‌جویی کند. اگر مجبور باشید هربار که نسخه کتابخانه را به‌روز می‌کنید کدتان را به‌طور غیرمنتظره‌ای تغییر دهید، این کار ممکن است هدف استفاده از آن کتابخانه را در وهله اول ازبین ببرد. تغییرات اساسی گاهی اجتناب‌ناپذیر هستند، اما در دنیای ایده‌آل، تغییرات به‌ندرت اتفاق می‌افتند و به مصرف‌کنندگان کتابخانه تحمیل نمی‌شوند.
  • آیا کتابخانه برای سازگاری با نسخه قدیمی تلاش می‌کند؟ گاهی اوقات، به‌روزرسانی‌های نرم‌افزار می‌توانند با تغییرات اساسی همراه باشند، اما لایه‌ای از سازگاری با نسخه قدیمی را نیز ارائه می‌دهند. این کار به مصرف‌کننده کتابخانه اجازه می‌دهد از جدیدترین نسخه کتابخانه با حداقل تغییرات در کد خود استفاده کند.

صدور پروانه

صدور پروانه نرم‌افزار جنبه مهمی از استفاده از کتابخانه‌های نرم‌افزار طرف سوم است. نویسنده کتابخانه ممکن است پروانه‌ای را به کتابخانه‌اش اختصاص دهد. اگر قصد استفاده از کتابخانه را دارید، انتخاب پروانه آن‌ها ممکن است بر شما تأثیر بگذارد.

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

اگر شک دارید، بهتر است از مشاوره حقوقی حرفه‌ای استفاده کنید یا موضوع را به تیم حقوقی شرکتتان ارجاع دهید.

انجمن

کتابخانه یا چارچوبی که انجمن بزرگی از کاربران/همیاران دارد می‌تواند مفید باشد، اما این تضمینی نیست. به‌طور کلی، هرچه کتابخانه یا چارچوب کاربران بیشتری داشته باشد، احتمال بهره‌مندی آن بیشتر است. مزایا و معایب زیر را برای مشارکت در انجمن توسعه درنظر بگیرید:

طرفداران:

  • پایگاه کاربر بزرگ می‌تواند به این معنی باشد که احتمال شناسایی زودهنگام و مکرر اشکالات بیشتر است.
  • یک انجمن فعال بزرگ می‌تواند به معنای آموزش‌ها، راهنماها، ویدیوها و حتی دوره‌های بیشتر در کتابخانه یا چارچوب مورد نظر باشد.
  • یک انجمن فعال بزرگ می‌تواند به معنای پشتیبانی بیشتر در تالارهای گفتمان و وب‌سایت‌های پرسش و پاسخ باشد و احتمال پاسخ به سؤالات پشتیبانی را افزایش دهد.
  • انجمن فعال می‌تواند به معنای همیاران خارجی بیشتر برای کتابخانه یا چارچوب باشد. آن‌ها می‌توانند به ارائه ویژگی‌هایی کمک کنند که درغیراین‌صورت در نقشه راه نویسنده نیستند.
  • وقتی کتابخانه یا چارچوبی در انجمنی محبوب باشد، احتمال اینکه همتایان و همکارانتان درباره آن کتابخانه یا چارچوب شنیده باشند یا حتی با آن آشنا باشند بیشتر است.

مخالفان:

  • پروژه‌ای با پایگاه کاربر بزرگ و متنوع ممکن است به‌دلیل افزودن مداوم ویژگی‌ها بیش‌ازحد بزرگ و پیچیده شود. کتابخانه‌های متورم می‌توانند به عملکرد وب آسیب برسانند.
  • پروژه‌ای با انجمن فعال و مشارکت‌کننده می‌تواند برای نویسندگان و نگهدارندگان استرس‌زا باشد و ممکن است به تعدیل‌گری سنگین انجمن نیاز داشته باشد.
  • پروژه‌ای که به‌سرعت رشد می‌کند اما پشتیبانی مناسبی ندارد ممکن است نشانه‌هایی از داشتن انجمن مخرب را نشان دهد. به‌عنوان مثال، توسعه‌دهندگان وب مبتدی یا تازه‌کار ممکن است به‌دلیل دروازه‌بانی احساس کنند در انجمن خاصی از آن‌ها استقبال نمی‌شود.

اسناد

مهم نیست که چارچوب یا کتابخانه جاوا اسکریپت چقدر ساده یا پیچیده باشد، مستندات نرم‌افزار همیشه می‌تواند کمک کند. حتی توسعه‌دهندگان بسیار باتجربه هم به‌جای اینکه خودشان کد را بفهمند، از اسناد استفاده می‌کنند. مستندات مشخص می‌کند که از کدام میانای برنامه‌سازی کاربردی باید استفاده کنید و چگونه باید از آن استفاده کنید.

اسناد حتی می‌توانند کد نمونه ارائه دهند تا شروع سریع کار برای شما آسان‌تر شود. هنگام ارزیابی کتابخانه یا چارچوب، می‌توانید برخی‌از این سؤالات را بپرسید:

  • آیا کتابخانه شامل مستندات است؟ اگر این‌طور نیست، باید بتوانید به‌راحتی خودتان مسائل را حل کنید.
  • آیا اسناد واضح، قابل‌فهم، و بدون ابهام است؟ بسیاری‌از توسعه‌دهندگان زمان زیادی را صرف مستندسازی می‌کنند. شاید کوچک به‌نظر برسد، اما شفافیت در اسناد نوشتاری می‌تواند تأثیر زیادی بر بهره‌وری شما داشته باشد.
  • آیا اسناد کاملاً به‌طور خودکار تولید می‌شوند؟ درک چنین مستنداتی می‌تواند دشوارتر باشد و همیشه راهنمایی واضحی درباره نحوه استفاده از میانای برنامه‌سازی کاربردی ارائه نمی‌دهد.
  • آیا اسناد به‌روز است؟ گاهی‌اوقات به نگهداری اسناد به‌عنوان یک موضوع ثانویه نگاه می‌شود. اگر کتابخانه به‌روز شود اما مستندات به‌روز نشود، این امر می‌تواند منجر به اتلاف وقت توسعه شود.
  • آیا مستندات جامع است و در قالب‌های مختلف دردسترس است؟ راهنماهای کاربر، کد نمونه، اسناد مرجع، نسخه‌های نمایشی زنده، و آموزش‌ها همگی قالب‌های اسناد ارزشمندی هستند که می‌توانند به شما کمک کنند در استفاده از کتابخانه یا چارچوب موفق باشید.

اسناد همیشه نمی‌توانند کامل باشند و این اشکالی ندارد. باید نیازهای سازمان، الزامات پروژه، و پیچیدگی نرم‌افزارتان را ارزیابی کنید و از آن برای تعیین سطح مستندسازی موردنیازتان استفاده کنید.

نتیجه‌گیری

طبیعی است که هنگام انتخاب کتابخانه یا چارچوب برای اولین‌بار احساس درماندگی کنید. درست مثل هر چیز دیگری، هرچه بیشتر یاد بگیرید و تمرین کنید، در آن کار بهتر می‌شوید. دفعه بعد که می‌خواهید کتابخانه یا چارچوبی را برای استفاده انتخاب کنید، شاید مراجعه به این پست مفید باشد. می‌توانید از عنوان‌های این پست به‌عنوان بازبینه استفاده کنید. برای مثال: آیا این کتابخانه عملکرد خوبی دارد؟ آیا این کتابخانه استانداردهای کسب‌وکار من را برای دسترس‌پذیری وب برآورده می‌کند؟

جنبه‌های دیگری از کتابخانه‌ها و چارچوب‌ها وجود دارد که ممکن است بخواهید درنظر بگیرید و در این پست به‌طور گسترده مورد بحث قرار نگرفته‌اند:

  • توسعه‌پذیری: توسعه کتابخانه با منطق و/یا رفتار سفارشی چقدر آسان است؟
  • ابزارها: درصورت وجود، آیا کتابخانه ابزارهایی مانند افزایه‌های ویرایشگر کد، ابزارهای اشکال‌زدایی، و افزایه‌های سیستم ساخت دارد؟
  • معماری: کد تمیز مهم است، اما آیا معماری کلی کتابخانه معقول است؟
  • آزمایش‌ها: آیا پروژه مجموعه آزمون دارد؟ آیا وب‌سایت پروژه از نشان‌ها یا شاخص‌هایی استفاده می‌کند که مجموعه آزمون درمقابل جدیدترین ثبت با موفقیت انجام می‌شود؟
  • سازگاری: آیا کتابخانه با سایر کتابخانه‌ها و/یا چارچوب‌هایی که درحال‌حاضر استفاده می‌کنید به‌خوبی کار می‌کند؟
  • هزینه: هزینه چارچوب چقدر است؟ آیا متن‌باز است یا برای خرید دردسترس است؟
  • سنجه‌های ظاهری: این سنجه‌ها باید در پایین فهرست معیارهای شما قرار بگیرند یا حتی کاملاً نادیده گرفته شوند، اما ممکن است بخواهید «رأی‌های» پروژه، حساب‌های رسانه‌های اجتماعی که پروژه را نشان می‌دهند، و/یا تعداد اشکال‌ها/مشکلات باز در صفحه پروژه را درنظر بگیرید.