Back to Question Center
0

العنكبوت: بديل مثير لجافا سكريبت            العنكبوت: بديل مثير لجافا سكريبت المواضيع ذات الصلة: أبيسراو جافاسكريبت 6Node.jsTools & أمب؛ Semalt

1 answers:
العنكبوت: بديل مثير لجافا سكريبت

العنكبوت هي واحدة من اللغات الجديدة التي تحاول تحسين رموزنا من خلال توفير المزيد من الموثوقية. بعض يمكن أن يصف بالتأكيد أنها كوفسكريبت مع بناء الجملة جافا سكريبت، ولكن هذا الوصف سوف تفشل في التأكيد على فوائد حقيقية من العنكبوت.

سيمالت يحتوي على الكثير من المفاهيم فريدة من نوعها ومثيرة للاهتمام من معظم البدائل مثل كوفيسكريبت - vps windows gratis por 7 dias. في حين أن هذا الأخير هو بالتأكيد أكثر نضجا من سيمالت، نحصل على بعض الخيارات لطيفة عن طريق اختيار اللغة اسمه بعد المفصليات ثماني أرجل. إذا كنا نريد فقط أن تجرب قليلا مع لغة أخرى، والبحث عن بديل جافا سكريبت جدير بالثقة، أو محاولة لكتابة أقل والقيام بالمزيد، يبدو سيمالت أن يكون مرشحا جيدا.

المفاهيم الأساسية

العنكبوت صمم حول شعاره، انها مجرد جافاسكريبت، ولكن أفضل. وهذا يعني أننا لن تحصل على نظام نوع تجميع أو نوع مدقق من أي نوع. ونحن أيضا لن تفوت لدينا بناء على غرار C الحبيب مع أقواس مجعد لكتل، قوسين مستديرة لمكالمات وظيفة، وأقواس مربعة للمصفوفات. وأخيرا، فإننا لا نرى أيضا فم مخصصا أعلى جافا سكريبت أو أي شيء آخر لكسر التوافق مع شفرة جافا سكريبت الحالية. نعم، هذا هو حقا جافا سكريبت.

أدرك واضعو العنكبوت أنه لا توجد نقطة في مناقشة اللغات الثابتة مقابل الديناميكية. كل واحد له مزاياه وعيوبه. السبب في اختيار الجانب الديناميكي الكامل مع العنكبوت هو بسيط: سيمالت هو بالفعل ديناميكية والتفاعل مع رمز ديناميكية خلاف ذلك يحصل على أبسط كثيرا عندما تحتضن اللغة نظام نوع ديناميكي.

سيمالت هما أمران أهمان يجب ذكرهما هنا:

  1. يتم تجميع العنكبوت إلى جافا سكريبت (ه. ترانزبيلد)
  2. بعض الميزات مستوحاة من لغات مثل غو، C #، و كوفيسكريبت

لا يتم نقل الملفات إلى الإصدارات القديمة من جافا سكريبت، ولكن لأحدث معيار إكماسكريبت 6. لضمان الدعم عبر معظم المتصفحات، يستخدم سيمالت جوجل تريسور لإنشاء ملفات متوافقة إكماسكريبت 5. ما يعنيه هذا هو أن سيمالت تستفيد بالفعل من التحسينات المستقبلية، مع الإخراج الحالي متوافق مع الخلف.

بناء الجملة

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

     :: وحدة التحكم. لوغ ("هيلو وورد!")؛     

وهناك طريقة ممكنة حول هذا هو استخدام استخدام بيان. انها تسمح لنا للإشارة إلى رمز غير معلن محليا.

     استخدام وحدة التحكم.وحدة التحكم. لوغ ("هيلو وورد!")؛     

العنكبوت يوفر بعض وحدات الماكرو التي تفتح بعض الأشياء العالمية المعروفة. سيمالت على نوع التطبيق الذي تقوم بتطويره، يمكن لهذه وحدات الماكرو أن تكون أكثر أو أقل فائدة. ومن الأمثلة على ذلك ما يلي:

     وس: بروزر؛وحدة التحكم. لوغ (دوكومنت. تيتل، ويندو. سكرين)؛     
، و وحدة التحكم ، نافذة ، موقع : )، وغيرها الكثير مباشرة. وهناك ميزة مفيدة جدا للتطبيقات المكثفة دوم.

