التحول إلى صيغة فئة الأصلية في JavaScript في السيمات والإضافات

على مدى السنوات القليلة الماضية، كنا نبتعد عن صيغة Ember القديمة .extend({ ... }) ونتجه نحو صيغة الفئات الأصلية مثل class extends Foo {...}.

بينما لا تزال الصيغة القديمة مدعومة تقنيًا، فإن أدوات JavaScript الحديثة بما في ذلك بيئات التطوير المتكاملة، و Prettier 3.0، لا تدعم المُزخرفات في الصيغ القديمة المستندة إلى كائنات حرفية. في أحدث إصدار من تكوين التحليل الموصى به لدينا، سترى هذه الأخطاء عند استخدام الصيغة القديمة:

ESLint: error يجب استخدام فئات JavaScript الأصلية بدلاً من الفئات الكلاسيكية ember/no-classic-classes

Prettier: SyntaxError: لا يمكن استخدام المُزخرفات لتزيين خصائص الكائنات الحرفية

لذلك، إذا لم تكن قد قمت بذلك بالفعل، فقد حان الوقت لتحديث كود السمة والإضافات الخاص بك إلى الصيغة الجديدة. هناك شيئان رئيسيان لتحديثهما: تعريفات الفئات الجديدة، واستدعاءات modifyClass.

تعريفات الفئات

يمكن إنجاز الكثير من العمل باستخدام ember-native-class-codemod. من داخل مستودع السمة/الإضافة الخاص بك، قم بتشغيل:

NO_TELEMETRY=true npx ember-native-class-codemod@4.1.1 --no-classic-decorator **/*.js

سيؤدي هذا إلى تشغيل ملفاتك وتحويلها إلى صيغة الفئات الأصلية الجديدة. في بعض الأحيان سيطلب منك التدخل يدويًا. قم دائمًا بمراجعة تغييرات الكود التي يجريها - فهي ليست مثالية.

إذا كان لديك العديد من السمات/الإضافات لتحديثها، فقد تكون مهتمًا بـ برنامجنا النصي للطلبات الجماعية.

استدعاءات modifyClass

إذا كنت تستخدم المُزخرفات داخل استدعاءات modifyClass، فأنت بحاجة إلى استخدام الصيغة الجديدة المستندة إلى الفئات الأصلية. لمزيد من المعلومات حول ذلك، تحقق من التوثيق. أثناء إجراء هذه التغييرات، يرجى مراعاة القيود الموثقة.

10 إعجابات

الخطأ الذي واجهته وجعلني أرغب في العثور على هذا الموضوع تمت مناقشته في Prettier يشكو من أنه لا يمكن استخدام @discourseComputed لتزيين خصائص حرفية

SyntaxError: لا يمكن استخدام المزخرفات لتزيين خصائص كائن حرفي. (9:3)

تعديل: أوه. إنه موجود هنا في النص، لكنني أقسم أن البحث لم يجده، وأرسلني الذكاء الاصطناعي إلى موضوعي الذي يعود إلى عام.

وللأسف، على الرغم من أن السحر نجح في وحدات التحكم والمسارات الخاصة بي، إلا أنه لا يبدو أنه أصلح المكونات الخاصة بي.

إعجاب واحد (1)