All streams
Search
Write a publication
Pull to refresh
54
0
Алексей Куреев @xamd

Sr. Software Engineer @ Twilio

Send message
Со стек-трейсами верно, но по поводу тестов не согласен: всё зависит от человека, который пишет тесты. Я не понимаю, в чём различие при тестировании конкатинированного файла?
Насколько же оно должно быть огромное… У нас весь код LMS (а она, поверьте, не маленькая) умещался в 230Кб, которые кешировались на клиенте после первой же загрузки. Какой профит вы с этого получаете? На какие чанки вы собираетесь разбивать проект? По сколько кб/файл, чем это обусловлено / продиктовано?

Я не говорю, что browserify — панацея от всех бед, не подумайте. У него, как и любого другого проекта есть свои плюсы и минусы. Но конкатинация модулей в один файл явно не является проблемой или недостатком.

Да, но в большинстве случаев, дабы минимизировать просадку на лишние запросы к серверу, все файлы всё равно минимизируются в один. В require.js это сделано с помощью r.js, здесь это работает по умолчанию.
Здесь я уже понадеюсь на хабр и на читателей. Надеюсь, у кого-нибудь найдется подобная информация. Но, честно говоря, я не понимаю фетиша замера скорости для подобного рода модульных систем. В смысле, разница в скорости не будет настолько грандиозной, какая разница сколько ждать при деплое — пол секунды или секунду? :) Намного важнее, почему тот или иной инструмент удобнее/неудобнее.
Спасибо за ответ. Думаю, многим он будет полезен.

Что касается минусов, то могу сказать так:
— Браузеров без поддержки source maps всё меньше и меньше, а такие гиганты как Mozilla и Google уже давно ввели их поддержку.
— Мммм, да, но в большинстве случаев у вас и так висит watch для каких-нибудь препроцессоров или т.п.
— Это не минус а одно из мнений. Тем более что вам мешает создавать пакеты отдельно и паблишить их в npm, откуда потом через package.json вы их и будете тянуть командой npm install?

Последние два пункта хоть и верны, но для меня, лично, спорны. Вы видели requirejs community, например?
Если вы пользуетесь инкрементальной сборкой и собираете пакеты по мере необходимости, то вы не ощущаете время сборки 1 пакета. А для полной сборки 0.7-0.8 сек — мелочи. Рад, что смог ответить на ваш вопрос.
Macbook Pro Late 2013 (с SSD), сборка большого проекта (300+ файлов) ~ 0.7s ± 100ms
Это аналог AMD/RequireJS. Полностью повторяет структуру CommonJS модулей. Позволяет использовать их в браузере.
Вы имеете ввиду шимы? Про них так же много информации
Один из тех случае, когда читать дольше, чем делать :)
Вообще, на оф. сайте очень неплохое руководство «getting started».

Но человек написал свою первую статью, и вполне себе годную. Не будем об этом забывать.
Спасибо большое за обновление, теперь приложением намного удобнее пользоваться.
Появилась нормальная работать с профилем, сделали нормальный поиск. Здорово!
По ощущениям, приложение стало работать быстрее.
Как уже сказали, было бы здорово получить поддержку сообщений.
Последние 2 митапа были отличными, жаль, что в связи с переездом не смогу попасть.
Обязательно посмотрю трансляцию.
Что вы, что вы) Я не претендую на оригинальность в решении этого вопроса, просто скорее выражаю удивление по поводу реализации, предложенной автором с инициализацией плагина в представлении. Чтобы не быть голословным, поясняю, как на мой взгляд правильно.

А вообще да, ViewModel.
Да нет, почему же? Функция байндинга не относится ни к модели, ни к представлению, она связывает их, поэтому и должна находиться отдельно. Как я вижу, аналогично сделано в Backbone.DataBinding, как написал автор.
Имхо, бинд должен происходить вне модели или представления. Я считаю, что должен быть объект вроде dataBinder со статической функцией bind, которая должна иметь сигнатуру вызова а-ля dataBinder.bin(view, model). Но, как уже сказали выше, зачем свой велосипед, если так много готовых решений?
Здравствуйте, я, пожалуй, добавлю свои 5 копеек к остальным: я начал заниматься веб-разработкой в 16-17 лет, т.е. еще в то время, когда только набирал обороты и был хипстерной заменой перлу :) Так как мне было 16-17 лет, я не мог устроиться ни на какую работу(да и какая работа, выпускные экзамены же были), поэтому рассматривался только вариант удаленной работы, т.е. фриланса. Первые заказы я получил от товарищей, и это сразу же научило меня никогда не иметь финансовых отношений с друзьями. Потом всё пошло через сарафанное радио. Я не скажу, что заказов было много, буквально один в несколько месяцев, но мне, как школьнику, этого хватало. Первые ваши заказы — это опыт в чистом виде. Совершенно авантюрный, скорее всего почти бесплатный, но опыт. Вы получите сразу очень много новых навыков: научитесь общаться с заказчиком, понимать его, планировать свою работу, быстро у
чить смежные технологии, пользоваться чужими наработками и т.д. Дальше, как получится. У меня получилось так, что на втором курсе я нашел постоянку в одной частной конторе за 30 тыс. руб. Я как сейчас помню, как радовался тогда… Ну да ладно, не об этом. Дальше — больше. Разумеется, вам потребуется знать HTML+CSS, ибо джуниоров всегда рассматривают как разнорабочих. Компания нанимает ресурс для IT целей, а чем вы будете заниматься — от починки принтера до программирования на JS — это решать начальству(к сожалению, это кругом и рядом). Вы становитесь в оч. выгодном положении: у вас есть работа, на которой вам платят за то, что вы учитесь.

Если будет что-то интересно — пишите в личку, я с удовольствием поделюсь своим опытом :)
var obj = { foo: { bar: 'baz' } };

var observer = new PathObserver(obj, 'foo.bar', ['update']);
observer.open(function(newValue, oldValue) {});

Хотя это только через полифил :(
Да ну какая русофобия, какая политика, бросьте… Это просто неудачная шутка.
Меня поражает то, что за плохую шутку можно получить больше минусов в карму, чем плюсов за хорошую статью.
Извините, если разочаровал :)

var model = {
    foo: 1
};
Object.observe(model.foo, function(ev) {
    if (ev.type === 'update') {
        console.log(ev.type, ev.name, ev.oldValue);
    }
});

Information

Rating
Does not participate
Location
London, England - London, Великобритания
Date of birth
Registered
Activity