Ø³ÙØ±Ù Ø³Ø±ÙØ¹Ùا بÙÙ٠ا تطبÙÙÙØ§ ÙÙØ¨Ùر ØØ¬Ù ÙØ§ ÙØªØ¹ÙÙØ¯Ùا بأÙ٠عÙÙÙØ§ ØªÙØ³Ù٠٠إÙÙ Ù ÙÙØ§Øª Ù ØªØ¹Ø¯ÙØ¯Ø©Ø Ø£Ù âÙÙØØ¯Ø§Øªâ (module). عادة٠٠ا ØªØØªÙ٠اÙÙØØ¯Ø© عÙ٠صÙÙ Ø£Ù Ù ÙØªØ¨Ø© ÙÙÙØ§ Ø¯ÙØ§ÙÙ.
ÙØ§Ùت Ù ØØ±ÙÙØ§Øª Ø¬Ø§ÙØ§ Ø³ÙØ±Ùبت تع٠٠ÙÙØªØ±Ø© Ø·ÙÙÙØ© Ø¬Ø¯ÙØ§ دÙ٠أÙÙ ØµÙØ§ØºØ© ÙÙØØ¯Ø§Øª عÙ٠٠ستÙ٠اÙÙØºØ©Ø ÙÙ٠تÙÙ ÙØ°Ù باÙÙ Ø´ÙÙØ© إذ Ø£ÙÙ Ø§ÙØ³Ùربتات سابÙÙØ§ ÙØ§Ùت Ø¨Ø³ÙØ·Ø© ÙØ³ÙÙØ© ÙÙÙ ÙÙÙ ÙÙØ§Ù Ø¯Ø§Ø¹Ù ÙØ¹ÙÙ ÙÙÙÙØØ¯Ø§Øª.
ÙÙÙÙ ÙØ§Ùعادة صارت Ø§ÙØ³Ùربتات ÙØ°Ù Ø£ÙØ«Ø± تعÙÙØ¯Ùا ÙØ£ÙØ¨Ø±Ø ÙÙØ§Ù عÙ٠اÙ٠جت٠ع اختراع طرائ٠٠ختÙÙØ© ÙØªÙظÙÙ Ø§ÙØ´ÙÙØ±Ø§Øª ÙÙ ÙØØ¯Ø§Øª (Ø£Ù Ù ÙØªØ¨Ø§Øª Ø®Ø§ØµÙØ© ØªÙØÙ Ù٠تÙ٠اÙÙØØ¯Ø§Øª ØÙÙ Ø§ÙØ·Ùب).
٠ثاÙ:
- AMD: ÙØ°Ù Ø¥ØØ¯Ù ÙÙØ¸Ù اÙÙ ÙØªØ¨Ø§Øª اÙÙØ¯ÙÙ Ø© Ø¬Ø¯ÙØ§ ÙØ§ÙØªÙ ÙØªØ¨Øª تÙÙÙØ°Ùا Ø¨Ø¯Ø§ÙØ©Ù اÙÙ ÙØªØ¨Ø© require.js.
- CommonJS: ÙØ¸Ø§Ù اÙÙØØ¯Ø§Øª Ø§ÙØ°Ù صÙÙÙØ¹ ÙØ®Ùاد٠Node.js.
- UMD: ÙØ¸Ø§Ù ÙÙØØ¯Ø§Øª آخر (Ø§ÙØªÙØ±Ø ÙÙÙÙÙ ÙÙØ¹Ù Ù٠أج٠عÙÙ) ÙÙÙ Ù ØªÙØ§Ù٠٠ع AMD ÙCommonJS.
Ø£Ù ÙØ§ Ø§ÙØ¢Ù ÙÙØ°Ù اÙÙ ÙØªØ¨Ø§Øª صارت (Ø£Ù ØªØµÙØ±Ø ÙÙÙ ÙØ§ بعد آخر) Ø¬Ø²Ø¡ÙØ§ Ù Ù Ø§ÙØªØ§Ø±ÙØ®Ø ÙÙÙ٠٠ع ذÙÙ Ø³ÙØ±Ø§Ùا ÙÙ Ø§ÙØ³Ùربتات اÙÙØ¯ÙÙ Ø©.
Ø¸ÙØ± ÙØ¸Ø§Ù اÙÙØØ¯Ø§Øª (عÙ٠٠ستÙ٠اÙÙØºØ©) Ù٠اÙÙ Ø¹ÙØ§Ø± عا٠2015Ø ÙØªØ·ÙÙØ± Ø´ÙØ¦Ùا ÙØ´ÙØ¦ÙØ§ Ù ÙØ°Ø¦Ø° ÙØµØ§Ø±Øª Ø§ÙØ¢Ù Ø£ØºÙØ¨ اÙ٠تصÙÙØØ§Øª Ø§ÙØ±Ø¦Ùسة (Ù٠ا Ù Node.js) تدع٠Ù. ÙØ°Ø§ سÙÙÙÙ Ø£ÙØ¶Ù ÙÙ Ø¨Ø¯Ø£ÙØ§ دراسة ع٠ÙÙØ§ Ù Ù Ø§ÙØ¢Ù.
٠ا اÙÙØØ¯Ø©Ø
اÙÙØØ¯Ø© ÙÙ Ù ÙÙØ ÙÙØ·. ÙÙÙ ÙØµ Ø¨Ø±Ù Ø¬Ù ÙØ³Ø§ÙÙ ÙØØ¯Ø© ÙØ§ØØ¯Ø©.
ÙÙ
ÙÙ Ø£Ù ØªÙØÙ
Ù٠اÙÙØØ¯Ø§Øª Ø¨Ø¹Ø¶ÙØ§ Ø§ÙØ¨Ø¹Ø¶ ÙØªØ³ØªØ¹Ù
Ù ØªÙØ¬ÙÙØ§Øª خاصة Ù
Ø«Ù Ø§ÙØªØµØ¯Ùر export ÙØ§ÙØ§Ø³ØªÙØ±Ø§Ø¯ import ÙØªØªØ¨Ø§Ø¯Ù اÙÙ
ÙØ²Ø§Øª ÙÙÙ
ا بÙÙÙØ§ ÙØªØ³ØªØ¯Ø¹Ù Ø§ÙØ¯ÙاÙ٠اÙÙ
ÙØ¬Ùدة ÙÙ ÙØØ¯Ø© ØµØ Ù
Ù ÙØØ¯Ø© س:
- تÙÙ٠اÙÙÙÙ
Ø© اÙÙ
ÙØªØ§ØÙØ©
exportÙÙÙ ØªØºÙØ±Ø§Øª ÙØ§ÙØ¯ÙØ§Ù٠بأÙ٠اÙÙØµÙ٠إÙÙÙØ§ ٠٠خارج اÙÙØØ¯Ø© Ø§ÙØØ§ÙÙØ© Ù٠أ٠ر Ù ÙØªØ§Ø. - ÙØªÙØªÙØ
importØ§Ø³ØªÙØ±Ø§Ø¯ تÙ٠اÙÙØ¸Ø§Ø¦Ù ٠٠اÙÙØØ¯Ø§Øª Ø§ÙØ£Ø®Ø±Ù.
ÙÙ
Ø«ÙÙØ§ ÙÙ ÙØ§Ù ÙØ¯ÙÙØ§ اÙÙ
ÙÙ sayHi.js ÙÙÙ ÙÙØµØ¯Ùر داÙÙØ©Ù Ù
Ù Ø§ÙØ¯ÙاÙÙ:
// ð sayHi.js
export function sayHi(user) {
alert(`Hello, ${user}!`);
}
ÙÙÙ ÙÙ ÙÙ Ù٠آخر Ø§Ø³ØªÙØ±Ø§Ø¯Ù ÙØ§Ø³ØªØ¹Ù اÙÙØ§:
// ð main.js
import {sayHi} from './sayHi.js';
alert(sayHi); // function... ÙÙØ¹Ùا Ø¯Ø§ÙØ©
sayHi('John'); // Hello, John!
ØªØªÙØ¬Ù تعÙÙÙ
Ø© import ÙÙÙÙØØ¯Ø© â./sayHi.js عبر اÙÙ
سار اÙÙØ³Ø¨Ù اÙÙ
ÙÙ
رر ÙÙØ§. ÙÙØ³Ùد Ø§ÙØªØ§Ø¨Ø¹ sayHi ÙÙÙ
تغÙÙØ± Ø§ÙØ°Ù ÙØÙ
Ù ÙÙØ³ اسÙ
Ø§ÙØªØ§Ø¨Ø¹.
ÙÙØ´ØºÙ٠اÙ٠ثا٠Ù٠اÙ٠تصÙÙØ.
تدعÙ
اÙÙØØ¯Ø§Øª ÙÙÙ
ات Ù
ÙØªØ§ØÙØ© ÙÙ
Ø²Ø§ÙØ§ Ø®Ø§ØµØ©Ø ÙØ°Ù٠عÙÙÙØ§ إخبار اÙÙ
تصÙÙØ بأÙÙ ÙØ°Ø§ Ø§ÙØ³Ùربت ÙÙ ÙÙØØ¯Ø© ÙÙØ¬Ø¨ Ø£Ù ÙÙØ¹Ø§Ù
Ù Ø¨ÙØ°Ø§ اÙÙØÙØ ذÙ٠باستعÙ
Ø§Ù Ø§ÙØ®Ø§ØµÙØ© â<script type="module">â.
ÙÙØ°Ø§:
export function sayHi(user) {
return `Hello, ${user}!`;
}<!doctype html>
<script type="module">
import {sayHi} from './say.js';
document.body.innerHTML = sayHi('John');
</script>ÙØ¬Ùب اÙ٠تصÙÙØ اÙÙØØ¯Ø© تÙÙØ§Ø¦ÙÙØ§ ÙÙÙÙÙ Ø§ÙØ´ÙÙØ±Ø© Ø§ÙØ¨Ø±Ù Ø¬ÙØ© بداخÙÙØ§ (ÙÙØ³ØªÙرد Ø¬Ù ÙØ¹ اÙÙØØ¯Ø§Øª اÙ٠تعÙÙØ© Ø¨ÙØ§ Ø¥Ù ÙØ²Ù Ø§ÙØ£Ù ر)Ø ÙØ«Ù Ù ÙØ´ØºÙÙØ§.
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 or use the âlive serverâ capability of your editor, such as VS Code Live Server Extension to test modules.
Ù ÙØ²Ø§Øª اÙÙØØ¯Ø§Øª Ø§ÙØ£Ø³Ø§Ø³ÙØ©
=======
ÙÙÙ٠٠ا اÙÙØ±Ù بÙ٠اÙÙØØ¯Ø§Øª ÙØ§ÙØ³ÙØ±Ø¨ØªØ§Øª (Ø§ÙØ´ÙÙØ±Ø§Øª) "Ø§ÙØ¹Ø§Ø¯ÙØ©â ØªÙÙØ
ÙÙÙÙØØ¯Ø§Øª Ù ÙØ²Ø§Øª Ø£Ø³Ø§Ø³ÙØ© تع٠٠عÙÙ Ù ØØ±ÙÙØ§Øª Ø¬Ø§ÙØ§ Ø³ÙØ±Ùبت ÙÙ٠تصÙÙØØ§Øª ÙÙÙØ®Ùاد٠عÙÙ ØØ¯Ù Ø³ÙØ§Ø¡.
اÙÙØ¶Ø¹ Ø§ÙØµØ§Ø±Ù Ø§ÙØ¥ÙتراضÙ
تستخد٠اÙÙØØ¯Ø§Øª اÙÙØ¶Ø¹ Ø§ÙØµØ§Ø±Ù تÙÙØ§Ø¦ÙÙØ§ ÙÙ Ø«ÙÙØ§ Ø¥Ø³ÙØ§Ø¯ ÙÙÙ Ø© Ù٠تØÙÙ ØºÙØ± ٠عرÙ٠سÙÙØªØ¬ خطأ.
<script type="module">
a = 5; // خطأ
</script>
اÙÙØ·Ø§Ù عÙ٠٠ستÙ٠اÙÙØØ¯Ø§Øª
ÙÙÙ ÙÙØØ¯Ø© ÙÙØ§ ÙØ·Ø§Ù عاÙ٠اÙ٠ستÙ٠خاص Ø¨ÙØ§. Ø¨ØªØ¹Ø¨ÙØ±Ù Ø¢Ø®Ø±Ø ÙÙ ÙÙÙØ¸Ø± ÙÙ٠تغÙÙØ±Ø§Øª ÙØ§ÙØ¯ÙØ§Ù٠٠٠اÙÙØØ¯Ø§Øª Ø§ÙØ£Ø®Ø±ÙØ ÙØ¥Ù٠ا ÙÙÙÙ ÙØ·Ø§Ù اÙÙ ØªØºÙØ±Ø§Øª Ù ØÙÙ.
ÙØ±Ù Ù٠اÙÙ
Ø«Ø§Ù Ø£Ø¯ÙØ§Ù Ø£ÙÙØ§ ØÙ
ÙÙÙØ§ ÙØµÙÙ٠برÙ
جÙÙÙØ ÙÙØØ§Ù٠اÙÙ
ÙÙ hello.js استعÙ
ا٠اÙÙ
ØªØºÙØ± user اÙÙ
ØµØ±ÙØ عÙÙ Ù٠اÙÙ
ÙÙ user.js ÙÙØ§ ÙÙØ¯Ø±:
alert(user); // no such variable (each module has independent variables)let user = "John";<!doctype html>
<script type="module" src="user.js"></script>
<script type="module" src="hello.js"></script>عÙ٠اÙÙØØ¯Ø§Øª ØªØµØ¯ÙØ± export Ù
ا ØªØ±ÙØ¯ ÙÙØ¢Ø®Ø±ÙÙ Ù
Ù Ø®Ø§Ø±Ø¬ÙØ§ Ø±Ø¤ÙØªÙØ ÙØ§Ø³ØªÙراد import Ù
ا ØªØØªØ§Ø¬ استعÙ
اÙÙ.
ÙØ°Ø§ عÙÙÙØ§ Ø§Ø³ØªÙØ±Ø§Ø¯ user.js Ùhello.js ÙØ£Ø®Ø° اÙÙ
Ø²Ø§ÙØ§ اÙÙ
Ø·ÙÙØ¨Ø© Ù
ÙÙÙ
ا Ø¨Ø¯Ù Ø§ÙØ§Ø¹ØªÙ
اد عÙ٠اÙÙ
تغÙÙØ±Ø§Øª Ø§ÙØ¹Ù
ÙÙ
ÙØ©.
ÙØ°Ù اÙÙØ³Ø®Ø© Ø§ÙØµØÙØØ© Ù Ù Ø§ÙØ´ÙÙØ±Ø©:
import {user} from './user.js';
document.body.innerHTML = user; // Johnexport let user = "John";<!doctype html>
<script type="module" src="hello.js"></script>ÙÙØ¬Ø¯ Ù٠اÙÙ
ØªØµÙØ ÙØ·Ø§Ù Ù
ستÙ٠عاÙ٠اÙÙ
ستÙÙ. ÙÙÙ Ù
ÙØ¬Ùد Ø£ÙØ¶Ùا ÙÙÙØØ¯Ø§Øª â<script type="module">â:
<script type="module">
// سÙÙÙ٠اÙÙ
ØªØºÙØ± Ù
رئ٠ÙÙ Ù
Ø¬Ø§Ù ÙØ°Ù اÙÙØØ¯Ø© ÙÙØ·
let user = "John";
</script>
<script type="module">
alert(user); // â«Ø®Ø·Ø£: اÙÙ
ØªØºÙØ± user ØºÙØ± Ù
عرÙÙ
</script>
ÙÙÙ Ø£Ø±Ø¯ÙØ§ Ø£Ù ÙÙØ´Ø¦ Ù
ØªØºÙØ± عاÙ
عÙÙ Ù
ستÙ٠اÙÙØ§Ùذة ÙÙ
ÙÙÙØ§ تعÙÙÙÙ ØµØ±Ø§ØØ© ÙÙÙ
تغÙÙØ± window ÙÙÙ
ÙÙÙØ§ اÙÙØµÙ٠إÙÙÙ ÙÙØ°Ø§ window.user. ÙÙÙÙ ÙØ§Ø¨Ø¯ Ù
Ù ÙØ¬Ùد سبب ÙØ¬ÙÙÙ ÙØ°ÙÙ.
تÙÙÙÙ Ø´ÙÙØ±Ø© اÙÙØØ¯Ø© Ù٠رة ÙØ§ØØ¯Ø© ÙÙØ·
ÙÙ Ø§Ø³ØªÙØ±Ø¯ØªÙ ÙÙØ³ اÙÙØØ¯Ø© ÙÙ Ø£ÙØ«Ø± Ù Ù Ù ÙØ§ÙØ ÙÙØ§ تÙÙÙÙØ° Ø´ÙÙØ±ØªÙا Ø¥ÙÙØ§ ٠رة ÙØ§ØØ¯Ø©Ø ÙØ¨Ø¹Ø¯Ùا ØªÙØµØ¯Ùر Ø¥ÙÙ Ù Ù Ø§Ø³ØªÙØ±Ø¯Ùا.
ÙÙÙØ°Ø§ ØªÙØ§Ø¨Ø¹ Ù ÙÙ Ù Ù Ø¹Ø±ÙØªÙا. ÙÙØ±Ù بعض Ø§ÙØ£Ù Ø«ÙØ©.
Ø£ÙÙÙØ§Ø ÙÙ ÙØ§Ù ÙØ´ÙÙØ±Ø© اÙÙØØ¯Ø© Ø§ÙØªÙ ستÙÙÙÙØ° Ø£ÙÙ ØªØ£Ø«ÙØ±Ø§Øª (٠ث٠عرض Ø±Ø³Ø§ÙØ© أ٠٠ا شابÙ)Ø ÙØ§Ø³ØªÙØ±Ø§Ø¯ÙØ§ Ø£ÙØ«Ø± Ù Ù Ù Ø±ÙØ© Ø³ÙØ´ØºÙ٠ذÙÙ Ø§ÙØªØ£Ø«Ùر ٠رة ÙØ§ØØ¯Ø©Ø ÙÙ٠أÙ٠٠رة ÙÙØ·:
// ð alert.js
alert("Module is evaluated!"); // â«ÙÙÙÙØ°Øª Ø´ÙÙØ±Ø© اÙÙØØ¯Ø©!
// ÙØ³ØªÙرد ÙÙØ³ اÙÙØØ¯Ø© Ù
Ù Ø£ÙØ«Ø± Ù
Ù Ù
ÙÙ
// ð 1.js
import `./alert.js`; // â«ÙÙÙÙØ°Øª Ø´ÙÙØ±Ø© اÙÙØØ¯Ø©!
// ð 2.js
import `./alert.js`; // (ÙØ§ ÙØ±Ù Ø´ÙØ¦Ùا ÙÙØ§)
Ù٠اÙÙØ§ÙØ¹Ø ÙØ´ÙÙØ±Ø§Øª اÙÙØØ¯Ø§Øª عاÙÙØ© اÙ٠ستÙÙ Ù٠بÙÙØ© Ø§ÙØ¨Ø±Ù Ø¬ÙØ© ÙØ§ ØªÙØ³ØªØ¹Ù ٠إÙÙØ§ ÙØªÙ ÙÙØ¯ بÙÙ Ø§ÙØ¨ÙØ§ÙØ§Øª Ø§ÙØ¯Ø§Ø®ÙÙØ© ÙØ¥ÙØ´Ø§Ø¦ÙØ§. ÙÙÙ Ø£Ø±Ø¯ÙØ§ Ø´ÙØ¦Ùا ÙÙØ¹Ùد استع٠اÙÙØ ÙÙØµØ¯Ùر اÙÙØØ¯Ø©.
Ø§ÙØ¢Ù ØØ§Ù ÙÙØª Ù Ø«Ø§Ù Ù Ø³ØªÙØ§Ù Ù ØªÙØ¯ÙÙ Ø£ÙØ«Ø±.
ÙÙÙ٠بأÙÙ ÙÙØ§Ù ÙØØ¯Ø© ØªÙØµØ¯Ùر ÙØ§Ø¦ÙÙØ§:
// ð admin.js
export let admin = {
name: "John"
};
ÙÙ Ø§Ø³ØªÙØ±Ø¯Ùا ÙØ°Ù اÙÙØØ¯Ø© Ù
Ù Ø£ÙØ«Ø± Ù
Ù Ù
ÙÙØ ÙÙØ§ تÙÙÙÙØ° Ø´ÙÙØ±Ø© اÙÙØØ¯Ø© Ø¥ÙÙØ§ Ø£ÙÙ Ù
Ø±Ø©Ø ØÙÙÙØ§ ÙÙØµÙع ÙØ§Ø¦Ù اÙÙ
Ø¯ÙØ± admin ÙÙÙÙ
Ø±ÙØ± Ø¥ÙÙ ÙÙÙ Ù
Ù Ø§Ø³ØªÙØ±Ø¯ اÙÙØØ¯Ø©.
ÙÙÙØ°Ø§ تستÙÙ
ÙÙÙ Ø§ÙØ´ÙÙØ±Ø§Øª ÙØ§Ø¦Ù Ù
Ø¯ÙØ± admin ÙØ§ØØ¯ ÙÙØ· ÙØ§ Ø£ÙØ«Ø± ÙÙØ§ Ø£ÙÙ:
// ð 1.js
import {admin} from './admin.js';
admin.name = "Pete";
// ð 2.js
import {admin} from './admin.js';
alert(admin.name); // Pete
// â«ÙÙÙØ§ اÙÙ
ÙÙÙÙ â1.js Ù â2.js Ø³ÙØ³ØªÙردا٠ÙÙØ³ اÙÙØ§Ø¦Ù
// â«Ø§ÙتغÙÙØ±Ø§Øª اÙÙØªÙ Ø³ØªØØ¯Ø«Ù Ù٠اÙÙ
ÙÙ â1.js ستÙÙÙ Ù
Ø±Ø¦ÙØ© Ù٠اÙÙ
ÙÙ â2.js
ÙÙÙØ¤Ùد Ù
Ø¬Ø¯Ø¯ÙØ§ â ØªÙÙÙØ°Ù اÙÙØØ¯Ø© ÙÙ
رة ÙØ§ØØ¯Ø© ÙÙØ·. ÙØªÙÙØ´Ø¦ اÙÙØØ¯Ø§Øª اÙÙ
راد ØªØµØ¯ÙØ±Ùا ÙØªÙشار٠بÙ٠اÙÙ
Ø³ØªÙØ±Ø¯ÙÙ ÙØ°Ø§ ÙØ¥Ù ØªØºÙØ± Ø´ÙØ¡ Ù
ا ÙÙ ÙØ§Ø¦Ù admin ÙØ³ØªØ±Ù اÙÙØØ¯Ø§Øª Ø§ÙØ£Ø®Ø±Ù ذÙÙ.
ÙØªÙØ ÙÙØ§ ÙØ°Ø§ Ø§ÙØ³ÙÙÙ âØ¶Ø¨Ø·â Ø§ÙÙØØ¯Ø© Ø¹ÙØ¯ Ø£ÙÙÙ Ø§Ø³ØªÙØ±Ø§Ø¯ ÙÙØ§Ø ÙÙØ¶Ø¨Ø· Ø®Ø§ØµÙØ§ØªÙا اÙ٠رة Ø§ÙØ£ÙÙÙØ Ù٠ت٠٠ا استÙÙØ±Ø¯Øª ٠رة أخر٠تÙÙÙ Ø¬Ø§ÙØ²Ø©.
ÙÙ
Ø«ÙÙØ§ ÙØ¯ ØªÙØ¯ÙÙ
ÙÙØ§ ÙØØ¯Ø© admin.js بعض اÙÙ
Ø²Ø§ÙØ§ ÙÙÙÙ ØªØ·ÙØ¨ أ٠تأت٠اÙ
ØªÙØ§Ø²Ø§Øª Ø§ÙØ¥Ø¯Ø§Ø±Ø© Ù
٠خارج ÙØ§Ø¦Ù admin Ø¥Ù٠داخÙÙ:
// ð admin.js
export let admin = { };
export function sayHi() {
alert(`Ready to serve, ${admin.name}!`);
}
ÙØ¶Ø¨Ø· ÙÙ init.js (Ø£ÙÙÙ ÙØµ برÙ
Ø¬Ù ÙØªØ·Ø¨ÙÙÙØ§) اÙÙ
ØªØºÙØ± admin.name. Ø¨Ø¹Ø¯ÙØ§ Ø³ÙØ±Ø§Ù ÙÙÙ Ù
٠أراد بÙ
ا Ù٠ذÙÙ Ø§ÙØ§Ø³ØªØ¯Ø¹Ø§Ø¡Ø§Øª Ù
Ù Ø¯Ø§Ø®Ù ÙØØ¯Ø© admin.js ÙÙØ³Ùا:
// ð init.js
import {admin} from './admin.js';
admin.name = "Pete";
ÙÙÙ
ÙÙ ÙÙØØ¯Ø© أخر٠استعÙ
ا٠admin.name:
// ð other.js
import {admin, sayHi} from './admin.js';
alert(admin.name); // Pete
sayHi(); // Ready to serve, Pete!
import.meta
ÙØØªÙ٠اÙÙØ§Ø¦Ù import.meta عÙÙ Ù
عÙÙÙ
ات اÙÙØØ¯Ø© Ø§ÙØØ§ÙÙØ©.
ÙÙØ¹ØªÙ د Ù ØØªÙØ§ÙØ§ عÙÙ Ø§ÙØ¨Ùئة Ø§ÙØØ§ÙÙØ©Ø ÙÙ٠اÙ٠تصÙÙØØ§Øª ÙØØªÙ٠عÙ٠عÙÙØ§Ù اÙÙØµ Ø§ÙØ¨Ø±Ù ج٠أ٠عÙÙØ§Ù ØµÙØØ© اÙÙÙØ¨ Ø§ÙØØ§ÙÙØ© ÙÙ ÙØ§Ù داخ٠HTML:
html run height=0
<script type="module">
alert(import.meta.url); // â«Ø¹ÙÙØ§Ù URL ÙÙØ³Ùربت (عÙÙØ§Ù URL ÙØµÙØØ© HTML ÙÙØ³Ùربت Ø§ÙØ¶Ù
ÙÙ)
</script>
this Ù٠اÙÙØØ¯Ø§Øª ÙÙØ³Øª Ù
عرÙÙØ©
ÙØ¯ تÙÙÙ ÙØ°Ù اÙÙ ÙØ²Ø© ØµØºÙØ±Ø©Ø ÙÙÙÙÙØ§ Ø³ÙØ°ÙØ±ÙØ§ ÙÙÙØªÙ Ù ÙØ°Ø§ اÙÙØµÙ.
Ù٠اÙÙØØ¯Ø§ØªØ ÙÙÙ
Ø© this عاÙÙØ© اÙÙ
ستÙÙ ØºÙØ± Ù
عرÙÙØ©.
ÙØ§Ø²Ù بÙÙÙØ§ ÙØ¨ÙÙ Ø§ÙØ³Ùربتات ØºÙØ± اÙÙ
عتÙ
دة عÙ٠اÙÙØØ¯Ø§ØªØ Ø¥Ø° ستÙÙÙ this ÙØ§Ø¦ÙÙØ§ عاÙ
ÙØ§:
html run height=0
<script>
alert(this); // window
</script>
<script type="module">
alert(this); // ØºÙØ± Ù
عرÙÙ
</script>
اÙÙ ÙØ²Ø§Øª Ø§ÙØ®Ø§ØµØ© باÙ٠تصÙÙØØ§Øª
ÙÙ
ا Ø£Ù ÙÙØ§Ù Ø¹Ø¯ÙØ© ÙØ±Ù٠تخص٠اÙÙ
ØªØµÙØØ§Øª Ø§ÙØ³Ùربتات (اÙÙ
عتÙ
دة عÙ٠اÙÙØØ¯Ø§Øª) باÙÙÙØ¹ type="module"â Ù
ÙØ§Ø²Ùة٠بتÙÙ Ø§ÙØ¹Ø§Ø¯ÙØ©.
ÙÙ ÙÙØª ØªÙØ±Ø£ ÙØ°Ø§ اÙÙØµÙ ÙØ£ÙÙ Ù Ø±Ø©Ø Ø£Ù Ù٠تÙ٠تستع٠٠اÙÙ ØØ±ÙÙ Ù٠اÙ٠تصÙÙØ ÙÙÙ ÙÙ٠تخطÙÙ ÙØ°Ø§ اÙÙØ³Ù .
Ø³ÙØ±Ø¨ØªØ§Øª اÙÙØØ¯Ø§Øª Ù Ø¤Ø¬ÙØ©
دائÙ
ÙØ§ Ù
ا تÙÙÙ Ø³ÙØ±Ø¨ØªØ§Øª اÙÙØØ¯Ø§Øª Ù
Ø¤Ø¬ÙØ©Ø ÙÙ
Ø´Ø§Ø¨ÙØ© ÙØªØ£Ø«Ùر Ø§ÙØ³ÙÙ
Ø© defer (اÙÙ
ÙØ¶ØØ© ÙÙ ÙØ°Ø§ اÙÙ
ÙØ§Ù)Ø ÙÙÙ Ù
Ù Ø§ÙØ³Ùربتات اÙÙ
ضÙ
ÙÙØ© ÙØ§ÙØ®Ø§Ø±Ø¬ÙØ©.
Ø£Ù ÙØ¨Ø¹Ø¨Ø§Ø±Ø© أخرÙ:
- ØªÙØ²ÙÙ Ø§ÙØ³Ùربتات اÙÙ
عتÙ
دة عÙ٠اÙÙØØ¯Ø§Øª Ø§ÙØ®Ø§Ø±Ø¬ÙØ©
â<script type="module" src=â"...">âÙØ§ تÙÙÙÙ Ù Ø¹Ø§ÙØ¬Ø© HTML ÙØªÙØÙ ÙÙ Ø¨Ø§ÙØªÙاز٠٠ع اÙÙ ÙØ§Ø±Ø¯ Ø§ÙØ£Ø®Ø±Ù. - ØªÙØªØ¸Ø± Ø§ÙØ³Ùربتات اÙ٠عت٠دة عÙ٠اÙÙØØ¯Ø§Øª ØØªÙÙ ÙØ¬Ùز Ù Ø³ØªÙØ¯ HTML ØªÙ Ø§Ù ÙØ§ (ØØªÙÙ ÙÙ ÙØ§Ùت ØµØºÙØ±Ø© ÙØÙÙ ÙÙØª Ø¨ÙØÙ٠أسرع Ù Ù HTML) ÙØªÙشغÙÙ Ø¹ÙØ¯Ùا.
- ØªØØ§Ùظ عÙÙ Ø§ÙØªØ±ØªÙب اÙÙØ³Ø¨Ù ÙÙØ³Ùربتات: ÙØ§ÙØ³ÙØ±Ø¨Øª Ø°Ù Ø§ÙØªØ±ØªÙب Ø§ÙØ£ÙÙ ÙÙÙØ°Ù Ø£ÙÙÙØ§.
ÙÙØ³Ø¨Ùب ÙØ°Ø§ Ø¨Ø£Ù âØªØ±Ùâ Ø§ÙØ³ÙØ±Ø¨ØªØ§Øª اÙ٠عت٠دة عÙ٠اÙÙØØ¯Ø§Øª ØµÙØØ© HTML اÙÙ ØÙ ÙÙØ© ÙØ§Ù ÙØ© ب٠ا ÙÙÙ Ø¹ÙØ§ØµØ± Ø§ÙØ´Ø¬Ø±Ø© أسÙÙÙØ§.
٠ثاÙ:
<script type="module">
alert(typeof button); // â«Ùائ٠(object): ÙØ³ØªØ·Ùع Ø§ÙØ³Ùربت Ø±Ø¤ÙØ© Ø§ÙØ¹Ùاصر Ø£Ø¯ÙØ§Ù
// بÙ
ا أ٠اÙÙØØ¯Ø§Øª Ù
Ø¤Ø¬ÙØ©. سÙÙØ´ØºÙ Ø§ÙØ³Ùربت بعد تØÙ
ÙÙ ÙØ§Ù
Ù Ø§ÙØµÙØØ©
</script>
Compare to regular script below:
<script>
alert(typeof button); // button is undefined, the script can't see elements below
// Ø§ÙØ³Ùربت Ø§ÙØ¹Ø§Ø¯Ù سÙÙØ´ØºÙ Ù
باشرة ÙØ¨Ù Ø£Ù ÙÙØ³ØªÙÙ
٠تØÙ
ÙÙ Ø§ÙØµÙØØ©
</script>
<button id="button">Button</button>
ÙØ§ØÙظ ÙÙ٠أÙ٠اÙÙØµ Ø§ÙØ¨Ø±Ù
Ø¬Ù Ø§ÙØ«Ø§ÙÙ ÙÙØ´ØºÙÙ ÙØ¹ÙÙÙØ§ ÙØ¨Ù Ø§ÙØ£ÙÙ! ÙØ°Ø§ Ø³ÙØ±Ù Ø£ÙÙÙØ§ undefined ÙØ¨Ø¹Ø¯Ùا object.
ÙØ°Ù٠بسبب ÙÙ٠عÙ
ÙÙØ© تشغÙ٠اÙÙØØ¯Ø§Øª Ù
ÙØ¤Ø¬ÙØ© ÙØ°Ù٠سÙÙØªØ¸Ø± ÙØ§ÙتÙ
ا٠Ù
Ø¹Ø§ÙØ¬Ø© اÙÙ
Ø³ØªÙØ¯. ÙÙØ§ØØ¸ Ø£Ù Ø§ÙØ³Ùربت Ø§ÙØ¹Ø§Ø¯Ù سÙÙØ´ØºÙÙ Ù
باشرة بدÙ٠تأجÙÙ ÙÙØ°Ø§ Ø³ÙØ±Ù ÙØªØ§Ø¦Ø¬Ù Ø£ÙÙÙØ§.
عÙÙÙØ§ Ø£Ù ÙØØ°Ø± ØÙÙ ÙØ³ØªØ¹Ù ٠اÙÙØØ¯Ø§Øª إذ Ø£ÙÙ ØµÙØØ© HTML ØªØ¸ÙØ± بÙÙ٠ا اÙÙØØ¯Ø§Øª ØªÙØÙ ÙÙØ ÙØ¨Ø¹Ø¯Ùا تع٠٠اÙÙØØ¯Ø§Øª. Ø¨ÙØ°Ø§ ÙÙ ÙÙ Ø£Ù ÙØ±Ù اÙÙ Ø³ØªØ®Ø¯Ù Ø£Ø¬Ø²Ø§Ø¡Ù Ù Ù Ø§ÙØµÙØØ© ÙØ¨Ù Ø£Ù ÙØ¬Ùز تطبÙÙ Ø¬Ø§ÙØ§ Ø³ÙØ±ÙØ¨ØªØ ÙÙØ±Ù بأÙ٠بعض اÙÙØ¸Ø§Ø¦Ù Ù٠اÙÙ ÙÙØ¹ ÙØ§ تع٠٠بعد. عÙÙÙØ§ ÙÙØ§ ÙØ¶Ø¹ âÙ Ø¤Ø´ÙØ±Ø§Øª تØÙ ÙÙâ Ø£Ù Ø§ÙØªØ«Ø¨Ùت ٠٠أÙÙ Ø§ÙØ²Ø§Ø¦Ø± ÙÙ ÙØªØ´ØªÙت Ø¨ÙØ°Ø§ Ø§ÙØ£Ù ر.
Ø®Ø§ØµÙØ© Async عÙÙ Ø§ÙØ³Ùربتات اÙ٠ض٠ÙÙØ©
باÙÙØ³Ø¨Ø© ÙÙØ³Ùربتات ØºÙØ± اÙÙ
عتÙ
دة عÙ٠اÙÙØØ¯Ø§Øª ÙØ¥Ù Ø®Ø§ØµÙØ© async (Ø§Ø®ØªØµØ§Ø±ÙØ§ ÙÙÙÙ
Ø© Asynchronous Ø£Ù ØºÙØ± اÙÙ
تزاÙ
Ù) تعÙ
٠عÙÙ Ø§ÙØ³Ùربتات Ø§ÙØ®Ø§Ø±Ø¬ÙØ© ÙÙØ·. ÙØªÙØ´ØºÙ Ø§ÙØ³Ùربتات ØºÙØ± اÙÙ
تزاÙ
ÙØ© Ù
باشرة Ø¹ÙØ¯Ù
ا تÙÙÙ Ø¬Ø§ÙØ²Ø©ØØ¨Ø´ÙÙ Ù
ستÙÙ Ø¹Ù Ø§ÙØ³Ùربتات Ø§ÙØ£Ø®Ø±Ù أ٠ع٠Ù
Ø³ØªÙØ¯ HTML.
ØªØ¹Ù Ù Ø§ÙØ³Ùربتات اÙ٠عت٠دة عÙ٠اÙÙØØ¯Ø§Øª Ø·Ø¨ÙØ¹ÙÙØ§ ÙÙ Ø§ÙØ³Ùربتات اÙ٠ض٠ÙÙØ©.
ÙÙ
Ø«ÙÙØ§ ÙØØªÙÙ Ø§ÙØ³Ùربت اÙÙ
ÙØ¶Ù
Ù Ø£Ø¯ÙØ§Ù عÙÙ Ø§ÙØ®Ø§ØµÙØ© asyncØ ÙØ°Ù٠سÙÙØ´ØºÙÙ Ù
باشرة ÙÙÙ ÙÙØªØ¸Ø± Ø£Ù Ø´ÙØ¡.
ÙÙÙ ÙÙÙØ° عÙ
ÙÙØ© Ø§ÙØ§Ø³ØªÙراد (Ø§Ø¬ÙØ¨ اÙÙ
ÙÙ ./analytics.js) ÙØ´ØºÙÙ Ø¹ÙØ¯Ù
ا ÙØµØ¨Ø Ø¬Ø§ÙØ²ÙØ§Ø ØØªÙ ÙØ¥Ù ÙÙ
ÙÙØªÙÙ Ù
Ø³ØªÙØ¯ HTML بعد. Ø£Ù Ø§ÙØ³Ùربتات Ø§ÙØ£ÙØ®Ø±Ù ÙØ§ تزا٠Ù
عÙÙÙØ©.
ÙÙØ°Ø§ Ø¬ÙØ¯ ÙÙØªÙابع اÙ٠ستÙÙØ© Ù Ø«Ù Ø§ÙØ¹Ø¯Ø§Ø¯Ø§Øª ÙØ§ÙØ¥Ø¹ÙØ§Ùات Ù٠ست٠ع Ø§ÙØ£ØØ¯Ø§Ø« عÙ٠٠ستÙ٠اÙÙ Ø³ØªÙØ¯.
Ù٠اÙÙ Ø«Ø§Ù Ø£Ø¯ÙØ§ÙØ Ø¬ÙÙØ¨Øª Ø¬Ù ÙØ¹ Ø§ÙØªØ¨Ø¹Ùات (٠٠ض٠ÙÙØ§ analytics.js).â« ÙÙ Ù Ø«Ù Ù Ø´ÙØºÙÙ Ø§ÙØ³Ùربت ÙÙÙ ÙÙØªØ¸Ø± ØØªÙ Ø§ÙØªÙ ا٠تØÙ Ù٠اÙÙ Ø³ØªÙØ¯ Ø£Ù Ø§ÙØ³Ùربتات Ø§ÙØ£Ø®Ø±Ù.
<script async type="module">
import {counter} from './analytics.js';
counter.count();
</script>
Ø§ÙØ³Ùربتات Ø§ÙØ®Ø§Ø±Ø¬ÙØ©
تختÙÙ Ø§ÙØ³Ùربتات Ø§ÙØ®Ø§Ø±Ø¬ÙØ© Ø§ÙØªÙ ØªØØªÙ٠عÙÙ Ø§ÙØ³Ù
Ø© type="module"â ÙÙ Ø¬Ø§ÙØ¨ÙÙ:
-
تÙÙØ° Ø§ÙØ³Ùربتات Ø§ÙØ®Ø§Ø±Ø¬ÙØ© Ø§ÙØªÙ ÙÙØ§ ÙÙØ³ اÙÙÙÙ Ø© ÙÙØ®Ø§ØµÙØ©
src٠رة ÙØ§ØØ¯Ø© ÙÙØ·. ÙÙÙØ§ Ù Ø«ÙÙØ§ سÙÙØ¬Ùب Ø§ÙØ³Ùربتmy.jsÙÙÙÙØ° ٠رة ÙØ§ØØ¯Ø© ÙÙØ·.<script type="module" src="my.js"></script> <script type="module" src="my.js"></script> -
ØªØªØ·ÙØ¨ Ø§ÙØ³Ùربتات Ø§ÙØ®Ø§Ø±Ø¬ÙØ© Ø§ÙØªÙ ØªØ¬ÙØ¨ ٠٠٠صدر ٠ستÙÙ (Ù ÙÙØ¹ ٠ختÙÙ Ø¹Ù Ø§ÙØ£Ø³Ø§Ø³Ù) ترÙÙØ³Ø§Øª CORS ÙØ§ÙÙ ÙØ¶ØØ© ÙÙ ÙØ°Ø§ اÙÙ ÙØ§Ù. Ø¨ØªØ¹Ø¨ÙØ± آخر إ٠جÙÙÙØ¨Ù Ø³ÙØ±Ø¨Øª ÙØ¹ØªÙ د عÙ٠اÙÙØØ¯Ø§Øª ٠٠٠صدر ٠عÙÙ ÙÙØ¬Ø¨ عÙÙ Ø§ÙØ®Ø§Ø¯Ù Ø§ÙØ¨Ø¹Ùد Ø£Ù ÙØ¯Ø¹Ù ترÙÙØ³Ø§Øª Ø§ÙØ³Ù Ø§Ø Ø¨Ø§ÙØ¬Ùب
Access-Control-Allow-Origin. ÙØ¬Ø¨ Ø£Ù ÙØ¯Ø¹Ù اÙ٠صدر اÙ٠ستÙÙAccess-Control-Allow-Origin(Ù٠اÙÙ Ø«Ø§Ù Ø£Ø¯ÙØ§Ù اÙ٠صدر اÙ٠ستÙÙ ÙÙ another-site.com) ÙØ¥Ùا ÙÙÙ ÙØ¹Ù Ù Ø§ÙØ³Ùربت.<script type="module" src="http://another-site.com/their.js"></script>
ÙØ°ÙÙ Ø³ÙØ¶Ù Ù ÙÙØ§ ٠ستÙÙ Ø£Ù Ø§Ù Ø£ÙØ¶Ù Ø¥ÙØªØ±Ø§Ø¶ÙÙØ§.
ÙØ§ ÙÙØ³Ù Ø Ø¨Ø§ÙÙØØ¯Ø§Øª اÙ٠جردة
Ù٠اÙÙ
ØªØµÙØØ ÙØ¬Ø¨ Ø£Ù ØªØØµÙ تعÙÙÙ
Ø© import عÙ٠عÙÙØ§Ù URL ÙØ³Ø¨Ù Ø£Ù Ù
Ø·ÙÙ. ÙØªØ³Ù
٠اÙÙØØ¯Ø§Øª Ø§ÙØªÙ بدÙ٠أ٠Ù
سار باÙÙØØ¯Ø§Øª اÙÙ
جردة. ÙÙÙ Ù
Ù
ÙÙØ¹ Ù٠تعÙÙÙ
Ø© import.
ÙÙØ£Ø®Ø° Ù
ثاÙÙØ§ ÙÙØ¶Ø Ø§ÙØ£Ù
Ø±Ø ÙØ°Ø§ import ØºÙØ± ØµØ§ÙØ:
import {sayHi} from 'sayHi'; // خطأ ÙÙØØ¯Ø© Ù
جردة
// â«Ùجب أ٠تÙ
تÙ٠اÙÙØØ¯Ø© Ù
Ø³Ø§Ø±ÙØ§ Ù
Ø«Ù: 'â./sayHi.js' Ø£Ù Ù
ÙÙ
ا ÙÙÙ Ù
ÙÙØ¹ ÙØ°Ù اÙÙØØ¯Ø©
ØªØ³Ù Ø Ø¨Ø¹Ø¶ Ø§ÙØ¨ÙØ¦Ø§ØªØ Ù Ø«Ù Node.js Ø£Ù Ø£Ø¯ÙØ§Øª ØªØ¬Ù ÙØ¹ اÙÙØØ¯Ø§Øª باستخدا٠اÙÙØØ¯Ø§Øª اÙÙ Ø¬Ø±Ø¯Ø©Ø Ø¯ÙÙ Ø£Ù Ù Ø³Ø§Ø±Ø ØÙØ« Ø£Ù ÙØ¯ÙÙØ§ طرÙÙØ§ Ø§ÙØ®Ø§ØµØ© ÙÙØ¹Ø«Ùر عÙ٠اÙÙØØ¯Ø§Øª ÙØ§ÙØ®Ø·Ø§ÙØ§Øª ÙØ¶Ø¨Ø·Ùا. ÙÙÙÙ ØØªÙ Ø§ÙØ¢Ù ÙØ§ تدع٠اÙÙ ØªØµÙØØ§Øª اÙÙØØ¯Ø§Øª اÙ٠جردة.
Ø§ÙØªÙاÙÙÙØ© باستخدا٠ânomoduleâ
ÙØ§ تÙÙÙ
اÙÙ
ØªØµÙØØ§Øª اÙÙØ¯ÙÙ
Ø© طرÙÙØ© استخداÙ
اÙÙØØ¯Ø§Øª ÙÙ Ø§ÙØµÙØØ§Øª type ="module"â.Ø¨Ù ÙØ¥ÙÙØ§ تتجاÙÙ Ø§ÙØ³Ùربت ذ٠اÙÙÙØ¹Ù ØºÙØ± اÙÙ
عرÙÙ. باÙÙØ³Ø¨Ø© ÙÙÙ
Ø Ù
٠اÙÙ
Ù
ÙÙ ØªÙØ¯ÙÙ
ÙØ³Ø®Ø© Ù
خصصة ÙÙÙ
باستخداÙ
Ø§ÙØ³Ù
Ø© nomodule:
<script type="module">
alert("Runs in modern browsers");
</script>
<script nomodule>
alert("Modern browsers know both type=module and nomodule, so skip this"):// â«Ø§ÙÙ
ØªØµÙØØ§Øª Ø§ÙØØ¯ÙØ«Ø© تعر٠type=module Ù nomodule ÙØ°Ø§ Ù٠تÙÙØ° Ø§ÙØ£Ø®Ùر
alert("Old browsers ignore script with unknown type=module, but execute this.");// â«Ø§ÙÙ
ØªØµÙØØ§Øª اÙÙØ¯ÙÙ
Ø© ستتجاÙ٠اÙÙØ³Ù
Ø°Ù Ø§ÙØ³ÙÙ
Ø© type=module ÙÙÙ٠ستÙÙØ° ÙØ³Ù
nomodule
</script>
Ø£Ø¯ÙØ§Øª Ø§ÙØ¨Ùاء
ÙÙ Ø§ÙØÙØ§Ø© اÙÙØ§ÙØ¹ÙØ©Ø ÙØ§Ø¯Ø±Ùا ٠ا ØªØ³ØªØ®Ø¯Ù ÙØØ¯Ø§Øª اÙÙ ØªØµÙØ ÙÙ Ø´ÙÙÙØ§ âØ§ÙØ®Ø§Ù â. Ø¨Ù Ø¹Ø§Ø¯Ø©Ù ÙØ¬Ù Ø¹ÙØ§ ٠ع أداة خاصة ٠ث٠[Webpack] (https://webpack.js.org/) ÙÙÙØ´Ø±Ùا عÙ٠خاد٠اÙÙØ´Ø±.
Ø¥ØØ¯Ù Ù Ø²Ø§ÙØ§ استخدا٠اÙ٠ج٠عات â ÙÙÙ ØªÙ ÙØ اÙÙ Ø²ÙØ¯ Ù Ù Ø§ÙØªØÙÙ ÙÙ ÙÙÙÙØ© Ø§ÙØªØ¹Ø§Ù ٠٠ع اÙÙØØ¯Ø§ØªØ Ù Ù Ø§ ÙØ³Ù Ø Ø¨Ø§ÙÙØØ¯Ø§Øª اÙ٠جردة Ø¨Ù ÙØ£Ùثر ٠٠ذÙÙ Ø¨ÙØ«ÙØ±Ø Ù Ø«Ù ÙØØ¯Ø§Øª HTML/CSS.
ØªØ¤Ø¯Ù Ø£Ø¯ÙØ§Øª Ø§ÙØ¨Ùاء بعض اÙÙØ¸Ø§Ø¦Ù Ù ÙÙØ§:
- Ø¬ÙØ¨ اÙÙØØ¯Ø© Ø§ÙØ±Ø¦ÙØ³ÙØ©
mainØ ÙÙ٠اÙÙØØ¯Ø© اÙ٠راد ÙØ¶Ø¹Ùا ÙÙ ÙØ³Ùâ<script type ="module">âÙÙ Ù ÙÙ HTML. - تØÙÙÙ Ø§ÙØªØ¨Ø¹Ùات: تØÙÙ٠تعÙÙ٠ات Ø§ÙØ§Ø³ØªÙراد Ø§ÙØ®Ø§ØµØ© باÙÙ ÙÙ Ø§ÙØ±Ø¦ÙØ³Ù ÙØ«Ù ÙÙÙ ÙÙØ§Øª اÙÙ Ø³ØªÙØ±Ø¯Ø© Ø£ÙØ¶Ùا Ù٠ا Ø¥Ù٠ذÙÙ.
- Ø¥ÙØ´Ø§Ø¡ Ù
ÙÙÙØ§ ÙØ§ØØ¯Ùا ÙØØªÙ٠عÙ٠جÙ
ÙØ¹ اÙÙØØ¯Ø§Øª (Ù
ع Ø¥Ù
ÙØ§ÙÙØ© ØªÙØ³ÙÙ
ÙÙ ÙÙ
ÙÙØ§Øª Ù
تعددة)Ø Ù
ع استبدا٠تعÙÙÙ
Ø©
importØ§ÙØ£ØµÙÙØ© Ø¨ØªÙØ§Ø¨Ø¹ Ø§ÙØØ²Ù ÙÙÙ ÙØ¹Ù Ù Ø§ÙØ³Ùربت. Ù٠ا تدع٠أÙÙØ§Ø¹ ÙØØ¯Ø§Øª âØ®Ø§ØµØ©â Ù Ø«Ù ÙØØ¯Ø§Øª HTML/CSS. - ÙÙ
ÙÙÙØ§ تطبÙ٠عÙ
ÙÙØ§Øª تØÙÙÙ ÙØªØØ³ÙÙØ§Øª أخر٠ÙÙ ÙØ°Ù Ø§ÙØ¹Ù
ÙÙØ© Ù
Ø«Ù:
- Ø¥Ø²Ø§ÙØ© Ø§ÙØ´ÙÙØ±Ø§Øª اÙÙØªÙ ÙØªØ¹Ø°Ø± اÙÙØµÙ٠إÙÙÙØ§.
- Ø¥Ø²Ø§ÙØ© تعÙÙ٠ات Ø§ÙØªØµØ¯Ùر ØºÙØ± اÙ٠ستخد٠ة (Ù Ø´Ø§Ø¨ÙØ© ÙØ¹Ù ÙÙØ© ÙØ² Ø§ÙØ£Ø´Ø¬Ø§Ø± ÙØ³ÙÙØ· Ø§ÙØ£Ùرا٠اÙÙØ§Ø¨Ø³Ø©).
- Ø¥Ø²Ø§ÙØ© Ø§ÙØ¹Ø¨Ø§Ø±Ø§Øª Ø§ÙØ®Ø§ØµØ© بÙ
رØÙØ© Ø§ÙØªØ·ÙÙØ± Ù
Ø«Ù
consoleÙdebugger. - تØÙÙÙ Ø´ÙÙØ±Ø© Ø¬Ø§ÙØ§ Ø³ÙØ±Ùبت Ø§ÙØØ¯ÙØ«Ø© Ø¥ÙÙ Ø´ÙÙØ±Ø© Ø£ÙØ¯Ù Ø¨Ø§Ø³ØªØ®Ø¯Ø§Ù ÙØ¸Ø§Ø¦Ù Ù Ù Ø§Ø«ÙØ© ÙÙØØ²Ù Ø© [Babel] (https://babeljs.io/).
- ØªØµØºÙØ± اÙÙ Ù٠اÙÙØ§ØªØ¬ (Ø¥Ø²Ø§ÙØ© اÙÙ Ø³Ø§ÙØ§ØªØ ÙØ§Ø³ØªØ¨Ø¯Ø§Ù اÙÙ ØªØºÙØ±Ø§Øª بأس٠اء Ø£ÙØµØ±Ø Ù٠ا Ø¥Ù٠ذÙÙ).
Ø¹ÙØ¯ استخداÙ
ÙØ§ ÙØ£Ø¯Ùات Ø§ÙØªØ¬Ù
ÙØ¹ سÙÙØ¬Ù
ع Ø§ÙØ³Ùربت ÙÙØµØ¨Ø ÙÙ Ù
ÙÙ ÙØ§ØØ¯ (Ø£Ù Ù
ÙÙØ§Øª ÙÙÙÙØ©) Ø ØªÙØ³ØªØ¨Ø¯Ù تعÙÙÙ
ات import/export Ø¨Ø¯Ø§Ø®Ù Ø§ÙØ³Ùربتات Ø¨ØªÙØ§Ø¨Ø¹ اÙÙ
ÙØ¬Ù
ÙØ¹ Ø§ÙØ®Ø§ØµØ©. ÙØ°ÙÙ ÙØ§ ÙØØªÙÙ Ø§ÙØ³Ùربت âØ§ÙÙ
ÙØ¬ÙÙ
ÙØ¹â اÙÙØ§ØªØ¬ عÙ٠أ٠تعÙÙÙ
ات import/exportØ ÙÙØ§ ÙØªØ·Ùب Ø§ÙØ³ÙÙ
Ø© type="module"âØ ÙÙÙ
ÙÙÙØ§ ÙØ¶Ø¹Ù ÙÙ Ø³ÙØ±Ø¨Øª عادÙ:
Ù٠اÙÙ
Ø«Ø§Ù Ø£Ø¯ÙØ§Ù ÙÙÙØªØ±Ø¶ Ø£ÙÙØ§ جÙ
عÙÙØ§ Ø§ÙØ´ÙÙØ±Ø§Øª ÙÙ Ù
ÙÙ bundle.js باستخداÙ
Ù
جÙ
ع ØØ²Ù
Ù
Ø«Ù: Webpack.
<script src="bundle.js"></script>
Ù٠ع ذÙÙ ÙÙ ÙÙÙØ§ استخدا٠اÙÙØØ¯Ø§Øª Ø§ÙØ£ØµÙÙØ© (ÙÙ Ø´ÙÙÙØ§ Ø§ÙØ®Ø§Ù ). ÙØ°ÙÙ ÙÙ ÙØ³ØªØ®Ø¯Ù ÙÙØ§ أداة Webpack: ÙÙ ÙÙÙ Ø§ÙØªØ¹Ø±Ù عÙÙÙØ§ ÙØ¶Ø¨Ø·Ùا ÙØ§ØÙÙØ§.
Ø®ÙØ§ØµØ©
ÙÙÙØ®Øµ اÙÙ ÙØ§ÙÙÙ Ø§ÙØ£Ø³Ø§Ø³ÙØ©:
- اÙÙØØ¯Ø© ÙÙ Ù
جرد Ù
ÙÙ. ÙØ¬Ø¹Ù تعÙÙÙ
تÙ
import/exportØªØ¹Ù ÙØ§ÙØ Ø³ØªØØªØ§Ø¬ اÙÙ ØªØµÙØØ§Øª Ø¥ÙÙ ÙØ¶Ø¹ Ø§ÙØ³ÙÙ Ø© Ø§ÙØªØ§ÙÙØ©â<script type ="module">â. ØªØØªÙ٠اÙÙØØ¯Ø§Øª عÙ٠عدة Ù ÙÙ ÙØ²Ø§Øª:- Ù Ø¤Ø¬ÙØ© Ø¥ÙØªØ±Ø§Ø¶ÙÙØ§.
- ØªØ¹Ù Ù Ø§ÙØ®Ø§ØµÙØ© Async عÙÙ Ø§ÙØ³Ùربتات اÙ٠ض٠ÙÙØ©.
- ÙØªØÙ ÙÙ Ø§ÙØ³Ùربتات Ø§ÙØ®Ø§Ø±Ø¬ÙØ© ٠٠٠صدر ٠ستÙÙØ ÙØ¬Ø¨ استخدا٠طرÙÙØ© (اÙÙ ÙÙÙØ° / Ø§ÙØ¨Ø±ÙتÙÙÙÙ / اÙ٠جاÙ)Ø ÙØ³ÙØØªØ§Ø¬ ÙØªØ±ÙÙØ³Ø§Øª CORS Ø£ÙØ¶Ùا.
- Ø³ØªÙØªØ¬Ø§ÙÙ Ø§ÙØ³Ùربتات Ø§ÙØ®Ø§Ø±Ø¬ÙØ© اÙÙ ÙØ±Ø±Ø©.
- ÙÙÙ ÙÙØØ¯Ø© Ù
٠اÙÙØØ¯Ø§Øª ÙØ·Ø§Ù خاص Ø¨ÙØ§Ø ÙØªØªØ¨Ø§Ø¯Ù٠اÙÙØ¸Ø§Ø¦Ù ÙÙÙ
ا بÙÙÙØ§ Ù
Ù Ø®ÙØ§Ù Ø§Ø³ØªÙØ±Ø§Ø¯ ÙØªØµØ¯Ùر اÙÙØØ¯Ø§Øª
import/export. - تستخدÙ
اÙÙØØ¯Ø§Øª اÙÙØ¶Ø¹ Ø§ÙØµØ§Ø±Ù
دÙÙ
ÙØ§
use strict. - تÙÙÙØ° Ø´ÙÙØ±Ø© اÙÙØØ¯Ø© Ù٠رة ÙØ§ØØ¯Ø© ÙÙØ·. ÙØªÙصدر Ø¥ÙÙ Ù Ù Ø§Ø³ØªÙØ±Ø¯Ùا Ù٠رة ÙØ§ØØ¯Ø© Ø£ÙØ¶ÙØ§Ø ÙÙ Ù Ø«Ù Ù ØªÙØ´Ø§Ø±Ù بÙ٠اÙÙ Ø³ØªÙØ±Ø¯ÙÙ.
Ø¹ÙØ¯Ù
ا ÙØ³ØªØ®Ø¯Ù
اÙÙØØ¯Ø§ØªØ ØªÙÙØ° ÙÙ ÙÙØØ¯Ø© ÙØ¸ÙÙØ© Ù
عÙÙØ© ÙØªÙØµØ¯Ø±ÙØ§. ÙÙØ³ØªØ®Ø¯Ù
تعÙÙÙ
Ø© import ÙØ§Ø³ØªÙØ±Ø§Ø¯ÙØ§ Ù
باشرة Ø¹ÙØ¯ Ø§ÙØØ§Ø¬Ø©. إذ ÙÙØÙ
٠اÙÙ
ØªØµÙØ Ø§ÙØ³Ùربت ÙÙÙÙÙÙ
٠تÙÙØ§Ø¦ÙÙØ§.
ÙØ¨Ø§ÙÙØ³Ø¨Ø© ÙÙØ¶Ø¹ اÙÙØ´Ø±Ø ØºØ§ÙØ¨Ùا ٠ا ÙØ³ØªØ®Ø¯Ù اÙÙØ§Ø³ Ù ÙØØ²Ù٠اÙÙØØ¯Ø§Øª ٠ث٠[Webpack] (https://webpack.js.org) ÙØªØ¬Ù ÙØ¹ اÙÙØØ¯Ø§Øª Ù Ø¹ÙØ§ ÙØ±Ùع Ø§ÙØ£Ø¯Ø§Ø¡ ÙÙØ£Ø³Ø¨Ø§Ø¨ أخرÙ.
Ø³ÙØ±Ù Ù٠اÙÙØµÙ Ø§ÙØªØ§ÙÙ Ù Ø²ÙØ¯Ùا Ù Ù Ø§ÙØ£Ù Ø«ÙØ© ع٠اÙÙØØ¯Ø§ØªØ ÙÙÙÙÙØ© ØªØµØ¯ÙØ±Ùا ÙØ§Ø³ØªÙØ±Ø§Ø¯ÙØ§.
ترج٠ة -ÙØ¨ØªØµØ±Ù- ÙÙÙØµÙ Modules, introduction Ù Ù ÙØªØ§Ø¨ The JavaScript language
Ø§ÙØªØ¹ÙÙÙØ§Øª
<code>Ø ÙÙÙÙØ«Ùر Ù Ù Ø§ÙØ³Ø·Ùر استخدÙ<pre>Ø ÙÙØ£Ùثر Ù Ù 10 Ø³Ø·ÙØ± استخد٠(plnkr, JSBin, codepenâ¦)