All streams
Search
Write a publication
Pull to refresh
51
0
Kolyaj @Kolyaj

User

Send message
По поводу кроссбраузерности. Элементарный код
var a = ['a', 'b'];
a[5] = 'c';
var str = '';
a.each(function(item) {
    str += item;
});
alert(str);
В ИЕ и в остальных браузерах выдаст разные результаты, т.к. они до сих пор не знают, как работает стандартный forEach.
Зачем браузерное окружение на сервере? Там другое окружение нужно.
Я вот, например, не нашел в v8cgi удобного способа подключения файлов. Он их непонятно где ищет. В этом плане GLUEscript gluescript.sourceforge.net/ удобней, он умеет брать файлы относительно текущего, а не того, который запустили (банальщина, казалось бы). Автор glue обещает в скором времени перевести его на TraceMonkey (щас SpiderMonkey), тогда скорость может быть сопоставима с v8. Да и расширения языка у мозилы покруче будут, почти Python ))). Но у glue с библиотеками похуже.
Почему эти люди называют себя Javascript-программистами?
Ни о чем не говорящий пример.

var w = parseInt(«q»);
alert(w==w);
alert(w!=w);

NaN — это такое число (typeof w), которое не равно никакому другому числу, даже самому себе. Для проверки на NaN есть функция isNaN, которая по сути является
function isNaN(x) { return x != x; }
node.getElementsByTagName("*").length — это не количество дочерних узлов. У дочерних узлов могут быть дочерние узлы, которые считать не надо.
Такое в браузере делать надо, зачем сервер зря напрягать.
<img src="путь к картинке" onerror="alert('Тут я как бы сообщаю, что картинка по какой-либо причине не хочет грузиться, хотя можно, например, подсунуть дефолтную картинку.')">
Хорошая философия писать тормозные скрипты с надеждой на то, что браузеры обещают ускорять JS.

А зачем вам на одной странице и Mootools, и ExtJS?
Создайте новую закладку в браузере, в поле адреса напишите
javascript:window.open('http://chat.ru/' + window.location.href); void(0);
Ну во-первых, не функцию, а ее скоп. Во-вторых, где же тут утечка? Утечка — это когда в памяти лежит что-то, что не используется, в моем примере все используется. Ну и в-третьих, пример слишком простой, чтобы о нем спорить.

Данный подход полезен, когда в функции нужно выполнять кучу условий, параметры которых не меняются в течение работы скрипта (обеспечение кроссбраузерности, например). Вот здесь script.shabunc.org/? p=33 хорошо описано.
Какие утечки? Если вы переменную будете хранить в свойстве, а не внутри функции, она меньше места от этого занимать не будет. Плюс недоступность переменной извне (для эстетов).
Замыкания все-таки удобней
function countlt(reset) {
var cnt = 0;
countlt = function(reset) {
if (reset) cnt = 0;
return cnt++;
};
return countlt(reset);
}
>Во вторых библиотека jQuery позволяет говорить что поведение полоски будет одинаковое во всех браузерах.
Библиотека jQuery в данном случае говорит лишь о том, что вы не знаете толком JavaScript. Без нее функция будет практически та же самая (хотя можно и короче), а работать будет быстрее.
Хм, честно говоря, не понял вопроса.
В php
$jsprocessor->assign('var', 'value');

В js
//#define FROM_PHP $var
alert(FROM_PHP);

JavaScript в результате
alert('value');
Скорее всего кэширование работает нормально, меня смущает сам факт подключения 60 файлов без учета картинок.
Хороший наглядный пример. Там на одной странице подключается 48 js-файлов и 12 css-файлов. Все, разумеется, кэшируются браузером и обновляются не так часто, но при каждой загрузке браузер вынужден делать 60 http-запросов, чтобы проверить, не изменился ли какой-нибудь файл.
Там щас совсем страшненькая, но рабочая, версия валяется. Щас есть отрефакторенная, но не доходят руки выложить.

Почему-то никто из комментаторов не затрагивает вопрос поддержки больших файлов. В файле на пару тысяч строк трудновато ориентироваться. Если же не использовать автоматическую сборку, то при создании нового файла нужно лезть в шаблон, который зачастую лежит в другом месте, а нередко и поддерживается другим человеком.

По поводу подгрузки большого скрипта при первом заходе: а никто не заставляет делать сборку для всего сайта, можно сделать сборки для каждой страницы в отдельности и/или для групп страниц.

Вообще, в JsProcessor'е директива //#include(_once) не единственная вкусность. Есть еще //#define, с помощью которого можно не только определять константы (по типу С), а еще и брать переменные из php и из окружения (этакий шаблонизатор, не портящий js-код). А для больших файлов, которые, тем не менее, логически разбивать некуда (методы для работы со строками, например) есть директива //#label, позволяющая отмечать участки кода и подгружать затем только нужный участок.

И все это работает на реальном сайте, напичканном js-скриптами, и проверено временем. Вот только бы еще //#if реализовать для условной сборки.
Плюс к этому, если имеется сжатие gzip'ом, то большой файл сожмется лучше, чем куча маленьких.

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity