|
1 | | - |
2 | 1 | # مقدّمة إلى الوِحدات |
3 | 2 |
|
4 | | -<<<<<<< HEAD |
5 | 3 | سنرى سريعًا بينما تطبيقنا يكبُر حجمًا وتعقيدًا بأنّ علينا تقسيمه إلى ملفات متعدّدة، أو ”وِحدات“ (module). عادةً ما تحتوي الوِحدة على صنف أو مكتبة فيها دوالّ. |
6 | | -======= |
7 | | -As our application grows bigger, we want to split it into multiple files, so called "modules". A module may contain a class or a library of functions for a specific purpose. |
8 | | ->>>>>>> 445bda39806050acd96f87166a7c97533a0c67e9 |
9 | 4 |
|
10 | 5 | كانت محرّكات جافاسكربت تعمل لفترة طويلة جدًا دون أيّ صياغة وِحدات على مستوى اللغة، ولم تكن هذه بالمشكلة إذ أنّ السكربتات سابقًا كانت بسيطة وسهلة ولم يكن هناك داعٍ فعلي للوِحدات. |
11 | 6 |
|
12 | 7 | ولكن كالعادة صارت السكربتات هذه أكثر تعقيدًا وأكبر، فكان على المجتمع اختراع طرائق مختلفة لتنظيم الشيفرات في وحدات (أو مكتبات خاصّة تُحمّل تلك الوِحدات حين الطلب). |
13 | 8 |
|
14 | | -<<<<<<< HEAD |
15 | 9 | مثال: |
16 | | -======= |
17 | | -To name some (for historical reasons): |
18 | | ->>>>>>> 445bda39806050acd96f87166a7c97533a0c67e9 |
19 | 10 |
|
20 | 11 | - [AMD](https://en.wikipedia.org/wiki/Asynchronous_module_definition): هذه إحدى نُظم المكتبات القديمة جدًا والتي كتبت تنفيذها بدايةً المكتبة [require.js](http://requirejs.org/). |
21 | 12 | - [CommonJS](http://wiki.commonjs.org/wiki/Modules/1.1): نظام الوِحدات الذي صُنِع لخوادم Node.js. |
22 | 13 | - [UMD](https://github.com/umdjs/umd): نظام وِحدات آخر (اقتُرح ليكون للعموم أجمعين) وهو متوافق مع AMD وCommonJS. |
23 | 14 |
|
24 | 15 | أمّا الآن فهذه المكتبات صارت (أو تصير، يومًا بعد آخر) جزءًا من التاريخ، ولكن مع ذلك سنراها في السكربتات القديمة. |
25 | 16 |
|
26 | | -<<<<<<< HEAD |
27 | 17 | ظهر نظام الوِحدات (على مستوى اللغة) في المعيار عام 2015، وتطوّر شيئًا فشيئًا منذئذ وصارت الآن أغلب المتصفّحات الرئيسة (كما و Node.js) تدعمه. لذا سيكون أفضل لو بدأنا دراسة عملها من الآن. |
28 | | -======= |
29 | | -The language-level module system appeared in the standard in 2015, gradually evolved since then, and is now supported by all major browsers and in Node.js. So we'll study the modern JavaScript modules from now on. |
30 | | ->>>>>>> 445bda39806050acd96f87166a7c97533a0c67e9 |
31 | 18 |
|
32 | 19 | ## ما الوِحدة؟ |
33 | 20 |
|
34 | | -<<<<<<< HEAD |
35 | 21 | الوِحدة هي ملف، فقط. كلّ نص برمجي يساوي وحدة واحدة. |
36 | | -======= |
37 | | -A module is just a file. One script is one module. As simple as that. |
38 | | ->>>>>>> 445bda39806050acd96f87166a7c97533a0c67e9 |
39 | 22 |
|
40 | 23 | يمكن أن تُحمّل الوِحدات بعضها البعض وتستعمل توجيهات خاصة مثل التصدير `export` والاستيراد `import` لتتبادل الميزات فيما بينها وتستدعي الدوالّ الموجودة في وحدة ص، من وحدة س: |
41 | 24 |
|
@@ -71,16 +54,11 @@ sayHi('John'); // Hello, John! |
71 | 54 |
|
72 | 55 | [codetabs src="say" height="140" current="index.html"] |
73 | 56 |
|
74 | | -<<<<<<< HEAD |
75 | 57 | يجلب المتصفّح الوِحدة تلقائيًا ويقيم الشيفرة البرمجية بداخلها (ويستورد جميع الوحدات المتعلقة بها إن لزم الأمر)، وثمّ يشغلها. |
76 | | -======= |
77 | | -The browser automatically fetches and evaluates the imported module (and its imports if needed), and then runs the script. |
78 | 58 |
|
79 | 59 | ```warn header="Modules work only via HTTP(s), not in local files" |
80 | 60 | If you try to open a web-page locally, via `file://` protocol, you'll find that `import/export` directives don't work. Use a local web-server, such as [static-server](https://www.npmjs.com/package/static-server#getting-started) or use the "live server" capability of your editor, such as VS Code [Live Server Extension](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer) to test modules. |
81 | 61 | ``` |
82 | | ->>>>>>> 445bda39806050acd96f87166a7c97533a0c67e9 |
83 | | -
|
84 | 62 |
|
85 | 63 | ## ميزات الوِحدات الأساسية |
86 | 64 | ======= |
|
0 commit comments