Я збираюся додати оновлення до цього, тому що я думаю, що поява JS в мережі клієнтів була неправильно зрозуміла протягом кількох ключових моментів протягом багатьох років.
Це був не Аякс
Я не кажу, що Ajax не був важливим для еволюції розуміння JS як мови, але боротьба за домінування браузера на стороні клієнта закінчилася задовго до введення терміну Ajax.
Це було не тому, що це була єдина гра в місті
Були Java аплети, флеш та VBScript. Я чув, що були навіть інші варіанти сценаріїв у 90-х (але потрібні плагіни IIRC). Java користується величезною популярністю, але аплети були жахливою невдачею. Вони були некрасиві і часто-сир-швейцарські з безпеки, але що ще важливіше, я не думаю, що Java підходила з причин, на які я пітиму пізніше. Flash був дуже популярним і протягом декількох років сильно зміцнився, але навіть коли Flash нарешті мав варіанти SEO, вони зазвичай не використовувались, тому виключно Flash-сайти виявити дуже важко. Навіть зараз більшість з нас регулярно оновлює Flash, щоб ми могли дивитись фільми, але це справжня ахіллесова п’ята. Власна технологія в браузерах дратує. І звичайно VB, який би коли-небудь працював з IE, так що ні.
Правильне місце в потрібний час є актуальним, але не цілим відповіддю
Так, без веб-хвилі для їзди ми, можливо, ніколи не бачили JavaScript або мову в популярному використанні, як це, як тільки ми це зробили. А може, ми мали б ...
Це закінчилося як ідеальний інструмент для проблемного домену
Я б сказав, що близько 2000 років у нас були такі проблеми:
- IE і Netscape тільки що погодилися почати грати добре, дотримуючись одних і тих же стандартів DOM API та CSS, і нам довелося мати справу з безладною застарілою проблемою JS крос-браузера, з тих пір, які тільки починають ставати керованими без допомоги інструментів нормалізації JS DOM, таких як jQuery post IE8
- З'явилося ціле нове покоління веб-розробників / дизайнерів, які не всі були обов'язково важкими вагами, як програмісти, які прагнуть покращити свою гру після виходу з бульбашки, коли вони перестали приносити вам гідну зарплату за те, що ви з'явились у дверях без нічого ніж основна HTML-грамотність та деякі навички фотошопу.
- У місті з'явився цей новий хлопець CSS, який запропонував інтригуючі можливості для того, що в кінцевому підсумку буде називатися DHTML, (більш правильним чином) DOM Scripting, (зараз недоречно) HTML5 (zomghtml5!).
Тож нам була потрібна і глибока мова, що надає можливість фактично структурувати та розробляти більш просунуте додаток з портативними / повторно використовуваними компонентами на стороні клієнта, але також доступним для людей, які мало що знають і просто потрібні речі щоб з’явитися / знову з’явитися, коли ви натиснули кнопку.
Крім того, МС, будучи звірним / некомпетентним та / або домінуючим через анти-конкурентоспроможний практикуючий схем, який вони іноді є, не вдалося дійсно торкнутися їх невідповідності реалізації DOM API протягом хорошого солідного десятиліття, хоча їм це вдалося додайте такі випадкові речі, як оригінальний об'єкт XHR та querySelectors в IE8.
Важливо відзначити, що приблизно до 2005 року нам вдалося настільки повністю поховати складність, пов’язану з вирішенням проблем із переглядачами веб-браузерів, що вже не є серйозною проблемою на фронті JavaScript. Невміння належним чином підтримувати CSS2, поки вони викликали значно біль. Для уявлення про чистий обсяг та глибину питань я рекомендую перевірити quirksmode.org . Я не думаю, що це подвиг, який можна було б досягти так само гладко і в стільки ж бібліотеках на Java, звичайно, не в VB і, безумовно, не з будь-якою стратегією плагінів, мета якої - обійти сторону всієї проблеми, ставши абсолютно новою вид неприємності.
Інші мовні особливості, які викликають багато сенсу для інтерфейсу користувача:
Функції першого класу: на мій досвід, ніщо не піддається асинхронізації обробки та керованих подіями парадигм, ніж мова, яка робить його функції першокласними. Обидві проблеми регулярно вирішуються в роботі інтерфейсу користувача.
Динамічні типи: лиття та перевірка типів - дуже рідкісна потреба в JavaScript, яка допомагає зберігати код стислим і худорлявим. Проблеми із користувальницьким інтерфейсом можуть отримати складний і брудний дуже швидко. Тримання коду та чітке розуміння потоку даних є критично важливим для розуміння та зміни / збереження його.
Це не протекціоніст: Протягом багатьох років хтось проповідує, що вам потрібно захистити себе від власних помилок і німих речей, які інший хлопець може робити з вашим кодом, роблячи конструкції коду дуже жорсткими і негнучкими і неможливо втручатися в початковий намір це було автор та багато людей слухали. Я не скажу, що вони завжди помиляються (можливо, це думаю), але я скажу, що це неправильний підхід до веб-інтерфейсу, і я вважаю, що це щось із явищ, які ми спрацьовували, підтримували та змінювали клієнтів, бічні графічні інтерфейси значно швидшими темпами та з більшою легкістю, ніж така робота, як правило, в минулому виконувались більш обмежувальними мовами. Можливість швидко і легко змінювати речі значно полегшує створення динамічних / флюїдних архітектурних схем, які не потребують монументальної кількості опосередкованості та абстракції, що в кінцевому підсумку полегшує зрозуміти, що відбувається у пеклі у вашому коді а також попередньо виправляти виправлення чи обробляти винятки набагато більш чисто. Легше підтримувати просто за допомогою чистої сили, яка дозволяє бути більш безпосереднім у всьому, що ви робите, та з набагато меншим кодом, ніж це було б потрібно з огляду на іншу філософію.
Як JS став популярним? Він зарекомендував себе як чудовий інструмент для роботи і знову. Це не мова, з якою ми «застрягли», це мова, яка, можливо, надихнула велику еволюцію на популярні мови взагалі. І за це ви можете подякувати Брендану Ейху та будь-яким сучасникам, які допомогли втілити цю ідею в голову, за те, що схема сподобалася дизайну, як натхнення для дизайну, підходить до проблеми, що більше подобається Java.