قائمة مشتركة لاستيرادات مكونات/إضافات السمة (JS)

غالبًا ما أجد نفسي أبحث عن الاستيرادات (imports) المختلفة عند إنشاء مكوّن Theme، لذا قررت تجميع مجموعة منها ووضعها هنا.

متعلقة بـ Ember

الاسم الاستيراد الاستخدام
Component import Component from "@glimmer/component"; export default class MyComponentClass extends Component {}
زخرفة Action import { action } from "@ember/object"; @action
زخرفة Tracked import { tracked } from "@glimmer/tracking"; @tracked myTrackedVar
زخرفة Service import { service } from "@ember/service"; @service modal
(قالب Glimmer) on import { on } from "@ember/modifier"; <p {{on "click" this.someAction}}>انقر هنا!</p>[1]

متعلقة بـ Discourse

الاسم الاستيراد الاستخدام
apiInitializer import { apiInitializer } from "discourse/lib/api"; export default apiInitializer((api) => {})
withPluginApi import { withPluginApi } from "discourse/lib/plugin-api"; withPluginApi((api) => {})[2][3]
ConditionalLoadingSpinner import ConditionalLoadingSpinner from "discourse/components/conditional-loading-spinner"; <ConditionalLoadingSpinner @condition={{this.loading}} />
DButton import DButton from "discourse/ui-kit/d-button"; <DButton @icon="..." @action={{this.someAction}} />
ajax import { ajax } from "discourse/lib/ajax"; ajax("/path/here")[4]
i18n import { i18n } from "discourse-i18n"; {{i18n "locale_key"}}[5]
(قالب Glimmer) يساوي، لا يساوي، أكبر من، أكبر من أو يساوي، أصغر من، أصغر من أو يساوي، أو، ليس، و، لديه، يتضمن import { eq, and, ... } from "truth-helpers"; {{#if (eq this.something this.something2)}}[6]

قد ترى أن هذه العناصر تُجمع معًا، مثل متغيرات متتبعة (tracked variables) كشرط لـ ConditionalLoadingSpinner، أو إجراءات (actions) لـ DButton، وما إلى ذلك.

آمل أن يكون هذا مفيدًا!

لست خبيرًا، لذا إذا لاحظت أي أخطاء، فيرجى المساعدة في تصحيحها أو الإشارة إليها، شكرًا :slightly_smiling_face:.


  1. يمكنك أيضًا استخدام أحداث مثل input وmousedown وfocusin وما إلى ذلك ↩︎

  2. انظر إلى discourse/app/assets/javascripts/discourse/app/instance-initializers/enable-emoji.js at 99ace1be120b928f6c694d0118959d745cc4bdbe · discourse/discourse · GitHub ↩︎

  3. أعتقد أنه يُوصى باستخدام apiInitializer بدلاً من ذلك؛ أعتقد أن هذا هو الإصدار القديم؟ ↩︎

  4. يعمل بشكل مشابه لـ fetch(). ضع هذا داخل دالة async مع استخدام كلمة المفتاح await. ↩︎

  5. إذا كنت تحصل على لغة الموقع من المستودع الأساسي، مثل user.summary.stats ↩︎

  6. أشياء مثل and وor يمكن أن تحتوي على أكثر من حجتين ↩︎

11 إعجابًا

ها، هذا رائع! لديّ نفس الشيء وغالبًا ما يتخيل الذكاء الاصطناعي/الإكمال التلقائي في VS Code مسارًا خاطئًا :wink:

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