لقد تحققت من حجم ملف المجلد ./node_modules
ويبدو أن moment.js هي أثقل مكتبة بخلاف C. 2.1 ميجا بايت عدد كبير جدًا. يظهر نظرة سريعة على حجم المجلد:
يأتي معظم الثقل من نشر إصدارات مضغوطة من moment.js npm
بالإضافة إلى النشر المزدوج لجميع اللغات. لكن المناطق وحدها ثقيلة جدًا في حد ذاتها.
على هذا النحو اعتقدت أنه قد يكون من الجيد لـ moment.js والمجتمع تقليل هذا المبلغ ؟!
./src
من النشر إلى npm
؟./min
من النشر إلى npm
؟./locales
إلى حزمة منفصلة npm
لتقليل اللحظة إلى الحد الأدنى؟يستخدم الأشخاص اللحظة بطرق مختلفة ، والإجماع العام هو أن مساحة القرص في تطبيق العقدة ليست علاوة بنفس الطريقة التي تكون بها في المتصفح.
ومع ذلك ، لست متأكدًا تمامًا مما يحدث في المجلد min
:
لست متأكدًا من سبب حاجتنا إلى moment-with-locales.min.js
في npm على الإطلاق. يكفي أن يكون لديك moment.min.js
و locales.min.js
، أليس كذلك؟
أيضًا ، لا يجب أن تكون هناك حاجة للملفات غير المصغرة في مجلد min
( locale.js
و moment-with-locales.js
).
المجلد min هو في الحقيقة مجرد تسمية خاطئة. قد يكون اسم البناء أفضل. ولكن هذا هو المكان الذي تعيش فيه ملفات اللحظة مع الإعدادات المحلية واللغات حتى نقوم بتشغيل مهمة التحديث الفهرس للإصدار.
يمكننا بالتأكيد أخذ ملفات اللحظة مع لغات من npm على وجه التحديد ، لكنني لست متأكدًا من القيمة التي توفرها.
martinheidegger ، هل يمكنك من فضلك توضيح الظروف التي يمثل فيها حجم الحزمة بأكملها مشكلة. تنمو الحزمة لأن الناس يريدون المزيد من الخيارات لاستهلاك المكتبة. إذا أردنا إزالة الأشياء التي أدرجتها ، فسنحتاج إلى نشر حزم منفصلة قليلة الحد الأدنى من بعض النواحي ، ثم نشر حزمة كبيرة تحتوي على كل شيء.
هل يمكنك إعطاء مثال بمكتبة أخرى تقطع كل شيء إلى الحد الأدنى في بعض / جميع تكوينات npm؟
تثبيت npm للوداش هو 1.4 ميجا بايت بينما يكون مصغرًا _69 كيلو بايت_ فقط
حقيقة أن "لوداش" ينشر أيضًا كل وظيفة كحزمة خاصة يؤدي فقط إلى قائمة طويلة من الحزم التي تم تثبيتها مرة أخرى ، لأنه تمت الإشارة إليها في حزمة أخرى.
عند البحث في مجلد node_modules النموذجي الذي يبلغ حجمه حوالي 300 ميجابايت ، لست متأكدًا مما إذا كان الأمر يستحق الجهد المبذول لجعل Mom.js أصغر قليلاً.
وهناك الكثير ، حدث أكبر بكثير ، وهنا بعض منها فقط
على الرغم من أنني لا أهتم حقًا بحجم حزمة npm ، إلا أنني أجد أنه من المدهش أن أقوم بتضمين 58 كيلوبايت للتواريخ التي تم التلاعب بها بطريقة عاقلة (على افتراض أنني لست بحاجة إلى مواقع محلية ، فهي أثقل بكثير) 😞
لقد سئمت من مناقشة هذا النوع من الأشياء. اعتقدت أن المساحة المنخفضة ستجعل تثبيت الحزمة الخاصة بي أسرع (وهي اللحظة الأكبر). أعتقد أنني أركض ضد طواحين الهواء. لذا: kthxbye.
martinheidegger جرب الغزل ، على الأقل يكون أكثر عقلانية من npm ويقوم بتخزين الحزمة مؤقتًا ، لذلك لا يجب أن تقضي الكثير من الوقت في التنزيلات :)
أواجه نفس المشكلة. يؤدي القيام بـ import moment from 'moment';
زيادة حجم الحزمة من 30 كيلو بايت إلى 250 كيلو بايت !!! هل يوجد حل سهل يا شباب ؟؟
@ paramsingh88 يبدو أن الخيار الوحيد هو عدم استخدامه. وجدت هذا الموضوع بسبب نفس المشكلة. يزداد حجم مشروعي بمقدار 58 كيلو بايت عن طريق إجراء moment.unix(created).format('MMMM D, YYYY')
. مجنون على الاطلاق!
أنا لا أفهم هذا الموقف:
مساحة القرص في تطبيق العقدة ليست علاوة بنفس الطريقة التي تكون بها في المتصفح.
تكمن المشكلة في أن هذه اللحظة ليست تطبيق عقدة - إنها مكتبة يمكن استخدامها إما في تطبيق الواجهة الخلفية أو في مكتبة الواجهة الأمامية. في هذه الحالة ، نعم ، أحتاج إلى استخدام Moment.js للتحقق من صحة التواريخ في الواجهة الأمامية للتطبيق قبل إرسالها إلى الواجهة الخلفية (التي تحتوي على صلاحيتها الخاصة ومنفصلة والتحقق من الصحة.)
حجم اللحظة بدون اللغات هو 50 كيلو (مصغر) ، والحجم باللغات حوالي 300 كيلو (مصغر). إذا كنت تريد أن تفعل شيئًا حيال ذلك ، فتحقق من المناقشة هنا https://github.com/moment/moment/issues/2373
وإذا كنت تستخدم مديرًا للحزم أو أيًا كان ما يجعل الحياة معقدة ، فقم بإحضارها أيضًا.
اسف هذا خطأي. (معدل)
الإجماع العام هو أن مساحة القرص في تطبيق العقدة ليست علاوة بنفس الطريقة الموجودة في المتصفح
لا أعتقد أنه يمكنك بناء تحرير جيد مع هذا النوع من العقلية.
في اللحظة التي يدرك فيها الناس أن حجم الحزمة يمثل مشكلة حقيقية ، واخترت عدم فعل أي شيء حيال ذلك ، فإن moment
قد مات.
بالنسبة لأي شخص يبحث عن بدائل خفيفة الوزن ، سيكون date-fns
اختيارًا ممتازًا.
مرحبًا ، تبلغ لحظة npm حوالي 3 ميغا بايت ، ولكن هذا يؤثر على حجم أداة تحرير lambda المضمنة. الانكماش سيساعد بالتأكيد
ينتهي استخدام هذا في تطبيق Angular gzipped ليصبح 70٪ من حجم الحزم الأصغر. سيكون رائعًا إذا استطعنا استبعاد الميزات التي لا نحتاجها في الوقت الحالي ، يتعين عليّ import * as moment from 'moment'
الحزمة بأكملها.
يضاعف moment.js حجم جزء كبير من تطبيق Angular الخاص بي:
هذا مؤلم حقًا على الأجهزة المحمولة.
silentsnooc في وقت التشغيل ، من المفترض أن تقوم بتحميل المواقع التي تحتاجها فقط. لذا فإن الشاغل الرئيسي بالنسبة لك هو التحميل البطيء لملفات locales فقط عند استخدامها.
kylekatarnls إذا كان بإمكانك عرض مثال لمن يستخدمون
مثال JSPM الوارد في المستند هنا:
https://momentjs.com/docs/#/i18n/loading -into-browser /
تعمل أيضًا مع حزمة الويب ، وأعتقد أنها يمكن أن تؤدي المهمة مع حزم أخرى.
لم تتم تجربته ، لكن هذا التعليق لديه الكثير من الإعجابات:
https://github.com/moment/moment/issues/2517#issuecomment -185836313
أعتقد أنه لم يكن من المفترض استخدام Moment.js في الواجهة الأمامية للمتصفح ولم تكن هناك خطط من المشرفين للقيام بذلك. عندما واجهتنا مشكلة مماثلة ، انتهى بنا الأمر باستخدام date-fns
في الواجهة الأمامية مع الاحتفاظ بـ minutes.js في الواجهة الخلفية. بالنسبة لمشروع جديد ، سأرى ما إذا كان يمكن استخدام date-fns
في كلا الطرفين.
demisx لست بحاجة إلى رؤية المزيد:
شكرا للتلميح. : +1: تشك أيضًا لـ xinghul الذي ذكرها أولاً.
moment.js
فقط استبدل Momjs بـ dayjs. يبدو أنه يعمل بشكل جيد لتحقيق أغراضي ويبلغ حجمه حوالي 15 كيلو بايت فقط مع الإعدادات المحلية ومجموعة المكون الإضافي fromNow. رائع.
الاختلافات في حجم حزمة تطبيقات Ionic 4 / Angular 8:
مع momentJS
: يضيف = 204 KB
مع dayJS
: يضيف = 6 KB
أنا فقط بحاجة إلى البيانات الأساسية / تنسيق الوقت والمعالجات فقط. لذلك قررت أن أذهب بـ dayJS
: https://github.com/iamkun/dayjs
أنا أيضًا أحصل على 249 كيلوبايت ، ولست متأكدًا مما إذا كان المتعاون سيفعل أي شيء حيال هذا .. الانتقال إلى date.fns
لم تتم تجربته ، لكن هذا التعليق لديه الكثير من الإعجابات:
# 2517 (تعليق)
نجح هذا بشكل جيد لكل من يبحث عن تحسين سريع.
سمحت لحظتي بالانتقال من 654.7 كيلوبايت إلى 178.4 كيلوبايت. قد يكون الأمر لا يزال كبيرًا ، لكنه تحسن.
أتمنى أن نتمكن من استيراد وظيفة كـ date-fns.
التعليق الأكثر فائدة
لا أعتقد أنه يمكنك بناء تحرير جيد مع هذا النوع من العقلية.
في اللحظة التي يدرك فيها الناس أن حجم الحزمة يمثل مشكلة حقيقية ، واخترت عدم فعل أي شيء حيال ذلك ، فإن
moment
قد مات.بالنسبة لأي شخص يبحث عن بدائل خفيفة الوزن ، سيكون
date-fns
اختيارًا ممتازًا.