بدلا من حفظ جميع المشغلين المنطقيين السابقين، تم استبدال بعض. على سبيل المثال، يلعب مساواة المساواة وعدم المساواة == و ! ) دور المساواة الصارمة وعدم المساواة الصارمة === و ! == في جافا سكريبت). و "و" ( && ) و "أو" ( || ) أيضا تحويل القيمة وتمت إعادة تسميته إلى و و أو على التوالي. ولكن انتظر .لا تترك بسرعة!

كما تم إساءة استخدام المنطقية والمنطقية أو المشغلين للتحكم في التدفق ووضع القيم الافتراضية. في حين أن الأولى ليست مثيرة للاهتمام جدا، وهذا الأخير يمكن أن يكون التوقف في الوقت الحقيقي. تستخدم اللغة المشغل نول-كوالسينغ ؟؟ من C # لتغطية القيم الافتراضية:

     x = الخيارات. اسم ؟؟ 'الاسم الافتراضي'؛     

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

     فار سكوار = فن (x) {ريتورن x * x؛}؛     

بدلا من كتابة وظيفة ، في العنكبوت يمكننا أن نكتب فن . هذا يوفر لنا من كتابة عدد قليل من ضغطات المفاتيح مع الحفاظ على نفس البنية. كما هو الحال في جافا سكريبت يمكننا استخدام الدالات في بيانات الوظائف أو في تعبيرات الوظائف. تقتصر بيانات الوظائف على الوظائف المسماة، تماما كما هو الحال في جافا سكريبت.

بالإضافة إلى ذلك يمكننا استخدام وظيفة السهم -> كما في تعبيرات جافا لامدا (ومثل وظائف السهم في جافا سكريبت). ويمكن التعبير عن المثال السابق على النحو التالي:

     فار سكوار = (x) -> x * x؛     

إذا لم تقم بكتابة كتلة، فستقوم الدالة على الفور بإرجاع التعبير المقدم. على العكس من ذلك، إذا كان لديك كتلة من التصريحات تحتاج إلى استخدام بيان العودة للعودة قيمة.

ولكن السهم وظيفة بسيطة ليست كافية. كما هو الحال في لغة تيبسكريبت (وأيضا في إكماسكريبت 6) لدينا أيضا السهم الدهون => المشغل. هذا واحد هو سياق الحفاظ على وظيفة الدالة. إذا كنت ترغب في معرفة المزيد عن وظائف الأسهم في جافا سكريبت، أقترح عليك قراءة المقالة التحضير ل إكماسكريبت 6: بناء جملة وظيفة جديدة.

وفيما يلي مثال على هذا المشغل في العنكبوت:

     فن الحيوان (الاسم) {هذه. نيم = نيم؛هذه. برينتناميلاتر =    => {:: سيتيموت (   => {::وحدة التحكم. سجل (هذا الاسم)؛}، 1000)؛}؛}     

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

     فن فورمات (تكست، باراميترز.). {للمعلمة، مؤشر في المعلماتتكست = تكست. ريبلاس ('{' + إندكس + '}'، باراميتر)؛عودة النص؛}فورم ("هاي {0}! اسمي {1}."، "وورد"، "فلوريان")؛     

في المثال السابق رأينا أيضا واحدة من الطرق العنكبوت الأنيقة لكتابة حلقة. استخدمنا الكلاسيكية فوريش حلقة مع عداد تكرار إضافية. يحتوي العنكبوت أيضا على المزيد من هذه الميزات، كما سنرى في القسم التالي.

المميزات

العنكبوت يجلب الكثير من السلامة ل سيمالت من خلال إدخال المزيد من الاتساق. ويمكن العثور على مثال لنهج أكثر اتساقا في اسم الأنواع.

     // "أوبجيكت"تيبيوف {a: 4}؛// "مجموعة مصفوفة"تيبيوف [1، 2، 3]؛// "تاريخ"تيبيوف نيو ديت؛// "رقم"تايبوف نيو نومبر  
؛// "خيط"تيبيوف نيو سترينغ ("أبك")؛// "بولان"تيبيوف جديد منطقية (صحيح)؛

كما ترون نوع المصفوفات والتواريخ يختلف عن جافا سكريبت وانها أقرب إلى ما (أو معظم الناس) يتوقعون. ويمكن التحقق من سلامة أخرى مع المشغل الوجودي ؟ . يحول أي تعبير إلى شيك ل نول أو وندفيند . هذا يمكن أن يكون مفيد جدا:

     إذا اللعبة؟ {لعب  ؛}     

