سؤال

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

هل تعرف من أي موجود أو المخطط المبادرة لتقديم أفضل (تصميم) اللغة من أي نوع (ليس فقط جافا سكريبت) على شجرة DOM التلاعب طلبات HTTP في الجيل القادم المتصفحات ؟ إذا كان الجواب نعم ، ما هي خارطة طريق الاندماج في, قول, فايرفوكس, و إذا لا, ما أسباب (بصرف النظر من قابلية التشغيل البيني) يجب أن يكون جافا سكريبت فقط اللغة المعتمدة على المتصفح منصة ؟

أنا استخدمت بالفعل مسج و قرأت أيضا "جافا سكريبت:أجزاء جيدة".بل اقتراحات جيدة ، ولكن ما لا استطيع فهمه هو:لماذا فقط جافا سكريبت ؟ على جانب الملقم (الخاص-المفضلة-os منصة) ، يمكننا التعامل مع شجرة DOM مع كل لغة ، حتى fortran.لماذا جانب العميل (المستعرض منصة) دعم جافا سكريبت ؟

هل كانت مفيدة؟

المحلول

المشكلة مع JavaScript ليست اللغة نفسها - إنها لغة نتاجية جيدة وممتازة تماما. إذا أتيت من خلفية OO، فهناك قليلا من منحنى التعلم، لكنه ليس خطأ اللغة.

يفترض معظم الناس أن JavaScript يشبه Java لأنه يحتوي على بناء جملة مماثلة واسم مشابه، لكنه في الواقع هو أكثر بكثير مثل LISP. انها فعلا مناسبة تماما مع التلاعب في الدوم.

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

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


تحرير بعد التوضيح في السؤال

لنفترض أن العديد من اللغات المترجمة كانت مدعومة - لا يزال لديك نفس المشاكل. المتصفحات المختلفة ستظل عربات التي تجرها الدواب ولها دورية مختلفة.

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

لا يمكنك استخدام اللغات المترجمة بنفس الطريقة - فأنت مقدما قابل للتنفيذ لا يمكن فحصه بسهولة لما يفعله. سيختار الكثير من المستخدمين عدم الاتصال به.

حسنا، ماذا عن نوع من Sandbox للحصول على الرمز المترجم؟ يبدو مثل applets java بالنسبة لي. أو أكشاف في فلاش. أو C # في silverlight.

ماذا عن نوع من معيار IL؟ هذا لديه إمكانات أكثر. تتطور بأي شكل من اللغات التي تريدها ثم تجميعها من أجل IL، الذي يتعرض عليه المتصفح ثم Jits.

إلا، جافا سكريبت هو نوع من بالفعل أن إيل - مجرد إلقاء نظرة على غوت. وبعد يتيح لك كتابة البرامج في Java، ولكن قم بتوزيعها كأملاء HTML و JS.


تحرير بعد المزيد من التوضيح في السؤال

javaScript غير موجود، أو بالأحرى لم يكن، اللغة الوحيدة التي تدعمها المتصفحات: العودة في الأعمار الداكنة Internet Explorer، يمكنك الاختيار بين JavaScript أو VBScript لتشغيل IE. من الناحية الفنية، لم يدرك حتى جافا سكريبت - ركض jscript. (أساسا لتجنب الاضطرار إلى دفع الشمس لكلمة جاوة, ، أوراكل لا تزال تملك الاسم جافا سكريبت).

كانت المشكلة أن VBScript كانت ملكية ل Microsoft، ولكن أيضا أنها لم تكن جيدة جدا. بينما كان JavaScript يضيف وظائف والحصول على أدوات تصحيح الأخطاء في المتصفحات الأخرى (مثل Firebug) ظل VBScript IE-LON-LOWN-NOWN-NOW-NOUGGELY (أدوات ديف في IE4 / 5/6 لم تكن موجودة). وفي الوقت نفسه، توسعت VBScript أيضا لتصبح أداة نصية قوية جدا في نظام التشغيل، ولكن لم تتوفر أي من هذه الميزات في المتصفح (وعندما أصبحوا ثقوبا أمانا ضخمة).

لا تزال هناك بعض التطبيقات الداخلية للشركات هناك تستخدم VBScript (وبعضها يعتمد على تلك الثقوب الأمنية)، وما زالوا يركضون IE7 (توقفوا فقط IE6 لأن MS قتلت أخيرا).

إن الحصول على JavaScript لهذه الولاية الحالية كانت كابوس واستغرق 20 عاما. لا يزال ليس لديه دعم متسق، مع ميزات اللغة (المحددة في عام 1999) لا تزال مفقودة من بعض المتصفحات والكثير من الحشوات المطلوبة.

