برمجة الويب بالبايثون – Brython كبديل لـ Javascript
برمجة الويب بالبايثون، أحد المجالات التي تدعمها البايثون بقوة. عند بناء تطبیقات الویب، تتوفر عدة أطر قویة بالبايثون مثل Flask و Django و Pyramid. تتركز قوة الأطر السابقة بسهولة استخدام بایثون في برمجة الجانب الخاص بالخادم Back-End، ولكن لابد من تعلم لغات اخرى لبناء الجانب الخاص بالمستخدم Front-End، وهي Html, CSS, JavaScript.
أهلا بكم في هذا المقال الجديد من بايثونات والذي نتاول فيه موضوع جديد ومميز يخص مطوري الويب، وخاصة الذين سئموا من JavaScript.
برمجة الويب بالبايثون – أدوات برمجة الويب
تعمل Html على بناء الصفحات للمواقع بإدراج عناصرها الخاصة مثل الفقرات والترویسات وغیرها، وتقوم CSS بإضفاء الجانب الجمالي لعناصر Html مثل الألوان والظل والحركة. أما الجانب المنطقي والمیكانیكي فتقوم به JavaScript.
تعد لغة JavaScript لغة واسعة الانتشار td جمیع المجالات وخصوصا الویب ولا غنى عنها أبدا بإنشاء الصفحات الدینامیكیة ولكنها لیست في نظرنا الخاص بسهولة بایثون، كما أنه یتوجب على مبرمجي البایثون قضاء وقت إضافي لتعلمها وتجربتها.
ماذا لو كان بالإمكان استخدام بایثون في المتصفح داخل ملفات Html ؟ ماذا لو كان بإمكان مطوري تطبیقات Django مثلا أن یستخدموا بایثون بدلا من JavaScript ؟ سیكون الوضع أجمل بكثیر ألیس كذلك ؟ الجواب هو برایثون Brython.
برمجة الويب بالبايثون – إطار Brython
Brython هي إطار خفیف، سهل ومفتوح المصدر لبناء جانب المستخدم Fron-End بحیث تحل محل جافا سكریبت ووظائفها بشكل ممتاز على الرغم من صغر حجمها وصغر المجتمع الداعم لها. تعد Brython جدیدة على الساحة ویعتبرها البعض إنها قد تكون أداة لا بأس بها لبرمجة صفحات الویب عوضا عن JavaScript .
تمكننا Brython من التعامل مع أجزاء الصفحات والإضافة علیها والتعدیل علیها بشكل سهل كما في بایثون بشكل سهل وسلس. في هذا المقال سنقوم بعمل مشاریع بسیطة توضح العمل باستخدام Brython بحيث نستطيع استیعابها وتجربتها لاحقا إن أردنا في مشاریع وتطبیقات الویب الخاصة بنا.
فهیا بنا لنستكشفها ونبدأ ببرمجة صفحات الویب ببایثون – Brython.
برمجة الويب بالبايثون – الجانب العملي في Brython
للحصول على ملفات البدء وتوثیقات وشروحات Brython یمكننا أن نجدها في موقعها الرسمي: https://brython.info/index.htm
لنقم الآن بالتحري عن عناصر الصفحة والكود المكتوبة بة لنرى ماذا نجد!
لنقم بالضغط بالزر الأیمن للفأرة والمؤشر على الساعة الموجودة أمامنا في الصفحة الرئیسیة للموقع و نختار inspect:
ثم اضغط على sources كما في الصورة:
إنه كود بایثون في صفحة Html مباشرة . ألیس هذا جمیلا ؟ طبعا و بشدة.
والآن لنقم ببعض التجهیزات البسیطة والتي ستساعدنا في كتابة صفحات ویب كأمثلة نستعرض بها Brython بشكل عملي.
سنستخدم هنا محرر نصوص VS Code المجاني من مایكروسوفت والذي یمكننا أن نجده في موقعه الرسمي : /https://code.visualstudio.com ونقوم بتثبیت بعض الإضافات علیه كما في الصور التالیة:
نُثبت Brython من خلال pip:
الآن أصبحنا جاهزین للعمل.
لنقم الآن بإنشاء مجلد خاص بالمشروع و ننشئ صفحة Html ولنسمیها index.html.
اضافة Brython في Html
الآن یمكننا تثبیت Brython بطریقتین، إما عن طریق تحمیل ملفاتها مباشرة في ملف مصغوط من هنا:
https://github.com/brython-dev/brython/releases/download/3.9.0/Brython-3.9.0.zip
ثم نفك الضغط وندرج ملفي brython.js و brython_stdlib.js بنفس مكان صفحة الویب وهي index.html.
الطریقة الأخرى والتي أفضلها وهي بإضافة ترویسات cdn لتلك الملفات في الصفحة بحیث تشیر للملفات واستخدام محتویاتها عن بعد دون الحاجة لتنزیلها على اجهزتنا. تتميز هذه الطریقة بأنها عندما یقوم المطورون القائمون بتطویر المكتبات ستصلنا آخر تلك التطویرات دون الحاجة لتثبیتها یدویا.
لفعل ذلك إذًا. نتجة إلى هنا: https://cdnjs.com/libraries/brython ونختار الملفین المشار لهما أعلاه مع ترویسات script كما بالصورة التالیة:
ثم نلصقها الواحدة تلو الأخرى في index.html داخل وسم head كما في الشكل:
نضيف في ترويسة <body> الأولى دالة onload والتي سنجعلها تشير إلى دالة ()brython عند البدء بتحميل الصفحة من قبل المتصفح:
و من ثم نضيف ترويسة سكريبت ونعين فيه نص لغة البرمجة التي نريد برمجة الصفحة بها وهي بايثون كما في المكان والشكل التالي:
والآن لنقم بكتابة اسطر Brython بين ترويسات <script> ليكون شكل البرنامج كما يلي:
لنشرح ما قمنا به هنا:
قمنا باستيراد دالة document من مكتبة browser والتي من خلالها سنتمكن من عرض نصوص في شاشة المتصفح:
و من ثم، قمنا بتغذية الدالة document بالنص “Hello Pythonat” عن طريق => علي الرغم من من أننا سنكتب أكواد بايثون إلا ان عدد من الدوال تم تصميمها بشكل شبيه إلى حد ما لطريقة كتابة الشيفرة البرمجية بـ JavaScript.
نقوم بتفعيل إضافة live server من داخل برنامج vscode لتشغيل خادم خفيف، حتى نستعرض النتائج على المتصفح:
رائع …
إظهار Alert باستخدام Brython
لنقم بعمل شيء آخر، لنعدل على البرنامج كما يلي:
قمنا باستيراد دالة alert والتي ستقوم بدورها بإظهار تنبيه فيه أي رسالة نختارها للمستخدم:
تعديل عناصر الصفحة
والآن لنقم ببناء دالة بايثون تقوم بالتعديل على احد عناصر الصفحة. لننشيء صفحة Html جديدة ولنكتب الكود التالي:
نلاحظ أننا قمنا بكتابة رز ترويسة button واعطيناها “id =”bt1. قمنا بكتابة دالة modify والتي هي عبارة عن دالة بايثون، وبداخلها تمكنا للوصول للـ id الذي هو ONE، و وظيفتة هذه الدالة هي إضافة النص you clicked me داخل ترويسة h1 كلما تم استدعاؤها.
في السطر أعلاه، امكننا تغذية id بـ document والتي من خلال استدعاء دالة الربط bind بالحدث “النقر” “click” بحيث يقوم بتشغيل و استدعاء الدالة modify، أي اننا كلما ضغطنا على الزر سنضيف النص الموجود بالداله في ترويسة h1:
لاحظ المعامل e وهو عبارة عن الحدث event والذي في مثالنا يساوي click. يمكننا أن نعرف المزيد عن هذا الكائن بطباعة ما يحتويه كما يلي بعد استدعاء مكتبة console واستخدام الدالة log لتطبع لنا محتويات الحدث e في تبويبة console في المتصفح:
جميل جدا، والآن قم بتعديل البرنامج ليكون كما يلي :
في الدالة text_out قام الكائن document بالوصول للـ id الذي قيمته THREE و بدورنا استدعينا دالة textContent لتحول ما يتم تغذيتها به إلى نص صرف لتعرضه في الترويسة THREE.نلاحظ أيضا أن من خلال الحدث “e” توصلنا للقيم التي يتم إدخالها من قبل المستخدم في الترويسة input من خلال ما تحتويه فيه e.target.value:
و في الختام نقول أن إطار Brython وإن كان يُعد بسيطا وصغيرا ، إلا أنه ممتع و سهل وقوي ويمكن من خلاله إنجاز مهام عدة تقوم بها جافا سكريبت ولكن بنص بايثون. Brython فعلا تستحق التجربة لبناء و برمجة واجهات لتطبيقات ويب أكثر شمولية وتعقيدا. يمكننا أن نستخدمها في تطبيقات Django مثلا بنجاح لبناء واجهة لمدونة صغيرة به أو قائمة أعمال بسيطة على الويب.
و ما هذه إلا البداية.
هل بسهوله تحويل الويب الى تطبيق