سلسلة دروس الفريموورك Vue.js [درس#3 Data & Methods]


في الدرس السابق
بدأنا بكتابة كود vue وتعلمنا عرض البيانات في صفحة index.html

والآن سنتعرف أكثر على data & methods داخل نموذج الـVue

قبل البداية:

  1. الدروس ستكون مكتوبة بالخطوات
  2. يوجد شرح فيديو بالأسفل مع كل درس
  3. يرجى ربط أحزمة المقاعد استعدادا لانطلاق الطائرة :rocket::airplane::flying_saucer:

فهرس الدروس
  1. درس#1 تثبيت الأدوات
  2. درس#2 Vue instance
  3. درس#3 data & methods
  4. درس#4 Data Binding
  5. درس#5 events & event modifiers
  6. درس#6 keyboard modifiers
  7. درس#7 two-way data binding
  8. درس#8 ورشة عمل تسجيل دخول

يلا نبدأ :smiley:
داخل ملف app.js سنضيف methods وهي property ضمنية نكتب فيها كل الدوال

new Vue({
  el: '#my-app',
  data: {
    name: 'coretabs',
    age: 19
  },
  methods: {
    // هنا نكتب الدوال الخاصة بنا
  }
})

نتخيل مثلا دالة تقوم بإلقاء التحية على المستخدم:

methods: {
    sendGreet: function() {
      return 'have a good time'
    }
  }

لنذهب الى صفحة index.html

<body>
  <div id="my-app">
    <h1>{{ sendGreet() }}</h1>
  </div>
  <script src="app.js"></script>
</body>

نلاحظ عند استدعاء الدالة تكتب بالأقواس كما نفعل في الجافاسكريبت بشكل عام

تعالو نجربها من غير الأقواس () بهذا الشكل:

    <h1>{{ sendGreet }}</h1>

النتيجة:
image

هنا يظهر الفارق!
رائع! الآن تعالو نحاول الحصول على بيانات من data داخل الmethods
اذا أردنا مثلا استدعاء name لنلقي التحية عليه
بالطريقة الاعتيادية للجافاسكريبت تكون هكذا:

  methods: {
    sendGreet: function() {
       return this.data.name
    }
  }

الحقيقة أنها في Vue ليست كذلك :smiley:
من روعة Vue({}) أنها تأخذ كل تلك العناصر الى الخارج بمعنى أنك فقط ستستدعي name بدون المرور على data

  methods: {
    sendGreet: function() {
       return this.name
    }
  }

يمكننا تعديل الدالة الآن:

  methods: {
    sendGreet: function() {
       return 'Hello' + ' ' + this.name
    }

أو يمكننا كتابتها بصيغة ES6 المحدّثة للجافاسكريبت هكذا (ليس بالضروري، لكن أسهل):

  methods: {
    sendGreet: function() {
      return `Hello ${this.name}`
    }

وهي طريقة أسهل لا تحتاج إلى concatenation
فقط نستخدم علامة الـbackticks الموجودة أسفل زر ESC

  • علامة ${} تفتح المجال لكتابة أي كود بداخلها

النتيجة:
image

من الممكن أن نجعل الدالة ديناميكية أكثر بمعنى أنه يمكننا استخدام name كـ argument نمررها داخل الدالة:

// app.js
methods: {
    sendGreet: function(argument) {
      return `Hello ${argument}`
    }
  }

نمرر الـname من الدالة داخل الصفحة:

// index.html
<div id="my-app">
    <h1>{{ sendGreet(name) }}</h1>
  </div>

النتيجة:
image

يمكنكم التفاعل مع الكود هنا:

والآن مع الفيديو المفيد :smiley:

الآن أصبح الأمر أكثر متعة! يمكننا فعل المزيد لاحقا :smiley:
بالتوفيق :star_struck:

درس#4 Data Binding

5 Likes

بغض النظر عن المحتوى، وبعيدا عن المجاملات التي لا تروقني، حقا طريقة إلقائك في فيديوهاتك جيدة أخي نصر.
أنا شخصيا لا أحبذ الشرح العربي من طريقة إلقائهم مهما كان المحتوى مفيد، ولكنك أبدعت بهذه الطريقة :clap: .

3 Likes

unnamed

3 Likes

صراحة يا لارا @L.Da هذا وسام أعتز به
أنا أيضا لم أكن أحبذ الشرح العربي مثل غيري، مما يجعل كورتابز بيئة خصبة لاحتواء الطرق الجديدة في الشروحات و ورش العمل وغيرهما

الآن أعمل على تطوير طريقة الشرح نفسها

من خلال هذه السلسلة أنا أستفيد أيضا كما يستفيد الجميع، وهذا يجعلني أدعم كل من يحاول تقديم فكرة جديدة

استفادتي من هذا الأمر كبيرة على مستوى:

  • تجزئة المعلومات وتصغيرها
  • إيصال الفكرة بأسلوب سهل
  • استرجاع لما تعلمته في Vue (مع العلم أننا لا نعرف كل أسراره بعد)
  • صقل خبرتي العملية
  • توفير المحتوى بأكثر من صورة (كتابة و صوت وصورة)

وقريبا أحاول توفير عدة أفكار نطبقها سويا للتطبيق بما تعلمناه :slight_smile:

3 Likes

اكررها هنا مرة أخرى، خامة صوتك رائعه، أتمنى المرة القادمة قبل بداية الشرح تسمعنا حاجة (موال صغير :joy::joy:).
بارك الله فيك

2 Likes

:joy: :joy:
انا بقول اسيب البرمجة واشتغل في المواويل :joy:

2 Likes

@L.Da
@YaserAlnajjar
@TChiOfficiel

تم تحسين جودة ومدة الفيديو
مشاهدة ممتعة!

1 Like

تفكير منطقي، بالتوفيق لك يا رب.

2 Likes

@TChiOfficiel // @YaserAlnajjar // @L.Da // @MosaabLaboune // @Alhakem

تم إضافة محرر repl لتسهيل التفاعل

3 Likes

شيء جميل أخي @sniperadmin بارك الله فيك