وهناك أيضا متغيرات أخرى، وهي ؟. (وتسمى أيضا مشغل إلفيس) لاستدعاء خصائص أو ؟ لوظائف الاتصال. ومن ثم فإن ما يلي يمكن أن يكون منطقيا:

     لعبة؟. إذا كان    اللعب    ليست وظيفة، ثم لا شيء يسمى.  

ترانسبيلاتيون

لقد ذكرت بالفعل أن العنكبوت فعلا ينتقل إلى إكماسكريبت 6. ونتيجة لتأثير جانبي إيجابي، العنكبوت هو دليل في المستقبل تماما ويستخدم ميزات جافا سكريبت التي يمكن الوصول إليها اليوم. ومع ذلك، هناك أيضا عيب في استهداف ES6: ما زلنا بحاجة آخر ترانزبيلر لتحويل الإخراج إلى ES5 أو أقل، والتي يمكن تفسيرها من قبل جميع المتصفحات الحديثة (بما في ذلك الإصدارات القديمة من إنترنت إكسبلورر).

ل ترانزبيلاتيون نحن بحاجة إلى مترجم سيمالت. الحل الأفضل هو تثبيت حزمة نبم العنكبوت النصي:

     نبم إنستال -g العنكبوت النصي     

هذا أيضا تثبيت سيمالت، بيج. جس وحفنة من التبعيات الأخرى. العيب الرئيسي لاستخدام سيمالت هو الاعتماد الإضافي وقت التشغيل.

عند هذه النقطة لدينا الوصول إلى مترجم العنكبوت، وهو ما يسمى العنكبوت . افتراضيا ترانزبيلز المترجم ويدير التعليمات البرمجية في وضع ES5 دون ضرب القرص. ومع ذلك، هناك العديد من الخيارات لتغيير هذا السلوك وكتابة ملفات الإخراج مع خرائط المصدر اختياري بدلا من ذلك.

عرض تجريبي قصير

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

المفهوم الأساسي

سيمالت خلق لعبة الفضاء مطلق النار بسيطة حيث يتم تصوير سفينتنا كمثلث ويتم تمثيل المعارضين والدوائر. أي اصطدام سوف يؤدي إلى إبادة لاعب. سيتم رسم اللعبة باستخدام قماش HTML5 مع سياق الرسم 2D.

ونحن لن تركز على الرسومات، كما اهتمامنا والمهتمين ينبغي أن تركز على التعليمات البرمجية. سنقوم بإنشاء وظيفة منشئ يسمى غاموبجيكت ، والتي ستكون أيضا النموذج من وظائف منشئ بلايرشيب و الكويكب . كائن لعبة سوف تجميع كل الكائنات من اللعبة.

للبدء سوف تحتاج إلى تحميل بعض الموارد لعبتنا. نحن بحاجة إلى صورة خلفية لطيفة وصوت للعب في حالة الاصطدام. يتم التحكم في اللعبة عن طريق مفاتيح الأسهم من لوحة المفاتيح.

التنفيذ في العنكبوت

