اذهب إلى المحتوى

السؤال

نشر (معدل)

ما الفرق وتداعيات استخدام require() and import -- from '' والفرق بيناها وهل نسخدم  require في objects و import في الدوال في nodejs علما اني بحثت عن الموضوع واتصح لي ان البعض يستعملها معا لستعاء  

const express = require('express');

import express from 'express';

اذا ما الفرق يرجي الشرح بالتفصيل الممل وشكرا 

تم التعديل في بواسطة Mustafa Suleiman
تعديل عنوان السؤال

Recommended Posts

  • 0
نشر

الفرق الرئيسي بين require() و import هو أن require() هي دالة مدمجة في Node.js، بينما import هي عبارة عن ميزة جديدة تم تقديمها في ECMAScript 6.

تداعيات استخدام require() و import

  • يُعتقد أن import أسرع قليلاً من require().
  • require() متوافقة مع جميع إصدارات Node.js، بينما import غير متوافقة مع إصدارات Node.js السابقة لـ 12.13.0.
  •  import أسهل في الاستخدام من require().

كما يمكن استخدام require() و import معاً في نفس المشروع. على سبيل المثال، يمكنك استخدام require() لتحميل ملفات النظام الأساسية، مثل fs و path، واستخدام import لتحميل الملفات الخاصة بك.

ويمكنك الإطلاع على الإجابات والمقالات التالية للشرح بالتفصيل

 

  • 0
نشر
بتاريخ 1 ساعة قال Bandar Abuseada:

هل هذا يعني اني استطيع استعمال require() عند استدعاء models والتي تستعمل الobject في بنيتها?

و 

استعمال import عن استعمال modules او مكتبه لا تستعمل object في بنيتها? 

الفرق الرئيسي بين require() و import هو أن require() هو جزء من نظام الوحدات CommonJS ، بينما import هو جزء من نظام الوحدات ECMAScript بدءًا من ES6.

,نظام الوحدات CommonJS هو نظام الوحدات الأصلي لـ Node.js ,يسمح لك بتحميل وحدات من ملفات JavaScript منفصلة.

وإليك مثال على التصدير باستخدام CommonJS

// file: my-module.js

module.exports = {
  name: "My Module",
  version: "1.0.0",
  sayHello: function() {
    return "Hello, world!";
  },
};

لاستخدام تلك  الوحدة ، نستخدم require() على النحو التالي:

// file: my-app.js

const myModule = require("my-module");

console.log(myModule.name); // My Module
console.log(myModule.version); // 1.0.0
console.log(myModule.sayHello()); // Hello, world!

ويؤدي استخدام نظام الوحدات CommonJS إلى بعض التداعيات ، مثل:

  • يجب أن تكون جميع وحدات CommonJS محملة في وقت البدء.
  • يمكن أن يؤدي تحميل وحدات متعددة إلى زيادة استخدام الذاكرة.
  • لا يمكن تحميل وحدات CommonJS ديناميكيًا.

ECMAScript

أما نظام الوحدات ECMAScript هو نظام الوحدات الأحدث لـ JavaScript ,يسمح لك بتحميل وحدات من ملفات JavaScript منفصلة ، ولكنه يوفر أيضًا بعض الميزات الإضافية ، مثل:

  • تحميل وحدات ديناميكيًا
  • تحميل وحدات حسب الحاجة
  • تحميل وحدات بشكل متوازٍ

مثال على التصدير باستخدام نظام ECMAScript

// file: my-module.js

export const name = "My Module";
export const version = "1.0.0";
export function sayHello() {
  return "Hello, world!";
}

لاستخدام تلك الوحدة ، نستخدم import على النحو التالي:

// file: my-app.js

import { name, version, sayHello } from "my-module";

console.log(name); // My Module
console.log(version); // 1.0.0
console.log(sayHello()); // Hello, world!

هل نستخدم require في objects و import في الدوال؟

من الأفضل استخدام import بدلاً من require(). وذلك لأن import يقدم ميزات أكثر وأفضل من require().

ولا يزال من الممكن استخدام require() في بعض الحالات ، مثل:

  • إذا كنت تضطر إلى العمل مع كود قديم يستخدم require().
  • إذا كنت بحاجة إلى تحميل وحدات ديناميكيًا.
  • 0
نشر

كيف سيعرف المبرمج من ما  اذا كانت الدوال CommonJS ام ECMAScript 6  لكي يستعمل الCommonJS require()  ام import ECMAScript 

ايضا ما المقصود ب ديناميكيًا في البرمجه مثل جعل الداله ديناميكيًا و حميل وحدات ديناميكيًا؟

  • 0
نشر (معدل)
بتاريخ 2 ساعة قال Bandar Abuseada:

كيف سيعرف المبرمج من ما  اذا كانت الدوال CommonJS ام ECMAScript 6  لكي يستعمل الCommonJS require()  ام import ECMAScript 

ايضا ما المقصود ب ديناميكيًا في البرمجه مثل جعل الداله ديناميكيًا و حميل وحدات ديناميكيًا؟

يمكن للمبرمج النظر إلى بعض العلامات المميزة لكل منهما.

في نمط CommonJS، يُستخدم الدالة `require()` لاستيراد وحدات الكود، ويتم تعريف الوحدات باستخدام `module.exports` في الملفات المستوردة. على سبيل المثال:

// استيراد وحدة في CommonJS
const module = require('module');

// تصدير وحدة في CommonJS
module.exports = {
  // ...
};

أما في ES6، يُستخدم الكلمة المفتاحية `import` لاستيراد وحدات الكود، ويتم تعريف الوحدات باستخدام `export` في الملفات المستوردة. على سبيل المثال:
 

// استيراد وحدة في ES6
import module from 'module';

// تصدير وحدة في ES6
export default {
  // ...
};

بالتالي، إذا وجدت الاستيرادات تستخدم `require()` وتصديرات تستخدم `module.exports`، فإن الكود يتبع نمط CommonJS. وإذا وجدت الاستيرادات تستخدم `import` وتصديرات تستخدم `export`، فإن الكود يتبع نمط ES6.

أما بخصوص المصطلح "ديناميكيًا" في البرمجة، فهو يشير إلى القدرة على تغيير وتعديل سلوك البرنامج أثناء تشغيله. على سبيل المثال، فيمكن تحميل وحدات الكود (مثل المكتبات أو المكونات) ديناميكيًا أثناء تنفيذ البرنامج بدلاً من تحميلها في وقت التجميع أو الترجمة.( بقصد الcompiling  ) يتيح ذلك مرونة أكبر في تطوير البرمجيات وإمكانية توسيع وتغيير الوظائف بسهولة.

على سبيل المثال، يمكن استخدام الدوال الديناميكية  لتحميل وحدات الكود ( مثل الcomponents ) في وقت التشغيل باستخدام دوال مثل `require()` في CommonJS أو `import()` في ES6. هذا يتيح إمكانية تحميل وتنفيذ الوحدات اللازمة فقط عند الحاجة إليها، بدلاً من تحميل جميع الوحدات في بداية التنفيذ.
بينما إذا قمنا بتحميل جميع الدوال عند تشغيل البرنامج , استخدمنا منها ما نحتاجه , فهذا سوف يجعل الموقع بطيء جداً في حال تواجد لدينا وحدات كثيرا ( compoents او ملفات js ).

أتمنى أن يكون ذلك واضحًا ومفيدًا لك.

تم التعديل في بواسطة Hikmat Jaafer

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...