إن إضافة لغة بديلة لتفسيرها في المتصفحات تواجه مشكلتين رئيسيتين:

  • الحصول على جميع بائعي المتصفح لتنفيذ معايير اللغة الجديدة - شيء ما زالوا يدارون ل JavaScript منذ 20 عاما.

  • لغة ثانية يحتمل أن تخفف الدعم الذي لديك بالفعل، مما يسمح (على سبيل المثال)، أي أن يكون لديك دعم JavaScript المستوى الثاني ولكن VBScript كبيرة (مرة أخرى). أنا حقا لا أريد أن أكتب التعليمات البرمجية بلغات مختلفة لمتصفحات مختلفة.

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

نصائح أخرى

ترجمة إلى جافا سكريبت

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

(لكنني لا أعتقد أن هذه مشكلة. تم تحسين JavaScript بشكل جيد الآن. رمز الجهاز غير آمن أيضا إذا كتب باليد، ولكن يعمل بشكل جيد كهدف تجميع لغة وكلية التنفيذ.)

الكثير من الخيارات

هناك مجموعة متنامية من اللغات التي تجميعها إلى JavaScript. يمكن العثور على قائمة شاملة إلى حد ما هنا:

جديرة بالثقة

سأذكر بعض الشيء ما أعتقد أنه جدير بالملاحظة (في حين لا يشك الشك في إهمال بعض الأحجار الكريمة التي أنا غير مدرك لها):

  • العنكبوت ظهرت في عام 2016. إنها تدعي أنها تأخذ أفضل أفكار للذهاب، سويفت، بيثون، C # و CoffeeScript. انها ليست محاطة، ولكن لديها بعض القاصر ميزات السلامة.

  • إلمام: قد يكون haskell أذكى اللغة منهم جميعا، والمنظم هو متغير هاسكل ل JavaScript. انها ذات دلالة للغاية وعدم الاطلاع، والعروض البرمجة الفعلية التفاعلية كبديل أنيق للقوالب التفاعلية أو السباغيتي MVC. ولكن قد يكون تماما صدمة للمبرمجين الإجرائي.

  • جوجل اذهب يهدف إلى وجيزة والبساطة والسلامة. يمكن تجميع رمز الذهاب في جافا سكريبت بواسطة gopherjs..

  • سهم كانت محاولة جوجل لاحقة لاستبدال جافا سكريبت. يوفر واجهات وفصول مجردة من خلال بناء جملة تشبه جافا مع الكتابة الاختيارية.

  • هاكسا يشبه تصنيع فلاش، ولكن يمكن الهدف لغات متعددة لذلك يمكن إعادة استخدام الكود الخاص بك في برامج Java و C و Flash و PHP و JavaScript. يوفر الكائنات الآمنة والديناميكية.

  • Opalang. يضيف السكر النحوي إلى جافا سكريبت لتوفير الوصول إلى قاعدة البيانات المباشرة, ، استمرار الذكية، والتحقق من النوع والمساعدة في فصل العميل / الخادم. (مرتبطة Nodejs و mongodb.)

  • gorillascript., "لغة ترجمة إلى جافا سكريبت مصممة لتمكين المستخدم أثناء محاولة منع بعض الأخطاء الشائعة". أقرب إلى CoffeeScript ولكن أكثر شمولا، مما يوفر مجموعة من ميزات إضافية لزيادة السلامة والحد من أنماط غليمة متكررة.

  • litescript يقع في مكان ما بين coffeescript و gorillascript. يوفر بناء جملة ASYNC / Ground للحصول على عمليات الاسترجاعات "المضمنة"، والتحقق من الأخطاء المطبعية المتغيرة.

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

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

كيفية اختيار؟

متي الاختيار لغة بديلة، هناك بعض عوامل في الاعتبار:

  • إذا انضم المطورون الآخرون إلى مشروعك في المستقبل، فكم من الوقت سوف يستغرقهم للحصول على السرعة وتعلم هذه اللغة، أو ما هي الفرص التي يعرفونها بالفعل؟

  • هل اللغات لديها عدد قليل جدا من الميزات (ستظل الرمز مليء بالغموض) أو الكثير من الميزات (سيستغرق الأمر وقتا طويلا لإتقانه، وحتى ذلك الحين قد يكون بعض الكود الصالح غير قابل للتعديل)؟

  • هل لديها الميزات التي تحتاجها لمشروعك؟ (هل يحتاج مشروعك إلى التحقق من النوع والواجهات؟ هل تحتاج إلى استمرار ذكي لتجنب جحيم الاتصال المتداخل؟ هل هناك الكثير من التفاعل؟ قد تحتاج إلى استهداف البيئات الأخرى في المستقبل؟)

المستقبل...

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

يجب أن يكون جافا سكريبت اللغة الوحيدة المدعومة على منصة المتصفح؟

نعم و لا. هناك بديل هناك تسمى Dart by Google والتي تقوم بتجميعها إلى JavaScript و Like JQuery، تحاول أن تجعل معالجة DOM أسهل بعض الشيء. قد يكون ممتعا للتجربة، تحقق من ذلك.

