← All posts tagged JavaScript

kb

Золотые слова из обсуждения предыдущей новости news.ycombinator.com

One rule to live by:

Never use 3rd party javascript

In the 15-odd years I've been doing client-side web development, I've seen precisely one piece of script on the internet that worked as advertised and was durable enough to consider including in one my projects. That exception to the rule is jQuery itself.

jQuery plugins, however, exemplify that golden rule. Every time I've tried to use one (being a hopeless optimist and breaking my own rule), I've been bitten hard and ended up either rewriting it from scratch or spending more time trying to get it to work in a reliable manner than it would have taken to rewrite it from scratch.

I have no idea why this has to be the case, but it is. Javascript you find on the internet is worse than worthless. As such, while it's a shame they lost their plugin site, we're all probably a little better off for having to write our own stuff for a while.

kb

По поводу google-js-test — я таки понял, что DOM нужен (без него ну очень сложно, даже утилитные функции писать), так что QUnit пока наше всё (из консоли его пускать, правда, я еще не пробовал, но для разработки сойдёт и вебня, тем более там пастельные тона).

kb

Node.js обзавелись чем-то, похожим на async в C# github.com

Вообще, если честно, хоть gevent и является набором хаков и манкипатчей — мне его подход куда больше нравится с точки зрения чистоты кода. Пропатчил себе исключительно I/O (сокеты, файловое чтение/запись, треды) и спи спокойно.

kb

Ну, возможно, все эти мои грязные хаки и жутчайшие извращения с джаваскриптом для того, чтоб грузить рекламу после события dom ready сократили скорость загрузки странички где-то на 2 секунды (до dom ready), и немного продлили общее время загрузки (что не так важно, потому что работать уже можно).

Короче, я очень надеюсь, что потратил время не зря (в практическом смысле, для себя я многое понял, как обычно, конечно).

kb

вот я дурак, document.write переопределил, а что он один и глобальный забыл. в результате одновременно грузятся рекламы, и меняются местами (одна в другую пишется). и самое страшное в том, что нет никакого (почти) события "реклама догрузилась", и никак это определить нельзя. fffffuuuuu~~~

kb

решил таки еще раз попробовать html5 boilerplate. они среди прочей кучи всего втянули в себя yepnope.js — это такая штука для include'ов в javascript yepnopejs.com

её главная фишка в том, что грузит зависимости оно асинхронно (какие может), и сами они пишут, что "доказано, что благодаря асинхронности получается быстрее, чем просто скрипты в один большой main.js слить (даже не смотря на кучу маленьких запросов)".

неужели правы? неужели сбылась мечта идиота и таки можно делать кучу маленьких файлов и yepnope('include.js')? красота.

kb

вся моя операция попахивает провалом. я переопределил document.write на свой уютный буффер, но, кажется, браузеру на это пофиг:
Invoking document.write() from asynchronously-loaded external script was ignored.
то есть он даже не смотрит что там оригинальный document.write или нет? очень печально (осталось понять, что для него означает asynchronously-loaded)

kb

а в javascript уже сделали какие-то примитивы для синхронизации, к примеру, чтоб можно было подождать несколько callback-событий, или так и писать код со словами "когда оно будет работать параллельно — поломается".