date-fns یک مجموعه ابزار جامع و در عین حال ساده و سازگار برای کنترل تاریخ با زبان جاوااسکریپت در مرورگرها و اکوسیستم Node.js است.
date-fns ویژگیهای بسیاری دارا است که برخی از مهمترین آنها به شرح زیر است:
ماژولار
سَبکی موسوم به Function Per File وجود دارد که توابع با استفاده از فراخوانی یک فایل خاص قابل استفاده میباشند. دولوپرها با استفاده از این ویژگی میتوانند تنها تابعی را فراخوانی کنند که مورد نیازشان است و به این ترتیب پروژهٔ خود را از پیچیدگی و بزرگی و توابع بلااستفاده میرهانند. در این لایبرری ماژولهایی همچون Webpack ،Browserify و Rollup بسیار خوب عمل میکنند و همچنین این لایبرری از Tree Shaking نیز پشتیبانی میکند.
به طور کلی، Tree Shaking به کدهای نوشته شده با جاوااسکریپت اشاره دارد که فقط شامل کدهایی است که برای اجرای آن اپلیکیشن نیاز است. این ویژگی در ماهیت استاتیک ماژولهای ES2015 موجود است و کدهای بلااستفاده را در زمان ایجاد پکیج تشخیص میدهد. در این ویژگی نمیتوان در زمان اجرا ماژولهای مورد نظر را در اپلیکشین ایمپورت یا اکسپورت کرد (نسخهٔ دوم این ویژگی برای کاربران Webpack در دسترس است؛ در حال حاضر Webpack بهصورت Built-in از ماژول ES2015 و ویژگی Tree Shaking پشتیبانی میکند).
بومیسازی تاریخ
date-fns تاریخ جدیدی از خود نمیسازد و از نوع بومی و موجود آن استفاده میکند و برای حفظ ایمنی آبجکتهای اصلی را بسط نمیدهد. به طور کلی، توابع در date-fns قابل پیشبینی هستند و در موارد حساس همانند استاندارد ECMAScript رفتار میکنند.
تغییرناپذیر و اصطلاحاً Pure
date-fns با استفاده از توابع Pure ساخته شده است و همیشه بهجای تغییر تاریخ روزهای گذشته، تاریخ جدید را برمیگرداند. این ابزار از ایجاد باگها جلوگیری کرده و از سِشِنهایی که اشکالزدایی (دیباگ) آنها به طول میانجامد عبور میکند.
برخوردار از TypeScript & Flow
date-fns هر دو این ویژگیها را پشتیبانی میکند به همین دلیل همواره آپدیت هستند.
پشتیبانی از FP
در برنامهنویسی با استفاده از توابع (Functional Programming)، ماژولهای کوچک بهصورت زنجیرهای و تودرتو باهم ترکیب میشوند و این موجب میشود کد ساده و در برابر خطا ایمن باشد و اجرای آن با مشکل مواجه نشود.
پشتیبانی از زبانهای مختلف
با پشتیبانی از یک جامعهٔ بزرگ، dat-fns تاریخ دهها منطقهٔ زمانی را خواهد داشت؛ اما هیچکدام از آنها در کد موجود نیستند، مگر اینکه آن را فراخوانده و از آن استفاده کنیم.
سازگاری مدام
همیشه تاریخ همان منطقهٔ زمانی را برمیگرداند؛ بدون توجه به تاریخ روزهای گذشته، تایماستمپها، یک رشته یا یک آبجکت تاریخ. همچنین API مناسبی برای داشتن نامها و آرگومانهای قابل پیشبینی طراحی شده است.
قابلاعتماد
date-fns به منطقهٔ زمانی و مکان آن اهمیت میدهد. این بهمعنای اصطلاحاً Semantic Versioning است؛ بنابراین همواره سازگار با نسخههای قبلی است. هر CI اجرا شده بیش از 650،000 نمونه در حدود 400 منطقه زمانی را بررسی میکند (برای کسب اطلاعات بیشتر، به مقالهٔ Semantic Versioning چیست؟ مراجعه نمایید).
سادگی
با date-fns شما همیشه یک فانکشن دارید که یک کار خاص را انجام میدهد. API این لایبرری بدون ابهام است و همیشه یک رویکرد واحد برای تمامی مسائل دارد.
سرعت بالا
علاوه بر حجم کوچک، date-fns سریع هم میباشد. در صورت استفاده از این لایبرری، کاربران شما بهترین #تجربهٔ کاربری خود را خواهند داشت.
مستندات قوی
هر بخش date-fns توضیحات مفصل همراه با مثال دارد. داکیومنتهای این ابزار بهصورت آنلاین در وبسایت در دسترس دولوپرها قرار گرفته است.