أنظر أيضا

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

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

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

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

بالنسبة لمعالجة DOM، انظر إلى JQuery ككتبة من جانب العميل تحل محل معظم API DOM مروع مع العمليات التي هي ألم في الكتابة إلى أجزاء أنيقة جدا من التعليمات البرمجية والتي من الأسهل الكتابة.

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

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

من حيث JavaScript الجانب العميل هو الطريقة الوحيدة لمعالجة DOM. من حيث جانب الخادم هناك العديد من الطرق.

يدعم Internet Explorer لغات البرمجة النصية القابلة للتوصيل، على الرغم من أن الوحيد المضمن بشكل موثوق في IE إلى جانب JScript هو VBScript.

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

إذا كنت على استعداد لتقييد عملائك / زوارك للمتصفحات المحددة، وربما على استعداد للمتابعة لهم تثبيت مكون إضافي، يمكنك إلقاء نظرة عليه MS Silverlight. - نظرة عامة قابلة للقراءة ويكيبيديا. وبعد مع Silverlight 2، يمكنك تشغيل، جانب العميل، الرمز الذي كتبته في C #، IronPython، Ironrouby، vb.net، إلخ؛ الحر ضوء القمر تعد استنساخ Silverlight، من مشروع أحادي، بتقديم نفس الوظيفة إلى Linux.

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

لذا، فإن الحصول على MindShare الجوهري، التبني والجر لأي شيء آخر يثبت أنه معركة شاقة حتى بالنسبة ل Microsoft مع مجموعاتها الكبيرة من المهندسين وميزانيات التسويق و مشروع برمجيات حرة على الجانب (ربما يسهل المخاوف بشأن قفل الملكية) - مما قد يساعد في تفسير سبب وجود القليل من الفائدة، على سبيل المثال من جانب مؤسسة موزيلا، في دفع نحو هذا الهدف. "بصرف النظر عن قابلية التشغيل البيني"، أنت تقول: ولكن من الواضح أن مسألة التشغيل البيني هو Biggie هنا، بالنظر إلى ما نلاحظ تقدمه ل WRT Silverlight

كما قال بالفعل، لديك فلاش (ActionScript، وهي لغة مشتقة من JavaScript) و Silverlight / Moonlight (IronPython، IronRuby، JScript، VBScript، C #) التي يمكن تشغيلها في المتصفح عبر الإضافات (أول واحد كونه أكثر في كل مكان) وبعد

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

شيء واحد لم أر ذكره (أوه، أرى الأذرع المذكورة في Hotrouby بينما كنت أكتب و Nosredna ذكر GWT و Script #) وترغب في التخلص منها هناك عدد من تطبيقات [إدراج لغة] - جافا سكريبت (مثل المترجمين الذين تتيح لك تحويل روبي, بيثون, ج #, جاوة, obj-j / كابتشينو على غرار OBJ-C / COCOA] أو معالجة لل Canvas] إلى JavaScript إما على العميل أو قبل النشر [وبعضها يحتوي أيضا على مختلف مكتبات التجريد]). بالطبع هناك مرفقات للأداء إذا تم ترجمتها على العميل، ولكن إذا كنت أكثر راحة مع لغة أخرى، فسوف تتيح لك بعض المرونة.

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

لا. جافا سكريبت هو، لكنه سوف يتطور. الإصدار التالي هو "الانسجام JavaScript"، ويمكنك معرفة المزيد إذا كنت جوجل ذلك.

الآن ثم يقترح شخص ما وضع مترجم رمز بايت في المتصفحات إلى جانب JavaScript. ربما لن يحدث، على الأقل لحظة.

يحدث أن أحب جافا سكريبت. ولكن هناك حلول أخرى، بما في ذلك GWT، والتي تجمع Java إلى JavaScript و Script #، والتي تجمع C # إلى JavaScript.

JQuery (لا يزال JavaScript ولكن) سيساعدك حقا لديهم دعم لجميع المتصفحات تقريبا وليس حقا من الصعب تعلم :)

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

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

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

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

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

ربما يمكن أن يساعدك شيء مثل Haxe (انظر haxe.org). إنها لغة تبدو نظافة من JavaScript ويمكن تجميعها إلى JavaScript، لذلك يمكن تشغيلها داخل المتصفح.

أعلم أن هذه ليست إجابة مباشرة على سؤالك، لكنني اعتقدت أنها قد تكون مثيرة للاهتمام بالنسبة لك، ومع ذلك.

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

هذا ما يفسر لماذا أعرف أي خطط للتحول إلى لغة جانب العميل المختلفة.

لكنني أعتقد أن جافا سكريبت ليس سيئا للغاية إذا بدأت في التفكير في نموذج DOM وكيف يعمل معه. العديد من الأشياء الفوضوية مع JS هي نتيجة للطريقة التي يعمل بها نموذج الدوم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top