9 کتابخانه برتر تاریخ و ساعت برای JavaScript

13 خرداد 1398, خواندن در 4 دقیقه

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

در اینجا، ۹ کتابخانه پرکاربرد برای کمک در دستکاری زمان را خواهید دید. ماژول‌های جداگانه هر کدام از این کتابخانه‌ها می‌تواند با استفاده از Bit (پلتفرمی که کامپوننت‌ها و ماژول‌ها را تبدیل به بلوک‌های ساخت می‌کند؛ و این بلوک‌های می‌توانند استفاده شوند، توسعه داده شوند و از هر پروژه‌ای همگام سازی (sync) شوند) به کار گرفته شوند.

1. Date-fns

Date-fns یک کتابخانه دستکاری زمان معروف (دارای 11 هزار ستاره، و بیش از نیم میلیون نصب از طریق NPM به صورت هفتگی) برای JavaScript است، که توسط بسیاری از توسعه‌دهندگان برای جایگزینی با Moment.js انتخاب شده است. Date-fns بیش از ۱۳۰ عملکرد برای دستکاری تاریخ‌ها در مرورگر و Node.js فراهم می‌کند. این کتابخانه با استفاده از توابع خالص ساخته شده است و همه چیز را تغییر ناپذیر نگه می‌دارد، و نمونه‌های تاریخ منتقل شده را تغییر نمی‌دهد. با bundlerهایی مانند Webpack، Browserify یا Rollup به خوبی کار می‌کند و از tree-shaking نیز پشتیبانی می‌کند. همچنین می‌تواند با Bit ترکیب شود و هر عملکرد را به صورت تکی قابل نصب، استفاده و تغییر کند.

2. Moment

Moment.js یک کتابخانه دستکاری زمان به خوبی شناخته شده، پر استفاده و به گونه‌ای سنگین است که برای کار کردن هم در مرورگر و هم در Node.js طراحی شده است. Moment.js دارای حدود 40 هزار ستاره می‌باشد و به شما در parse کردن، اعتبارسنجی، دستکاری و نمایش تاریخ‌ها در JavaScript کمک می‌کند. دقت کنید که خود آبجکت Moment قابل تغییر است، پس عملیات‌های مختلف، آبجکت Moment اصلی را تغییر می‌دهند.

3. Luxon

Luxon که توسط یکی از نگهداران Moment ساخته شده است، یک کتابخانه JavaScript دارای 6 هزار و 500 ستاره، برای کار کردن با تاریخ و زمان، با یک رابط جامع است. بر خلاف Moment، آبجکت‌های Luxon غیر قابل تغییر هستند، پس اعمال تغییرات، در واقع یعنی ساخت نمونه‌ای جدید با ویژگی‌های مختلف.

4. Day JS

Day JS با داشتن تقریبا 12 هزار ستاره، یک کتابخانه ۲ کیلوبایتی، جایگزین Moment.js با یک API مشابه است. این کتابخانه در parse کردن، اعتبارسنجی،‌ دستکاری و نمایش تاریخ‌ها و زمان‌ها به شما کمک می‌کند، و همچنین غیر قابل تغییر است. به جای تغییر دادن Date.prototype، این کتابخانه یک wrapper برای آبجکت Date می‌سازد، که Dayjs نام دارد. تمام عملیات‌های API که آبجکت Dayjs را تغییر می‌دهند، به گونه‌ای یک نمونه‌ جدید از آن را بر می‌گردانند.

5. Ms.js

Ms.js یک کتابخانه کوچک، اما تحسین برانگیز است که قالب‌های مختلف زمان را به میلی ثانیه تبدیل می‌کند. این کتابخانه همچنین به صورت بر عکس نیز کار می‌کند، و میلی ثانیه را به قالب‌های زمان خوانا تبدیل می‌کند. Ms.js هم با مرورگر و هم با Node.js کار می‌کند.

6. Timeago.js

Timeago یک کتابخانه 2 کیلوبایتی است که یک کار پر استفاده را انجام می‌دهد: تبدیل قالب‌های زمان، جهت نمایش این که از آن زمان مورد نظر تا به حال، چقدر گذشته است. این کتابخانه به هیچ‌گونه Dependency نیاز ندارد.

7. Instadate

Instadate یک کتابخانه کوچک با تعداد زیادی امکانات، و دارای فقط 800 ستاره است. Instadate بیشتر یک wrapper برای تاریخ‌های JavaScript است، تا یک کتابخانه کامل. این کتابخانه می‌تواند هزاران تاریخ و ساعت را در ثانیه دستکاری کند و هم با ES5 و هم با ES6 کار می‌کند. Instadate تعدادی Dependency مانند lodash.difference را به همراه خود دارد.

8. JS-Joda

JS-Joda یک کتابخانه تاریخ و زمان غیر قابل تغییر برای JavaScript، با یک API تحت فرمان دامنه بر پایه تاریخ ISO8601 است. خاص بودن آن، در این است که آبجکت تاریخ JavaScript را wrap نمی‌کند؛ بلکه در عوض، یک پیاده‌سازی تاریخ و زمان مستقل است. این کتابخانه هیچ‌گونه خارجی ندارد.

9. Spacetime

گاهی اوقات، این یک کتابخانه منطقه زمانی JavaScript سبک است که می‌خواهید؛ تا بتوانید با وجود حجم کم آن، محاسبات پیچیده انجام دهید و با منطقه‌های زمانی کار کنید، که همگی این موارد با یک API مشابه به Moment باشد و هیچ‌گونه Dependency نیاز نداشته باشد.

موارد دیگر که بهتر است بشناسید:

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

منبع

چه امتیازی به این مقاله می دید؟
خیلی بد
بد
متوسط
خوب
عالی

دیدگاه‌ها و پرسش‌ها

برای ارسال دیدگاه لازم است، ابتدا وارد سایت شوید.

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

آفلاین
user-avatar
عرفان کاکایی @er79ka
دنبال کردن

گفتگو‌ برنامه نویسان

بخشی برای حل مشکلات برنامه‌نویسی و مباحث پیرامون آن وارد شو