# Alpine.js ![npm bundle size](https://img.shields.io/bundlephobia/minzip/alpinejs) ![npm version](https://img.shields.io/npm/v/alpinejs) [![Chat](https://img.shields.io/badge/chat-on%20discord-7289da.svg?sanitize=true)](https://alpinejs.codewithhugo.com/chat/) توفر لك Alpine.js بنية تفاعلية (تصريحية) مثل أُطر العمل الشهيرة Vue و React بكُلفة وجهد أقل بكثير. يمكنك الإحتفاظ بـ DOM والاستمرار في استخدامه، وإضافة الدّوال والوظائف له عند الحاجة. يشبه إلى حد ما [Tailwind](https://tailwindcss.com/) ولكن في الجافاسكربت. > ملاحظة: نشير إلى أن بُنية Alpine.js شبية جداً بـ [Vue](https://vuejs.org/) (أو [Angular](https://angularjs.org/)). أنا ممتن لهذه الأُطر بما قدموه في تطوير الويب. #### ملاحظة: يمكنك قراءة التوثيق بتنسيق أفضل "RTL" من الرابط التالي ([AlpineJs بالعربية](https://alpinejs.abdelhadi.org/#/)). ## التوثيق بلغات أخرى | Language | Link for documentation | | --- | --- | | Arabic | [**التوثيق باللغة العربية**](./README.ar.md) | | Chinese Traditional | [**繁體中文說明文件**](./README.zh-TW.md) | | German | [**Dokumentation in Deutsch**](./README.de.md) | | Indonesian | [**Dokumentasi Bahasa Indonesia**](./README.id.md) | | Japanese | [**日本語ドキュメント**](./README.ja.md) | | Portuguese | [**Documentação em Português**](./README.pt.md) | | Russian | [**Документация на русском**](./README.ru.md) | | Spanish | [**Documentación en Español**](./README.es.md) | | Turkish | [**Türkçe Dokümantasyon**](./README.tr.md) | | Français | [**Documentation en Français**](./README.fr.md) | ## التركيب **باستعمال CDN:** أضف السطر البرمجي التالي في نهاية ``.
```html ```
سيقوم Alpine.js بتهيئة نفسه، سهلة أليس كذلك! في بيئات التطوير، نوصي باستعمال إصدار محدّد كما في الرابط، لتجنب حدوث مشاكل غير متوقعة أو تصادمها مع الإصدارات الحديثة. على سبيل المثال، لاستخدام الإصدار الأخير (2.8.2) يمكنك كتابة:
```html ```
**باستعمال NPM:** قم بتنصيب الحزمة من NPM.
```js npm i alpinejs ```
قم باستدعائها وتضمينها في مشروعك.
```js import 'alpinejs' ```
**لدعم نسخة المتصفّح IE11** يرجى استعمال السُطور البرمجية التالية بدلاً عن السابق.
```html ```
لو تُلاحظ في السطور أعلاه كتبنا [module/nomodule pattern](https://philipwalton.com/articles/deploying-es2015-code-in-production-today/) ، تسمح هذه الأنماط للمتصفحات الحديثة بتحميل مجموعة الوحدات بشكل تلقائي، بينما ستقوم IE11 والمتصفحات القديمة الأخرى تبحميل وحدات IE11 تلقائياً. ## طريقة الاستخدام القائمة المنسدلة (Dropdown) والنوافذ (Modal)
```html
    محتوى القائمة
```
*علامات التبويب (Tabs)*
```html
النافذة Foo
النافذة Bar
```
يمكنك أيضاً استخدامه في أماكن أخرى: *التحضير المُسبق (Pre-fetching) لمُحتوى HTML.*
```html
جارٍ التحميل ...
```
## الشرح هناك إجمالي 14 موجّهاً مُتاحا: | الموجّه | الوصف | | --: | --: | | [`x-data`](#x-data) | إعلان أو تعريف حقل (Scope) جديد للمكوّن. | | [`x-init`](#x-init) | ينفّذ تعليمات برمجية عند تشغيل إحدى المكوّنات. | | [`x-show`](#x-show) | إظهار أو إزالة العناصر بناء على التعبيرات المنطقية `display: none;` صحيحة أو خاطئة. | | [`x-bind`](#x-bind) | يضبط قيمة السّمة (attribute) على حسب نتائج تعليمات الجافاسكربت. | | [`x-on`](#x-on) | يربط المُنصِت للأحداث (event listener) بالعنصر، يتم تنفيذ تعليمات الجافاسكربت عند التفاعل معه. | | [`x-model`](#x-model) | يضيف اتصالا للبيانات ثنائي الإتجاه "two-way data binding" حيث أن القيم الذي يُدخلها المستخدم تتم مزامنتها مع قيمة بيانات العنصر للمكوّن. | | [`x-text`](#x-text) | يعمل بشكل مشابه لـ `x-bind`، ولكنه يقوم بتحديث النص المضمن `innerText` داخل العنصر. | | [`x-html`](#x-html) | يعمل بشكل مشابه لـ `x-bind`، ولكنه يقوم بتحديث النص المضمن `innerText` داخل العنصر. | | [`x-ref`](#x-ref) | طريقة سهلة لاسترجاع عنصر داخل DOM موجود خارج المكوّن الخاص بك. | | [`x-if`](#x-if) | إزالة عنصر تماماً من الـDOM. يجب استخدامه داخل وَسم `