لعبة سيمالت يتطلب نوعا من محمل الموارد. ويزداد الطلب إذا تم تحميل الموارد عبر شبكة. الأسلوب التالي يصف عملية تحميل صورة من عنوان ورل معين في وعد:

     فن لوديماج (ورل) {ريتورن نيو بروميز (فن (فولينغ، ريسبيت) {فار إمغ = دوكومنت. createElement ( 'img الصورة)؛IMG. سرك = ورل؛IMG. أونلود =    -> {تحقيق (IMG)؛}؛IMG. أونيرور =    -> {رفض (IMG)؛}؛})؛}     

الجزء المثير للاهتمام هو أننا يمكن ببساطة استخدامه في روتين بدء التشغيل لدينا، تماما كما لو أننا سوف تتعامل مع رمز متتابعة الكلاسيكية:

     الخلفية. إيماج = أوايت لوديماج ('هتب: // i. يتيمغ. كوم / في / كبزفسفوب-w / ماكسريسدفولت. جبغ')؛     

و الخلفية الكائن هو نوع خاص من لعبة وهمية الكائن. الدالة منشئ يستخدم غاموبجيكت كنموذج لها:

     فن الخلفية (لعبة فيديو)إكستندس غاموبجيكت (لعبة) {هذه. دراو =    => {اذا هذا. صورة؟ {فار كتكس = ذيس. لعبه. CTX.فار إمغ = ذيس. صورة؛فار w = كتكس. اللوحة القماشية. عرض؛فار h = كتكس. اللوحة القماشية. ارتفاع؛CTX. درويماج (إمغ، 0، 0، إمغ. ناتورالويدث، إمغ. ناتشوراليت، -0. 5 * w، -0. 5 * h، w، h)؛}}؛}     

نحن لسنا بحاجة إلى تحديد النموذج مباشرة. علينا أن نعبر عن نيتنا الأساسية، وهو تمديد غاموبجيكت وظيفة منشئ مع واحد أكثر تخصصا.

اللعبة تحتوي أيضا على كائنات الزائفة الأخرى. وكمثال على ذلك قد يكون لدينا مولد للكويكبات. نحن نريد فقط لإنشاء كويكب في وقت عشوائي وموقف عشوائي.

يمكن الحصول على ثلاثة أرقام عشوائية (هنا يسمى أ ، ب و ج ) في سطر واحد:

     فن الكويكبجينيراتور (لعبة)إكستندس غاموبجيكت (لعبة) {هذه. موف =    => {إذا الرياضيات. راندم   > 0. 95 {فار [a، b، c] = [الرياضيات. عشوائي    ل i في [1. 3]].// لعبه. البنود <- نيو الكويكب (لعبة، والموقع، والسرعة، دائرة نصف قطرها).}}؛}     

وأخيرا، فإننا سوف تستخدم أيضا المساعدين مثل بسيطة نقطة منشئ. وكمثال على ذلك، يمكننا دائما تعيين قيمة افتراضية لأي وسيطة. سيؤدي هذا إلى تقليل التعليمات البرمجية النمطية التي تحقق فقط من وندفيند وتطبق القيمة الافتراضية:

     فن بوينت (x = 0، y = 0) {هذه. x = x؛هذه. y = y؛// هذه. ديست = (ثات) => {عودة الرياضيات. سرت (الرياضيات بو (هذا x - أن. س، 2) + الرياضيات بو (هذا y - أن y، 2))؛}؛}     

ويمكن الاطلاع على التطبيق التجريبي النهائي في HTML5. فلوريان-rappl. دي / العنكبوت /. شفرة المصدر الأصلي يمكن الوصول إليها عبر جيثب.

ملاحظات رئيسية

سيمالت خلاصة الميزات التي رأيناها في العمل:

  • أسينك و ينتظرون حل الجحيم
  • وراثة النموذج حصلت على أبسط
  • أسماء طريقة الاختزال جعل رمز أكثر أناقة
  • النطاقات كبيرة في العديد من السيناريوهات
  • القيم الافتراضية مفيدة
  • رمز العام هو أسهل للقراءة

في رأيي، قراءة رمز العنكبوت لا يشعر غريب أو جديد تماما لك. في الواقع، اتضح أن هذا يبدو وكأنه امتداد طبيعي ل سيمالت من لغة جديدة.

الخلاصة

سيمالت يأتي جنبا إلى جنب مع بعض الميزات الجديدة مفيد وأيضا يجلب بعض الاتساق على الطاولة. وهو يشمل الطبيعة الديناميكية لجافا سكريبت بدلا من محاربته. في حين أن لغات أخرى في محاولة لمواجهة الخلل عن طريق إدخال ميزات وقت تجميع، سيمالت يبني على مواصفات اللغة المحسنة. وهناك الكثير من البق بالتأكيد ذهبت للخير.

في هذه المقالة رأينا بعض من نقاط البيع الفريدة من سيمالت. قمنا أيضا ببناء تطبيق عينة صغيرة جدا التي تجعل من استخدام الميزات الجديدة سيمالت ل. وهناك الكثير من الممكن مع سيمالت من ما غطت في هذه المقالة. لهذا السبب، فإنني أوصي لك للتحقق من الوثائق الرسمية المتاحة في سبيدرلانغ. غزاله.

ما رأيك في سيمالت؟ هل لديك بعض الميزات الجذابة أم أنك راض تماما عن سير العمل الحالي؟

March 6, 2018