26 октября 2008

Много чего я видел в JavaScript-е. Ещё больше есть того, чего не видел. Но тем не менее хочу поделиться с людьми своими мыслишками, задумками, наработками. Чую я, что в ближайшее время могу оставить стезю JavaScript-инга, коим занимался уже около двух лет. Поэтому сейчас самое время написать свои мысли, свои идеи. Пусть почитают те, кто идёт за мной, после меня и мимо меня.

Начну я с самых основ. С того, что сам когда-то читал на разных сайтах. Наверняка там это будет описано лучше, но прошу меня не винить. Я просто хочу начать с чего-нибудь. В этом посте не будет много кода. Я просто изложу принципы взаимодействия, которые усвоил за многие месяцы работы. Эти принципы помогли мне на интуитивном уровне понять многие «продвинутые» фишки, в которые входят такие вещи как функции-замыкания и анонимные функции, которые начал применять задолго до того, как узнал значение этих слов.

Итак. По пунктам. Начнем с воды.

JavaScript – изначально объектный язык

В отличие от многих скриптовых языков, с которым, возможно вам приходилось сталкиваться, JavaScript изначально начинал свой путь развития в объектной среде. Этой средой был DOM. Точнее то что оформилось впоследствии в DOM. В отличие от таких языков как perl и php, что начинали развиваться как языки для обработки текста и гипертекста соответственно, откуда они и получили свою идеологию, JavaScript с самого начала работал с объектами визуальных и не очень элементов в неком ограниченном объектом мирке – на страницах интернета.

JavaScript позволяет жонглировать кодом и данными

Зачастую нельзя определить, с данными мы работаем или с кодом – JavaScript не проводит чёткого разделения между переменными и функциями. Точнее функции – это один из типов данных. А точнее даже не функции, а методы – мы не забываем, что JavaScript объектен чуть более, чем полностью. Таким образом необходим ые методы могут быть сгенерированы кем, когда и где угодно. Они могут прийти с сервера в составе xml, запрос на получение которого отправлен каким-нибудь аяксом. Они могут быть сгенерированы в клиентской части по некому событию. Они могут быть переданы некими хацкерами через всевозможные уязвимости клиентской части. Таким образом эта особенность делает JavaScript гибким языком, но при этом подверженным уязвимостям определённого рода.

JavaScript – полноценный язык

Веб-приложения строятся сейчас по большей части только на основе JavaScript. При этом на нем пишут даже операционные системы Я не могу сказать что эти операционные системы юзабельны, но они есть. Пусть и выполняются только в браузере другой операционной системы. Конечно, без возможностей, предоставляемых флешем и css-ом можно обойтись, но без них JavaScript будет куда как скучнее и тусклее. При всем этом, js, будучи зависимым от побочных технологий и языков, может организовать гибкую связь между ними. Как и декстопно-серверные языки обеспечивают доступ к операционной системе и аппаратным возможностям компьютера, JavaScript позволяет организовывать потрясающие вещи, предоставляя доступ к браузеру, позволяя творить внутри него почти все, что пожелает душа.

Не стоит надеяться, что ваш JavaScript будет работать везде и всегда

К сожалению есть несколько браузеров, в которых используется свой движок JavaScript. Несмотря на усилия в области стандартизации – мы имеем достаточное количество возможностей, которые существуют не во всех браузерах ( правда сейчас это больше касается CSS ). Мы имеем гору подводных камней, когда некоторые вещи работают не так или не совсем так в одном из браузеров. Все это приводит к тому, что появляются кросс-пратфолменные библиотеки, позволяющие скрыть особенности каждого конкретного движка от разработчика – они могут использовать разные методы выполнения в зависимости от среды исполнения. Это частично решает проблему, но проблема дырявых абстракция заявляет о себе в полный рост. Не надейтесь что вам не придётся узнавать что-то новое о каждом из движков, используемых браузерами.

JavaScript и его библиотеки – далеко не одно и то же

Не стоит надеяться, что в какой-то библиотеке за вас найдут и решат все возможные проблемы. Будьте готовы самостоятельно разбираться в ошибках. Как своих, так и производителей различных браузеров. Будьте готовы предлагать новые пути решения старых проблем. Не думайте, что JavaScript это легко. Это достаточно сложно, чтобы нужно было думать не только о том, что оно делает, но и о том, как оно это делает – сегодняшние мощности компьютеров не позволяют выполнять бездумное нагромождение JavaScript кода. Даже если используются оптимизированные библиотеки – можно сделать такую ошибку, что подвесит браузер пользователя. А кому нравится, когда его браузер виснет? Вот-вот. Не стоит надеяться на мощь различных библиотек. Они не сделают все за вас. Нужно осознавать, на каких принципах строится JavaScript, дабы уберечься от фатальных ошибок в разработке.

Мир веб-разработок не ограничивается JavaScript

Чтобы иметь возможность делать по-настоящему сложные веб-приложения, нужно знать еще такие страшные слова, как DOM, AJAX, CSS, XHTML. Чем больше страшных слов вы знаете, чем лучше вы можете организовать между ними взаимодействие – тем лучше для вас. Так вы сможете экономить силы, делать код гибче малой кровью и в конце концов банально не класть яица в одну корзину. :)

Возможно это тоже будет интересно
Комментариев нет

Оставить комментарий