24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Ньюфагам: 1. Что это за язык такой? - Объектно ориентированный язык, наиболее широкое применение находит в браузерах как язык сценариев для придания интерактивности веб-страницам. 2. Ааа, так это хуйня чтоб типа текст покрасить при клике, или попап вызвать? - Это только малая часть того, что может язык. Сейчас, на JS можно делать игры, с 3д(three.js) графикой или 2д(phaser.js), можно делать игры и приложения для телефонов(phonegap, etc), можно делать десктоп приложения(node-webkit) 3. Ну ясно, а че еще можно? - А еще можно использовать на сервере, причем очень даже успешно. А все благодаря платформе node.js, и v8, который встроен во все хромоподобное. 4. Я щас ниче не понял, повтори. - Проще говоря, если ты не делаешь огромный интернет магазин, или хай лоад проект, то забудь о пхп или руби, используй javascript и node.js (базы данных прилагаются, mongoDB и sql-и тоже) 5. А че еще прикольного можно сделать - А еще есть MVC фреймворки, angular, backbone, ember, knockout и многое другое. 6. Нах оно надо? - Для создания web application, логики на клиент-сайд. 7. Мда столько хуйни всякой... А можно просто jquery учить, я слыхал щас все ее используют сайты - Не стоит, можешь начать писать на жыквери, когда будешь асом в других фреймворках, и, в частности самого нативного языка, но не раньше, не порть себе мозги 8. Ну все все бля, че как учить то? - Дальше я приложу список материалов для изучения
Учим JS: Книги: David Flanagan - "JavaScript: Подробное руководство" - маст хев, книга, которую будешь читать не раз. (Читать 6-е издание). Дуглас Крокфорд "JavaScript: сильные стороны" - просто хорошая книга. Стефанов С. - "JavaScript. Шаблоны"
Онлайн сообщества: http://learn.javascript.ru/ - оно одно, единственное. Начинать учить язык советую отсюда, потом переходить уже к книгам.
Онлайн курсы: Как же можно учить язык, только читая книжонки? Нужна практика, и только так изучаемое усваивается, не иначе. CodeSchool - http://go.codeschool.com/KoeYkQ (не ругать за рефку, она прибавляет +2 дня бесплатного пользования) Отличный ресурс для изучения языка, очень много курсов по всем передовым технологиям.
CodeAcademy - http://www.codecademy.com/ Уже не такой сильный, но все еще интересный проект, так же маст хев для набивания скилла.
Выучил основы, написал свою пузырьковую сортировку и змейку? Не знаешь как двигаться дальше?
Выбери себе направление, может, ты хочешь игори делать, тогда вперед на гитхаб, и ищи phaser, pixi и другое, выбор велик. Хочешь на сервер сайд, на самой хипстерской технологии? Копай в сторону node, express, socket io. Хочешь писать MVC логику? Angular, backbone, да множество их.
>>396361 Мне тебе жаль давать книгу, потому что ты без опыта уебок, а идешь работать на эту должность, а я с опытом, и нигде мне нет применения, ты ведь из Москвы, да? Алсо, книга - хуита
Посоны, посоветуйте опенсорсный проект желательно на angular или backbone с низким порогом входа, что бы потом гордо показывать принятые пул реквесты на собеседованиях. Реквестирую так же общих советов о том, с чего начинать человеку, который решил стать крутым контрибьютором
Ананас, помоги с ng-include в ангуларе, есть странное желание впихнуть туда полностью рабочий левый апп из стороннего файла. Точнее, есть мелкое приложение на ангуларе (ng-app вместе с html, css и тд, а не просто скрипт) которое лежит отдельно и вполне себе работает. Задумал я его прикрутить к другой, большой страничке, и чтобы не замарачиваться самокопирастией, заинклюдить его в эту самую большуй страничку.
Собственно суть - как заставить ангулар исполнять свой же код из этого файла, а не тащить оттуда только текст
>>396413 Блять, ну очевидно что второе лучше, это т.н. web 2.1. Первое вообще ещё существует? Ну кроме громоздкой легаси-параши, которую переписать не дают лишь тупые манагеры, ОНО Ж И ТАК РАБОТАИТ.
>>396358 ОП-картинка годная, особенно в части Ext.js. Я сегодня весь день правил баги в мешанине из Ext 3.0 и кусков HTML с сервера. А потом полчаса ехал домой на велосипеде под проливным дождем.Ощущаю себя точно также как Ext-товарищ с пикчи. И почему я в манагеры не пошел.
>>396421 Сразу виден уровень параши над который ты гнул спину, задавая такие тупые вопросы Навали мне примеров толстых клиентов с хайлоад веба и с корп параши
>>396560 Ты читал жопой. С масшабируемостью REST API можно ускорить на любые нагрузки. Тормозил как раз жирный клиент. Слишком долго загружается и выполняется жс, потом ещё нужно затянуть данные и показать.
Кто-то охуенно сказал, что на яваскрипте нужно писать так, чтобы было как можно меньше яваскрипта. По-моему даже сам его создатель.
>>396358 Нужно запилить панель настроек пикрилейтед. При этом, при выборе разных параметров и чекбоксов появляется еще больше настроек и так далее. Как это лучше всего организовать в коде? У меня получился жуткий говнокод.
>>396495 github, twitch, большинство сервисов от гугла
>>396565 >Слишком долго загружается и выполняется жс, потом ещё нужно затянуть данные и показать О кэшировании мы не слышали, о том что js в среднем всего в 4 раза медленнее крестов - тоже.
js быстрый, а взаимодействие с DOM медленное, особенно если страницу верстал помешанный на CSS3 хипстер, не умеющий в профайлинг верстки.
Взаимодействие с сервером тоже не мгновенное. А ваш REST (если он чистый) не позволяет группировать запросы. Я представляю, как они данные по одному твиту за раз выкачивали там.
Кеширование в современнном интернете работает, но недолго, так как каждый второй сайт содержит кеширующие заголовки на статике и вытесняет кеш других сайтов. Опять, видно что ты с этим только в теории знаком понаслышке.
>>396620 В рот ебал твиттер, то его на руби переписывают, то на скале, то еще на чем. Иди гуглу расскажи.
>>396623 Что мешает использовать DocumentFragmentы? Вообще зачем обращаться к DOM, точно так же можно шаблоны в виде текста собирать до готового вида. > А ваш REST (если он чистый) не позволяет группировать запросы Обсуждаем не rest а толстых клиентов, да и хуйня это все, ты же не жалуешься что нельзя сгруппировать запросы на статику (изображения те же).
>>396624 Сколько разных сайтов ты посещаешь за день? Я не больше 10.
В общем нормальная, принятая в программировании сервис-ориентированная архитектура в вебпараше не прижилась. У вебпараши свой богоизбранный путь, с динамической генерацией говностраничек прямо на серверсайде. Была бы возможность, макаки и мобайл-клиентам отдавали бы готовую вьюху и вообще подстроили бы свои серверные быдлоскрипты под все возможные форматы мира. Чистые данные не нудны, зачем, если можно самому все обернуть, на каждый кейс, на каждый клиент - новую генерирующуюся на сервере страничку и даже через ajax и по вебсокетам будут передаваться не данные, а куски страниц.
>>396633 Дело не в том, согласен ли я с сопоставлениями, а в том, что я не совсем их понимаю. Ну типа на ванильном js пишут задроты, на ExtJS - тырпрайзо-рабы, на ноде - хипсторы, на метеоре - успешные. Но остальное нихуя не понятно. Моя догадка: на эмбере пишут нигры, на ангуляре - трапы-домоседы, на джиквери - умственно-отсталые, а на бекбоне - быдло.
>>396643 >нормальная, принятая в программировании сервис-ориентированная архитектура в вебпараше не прижилась В данные рекламу не воткнешь, в отличие от страницы.
Сделал на ангуляре журнальчик просмотра логов в реальном ИРЛ времени, понятное дело что при объеме журнальчика 500 строчек и скорости логов 30-40 строчек в секунду он начинает тормозить.
Проблема немного решается троттлингом, но тогда у пользователя начинает тормозить сам журнальчик. Что делать? Думаю сделать такой журнальчик по-старинке, без ангуляровских биндингов, на языке жиквери, методами append/prepend, накрайняк можно конечно и на чистом жс накатать, но это на крайняк.
>>396719 Из всех навороченных фреймфорков с 'провайдерами фабрик' - самый быстрый knockout, если нужна адова производительность - нужно использовать микрофреймворки mithril/vue/mercury или elm. Даже видел где-то бенчмарк на гитхабе - первые три примерно равнозначны по скорости, elm чуть помедленнее.
Анонасеры, как правильно законектится к MongoLab, через mongoose? Создал там акк, создал юзера (pidor) Database Users, затем в своем апп.жс var mongodb = 'mongodb://<pidor>:<porol>@ds039960.mongolab.com:39960/mydatabase';
Но при запуске апп.жс выдает ошибку failed to connect to ds039960.mongolab.com:39960
http://paste.org.ru/?d2ir0v - вот тебе симулятор subleq-микропроцессора. Очень нужная и полезная в хозяйстве вещь, как говорится "кто не впишется - вылетит с рынка"
>>396771 Не знаю, просто думаю, может для круглой циферки что-то припасли. А вообще меня щас волнует только одно, как пофиксить эту хуйню! -> >>396751 Может, не конектит потому что я пытаюсь сделать это через localhost, а надо залить на какую нибудь хероку?
>>396773 >пытаюсь сделать это через localhost, а надо залить на какую нибудь хероку Это никакого отношения тут не имеет. Может данные не те ввел? C монголаб это частая хуйня.
Аноны, ответьте на вопрос. Вот у нас есть массив объектов, и есть функция которая возвращает элемент этого массива. У возвращаемого объекта можно добавить или поменять свойство и это отразиться на объекте в исходном массиве. Но если мы поменяем значение объекта, например присвоим ему число или другой объект, то значение в исходном массиве не поменяется. Какого хуя вообще блядь?
Сосаны, что скажете про Knockout? Почему все повернуты на ссаном Angular'e? Ссылки на говно Хабру не кидайте, а поясните по-хардкору, по-стекоферфоловски!!!
>>396778 Такое поведение почти всем языкам. Разве что в С любая переменная является значением. В итоге всё скатывается в тоже самое, только более явно. По началу новичкам говорят просто что вот если изменим объект здесь то это отразится на объекте там. Но чтобы полностью понять это тебе придётся привыкнуть к тому что все переменные ссылки. Ещё одни грабли на которые ты можешь наткнуться это то, что во многих языках строки иммутабельны. А в джаваскрипте они каким то хером оказались примитивом (только что посмотрел на стековерфлоу - ну просто охуеть). То есть у тебя не получится закинуть строку в функцию и там её как-нибудь изменить, чтобы это отразилось на внешней строке. Всякие там "+=" - все равно присваивание, а не модификация. >>396785 Ты же понимаешь что никто здесь не собирается писать адекватный ответ? Либо адекват-кун всё же пояснит каким образом ангулар в своё время смог отхватить себе аудиторию и как гугл смог зафорсить его в интерпразе. Либо школьники будут представлять любимые фреймворки как решение всех проблем. Более того в мире js преобладает такое количество быдла, что и во внешних интернетах (не бордах) разговор происходит также неаргументировано. Вместо того чтобы объяснять в какой момент человек осознал что не может дальше писать скриптике без провайдеров, он представляет себя менеджером "да это же проверенное энтерпрайз решение, вот сейчас я напишу свой туду лист а завтра меня приглашают в фейсбук". Ну или может я преувеличиваю может реально вся эта js хуета нужна и фреймворки все эти годнота на годноте. Я ведь до сих пор не знаю зачем нужны DI IoC.
>>396785 В плане удобства самого фреймворка в общем-то ничем, но ангуляр намного популярнее, а соответственно ты получаешь тысячи библиотеки на все случаи жизни. Хотя я все-равно предпочитаю react с flux, все его штуки заимствованные с функциональной параши на удивления удобны, я даже стал подумывать осилить кложуру.
>>396785 С ним такой заёб есть, что нужно вместо значений вставлять ko.computed, ko.observable и прочее. Но зато оно вроде бы позволяет делать вещи чуть быстрее, так как свойство устанавливается вызовом функции, а не периодическим сравнением.
Хорош тем, что к нему легко всё подключается. К ангуляру, насколько помню, невозможно что-то подключить, что дали то и используй, максимум жквери. Точнее это просто будет неебически сложно, не то чтобы совсем нельзя.
В ангуляре зато есть тестирование. Но нахера оно нужно рядовому фронтэндеру я вот до сих пор плохо понимаю. Разве что сам ангуляр тестить.
Субъективно ангуляр намного сильнее тормозит. Анимация заметно лагает даже в ёбаном туториале. Как-то расширить ангуляр - это адский пиздец, настоящая борьба с ветряными мельницами. А расширять его придётся, потому что ангуляр хочет залезть во все задачи и проблемные области. Кода будет дохуя, понятно будет нихуя.
С нокаутом всё проще. Но я немного хуею со связочки knockout+knockback+backbone, которую мне довелось трогать. По сути весь геморрой только ради бэкбоновского REST. Ребята тут нахерачили какой-то ад с моделями. В общем тоже можно наговнокодить на отлично.
>>396377 >книги не нужны Вот кстати двачую. Просто ЛЮТО. Для изучения основ намного эффективнее прочесть небольшой туториал и потом просто смотреть документацию. Я в одно время читал очень много книжек, как результат - много букв, мало толку. Нужно сразу садиться и писать код, а книги использовать как справочники, но долго на них не задерживаться.
>>396777 Ну блин. Я уже всю ночь и весь день мучаюсь. В гугле все похожие ошибки решились неправильным вводом логина, или закрытого порта. Я уже все поправил, и теперь просто в замешательстве. Что же не так?
Аноны подскажите как лучше сделать. Вообщем получаю JSON с сервера, сую его в объект, оттуда нужную информацию в DOM (просто ul>li список получается). Надо сделать возможность сортировки по алфавиту (и наоборот). Как лучше сделать на vanillaJS: брать инфу из DOM, засовывать в массив, сортировать и обратно или из первоначального объекта в массив, сортировать и в DOM. И второй вопрос как сделать фильтрацию по вводимому слову, т.е. чтобы оставались только те позиции, которые ему удовлетворяют, как в одном из примеров к ангуляру.
>>397037 1. Сортируй до вставки в DOM 2. Если не брезгуешь JQuery - повесь обработчик на изменение текста в поле-фильтре и прячь\показывай элементы по значению в нем. Без JQuery - суть та же.
>>397370 Все, подключился к бд, с локалхоста отправил пару запросов, и они добавились в бд на монголаб. А проблема была в том, что я писал hikka, а бд называется hikki. Какой же я невнимательный уебок. Но сейчас уже другая проблемка. Вот я добавил в свою todo app новый пункт, он добавился в бд на монголаб, правда криво (пикрелейтед). И при обновлении сайта на локалочке, добавленный пункт не отображается, хотя в бд он есть, и по идее должен быть и на сайте схоронятся. алсо, в консоли ошибочку с res.sendFile пофиксил, не помогло никак Может кто знает в чем может быть проблема?
>>397373 Помню еще до подключения мангус, при добовлении нового слова, в консоли оно отображалось, то есть не {} а {ХУЙ} Сейчас пикрелейтед, добовляю в тодошку слово, а оно не отображается, и в бд и в консоли заносится как пустое место, хотя в консоли хрома статус ок, все отправилось. Щас буду ковырять конфиг мангуса, хотя там тоже все верно вроде, name: String Может проблема может крытся в выводе инфы через ангуляр? Хотя там тоже все ок. В Консоли кстати есть ошибка Failed to load resource: net::ERR_CACHE_MISS , в гугле толковых ответов нет.
>>397375 Данные из формы где-то проебывается. Монго похуй пустая у тебя там строка или мега длинный текст, документ он создаст в любом случае. Копай в обработчике пост запроса,
>>397378 Пытаюсь ковырять обработчик в ангуляр, с его $resource. Но проблема в том что я не пойму, как должно быть правильно, чтоб все работало. Посмотри рилейтед скрины, может сможешь выявить там эту ошибку? Я боюсь долго помучаюсь.
>>397381 Не знаком с ангуляр, поэтому тут я пасс, но если взять традиционным способом, то у инпутов жи должен быть атрибут name.
Когда ты делаешь new WoWCtrl(req.body) (4-й пик) то req.body у тебя пустой объект {} (а тебе надо чтобы он был в таком ввиде: { name: "блаблабла" }), а т.к. в твоей схеме (пик 3) поле name не обьязательный (гугли mongoose validation), то монгус не проверяет его наличие и тупо создает новый документ с айди и versionkey (__v, хз как перевести) и сохраняет его. Может в ангуляре по другому все делает, хуй его знает.
Есть .js, который выполняется в терминале, как его выдачу преобразовать в динамичную html и захостить для доступа к чтению лога извне (с телефона, пока сижу на паре.)?
Прошел курс по js на http://www.codecademy.com/, все понял вроде бы. Начал читать учебник Ильи Кантора, вроде бы нормально идет. Решил написать что-то простенькое вроде слайдера. Открыл примеры слайдеров и охуел от кода. Нихуя не понятно почти. Как это все понять, что почитать/посмотреть?
>>397557 Не открывай примеры, пиши сам. В примерах только функционал смотри, если сам не знаешь что нужно и думай как его реализовать. P.S. большинство готовых слайдеров на JQuery написаны, может поэтому не понятно?
>>397556 >Поменяй console.log на node.innerHtml += 'asd' >node.innerHtml += 'asd'('%s sent: %s.', chatter, message); Я даже не знаю, какую пикчу запостить чтобы передать всю глубину этого фейла.
>>397037 С сортировкой не могу понять как сделать правильно, надеюсь на вашу помощь. В ul>li списке находятся картинки, названия к ним, ссылки. Сортировка должна происходит по названию. Но если помещать в массив только названия, то только они и отсортируются. Т.е. при вставке в DOM названия окажутся не у тех картинок и ссылок т.к. они остались в том же порядке. Чето вообще не могу догнать как это все привязать друг к другу.
>>397584 Сортируй до вставки в DOM. Например, тебе приходит массив: [ { id: 341, img: 'img1.png', title: 'BBB' }, { id: 261, img: 'img2.png', title: 'AAA' }, { id: 921, img: 'img3.png', title: 'CCC' } ]
Сортируешь его по title и результат уже вставляешь в DOM. Так ничего не перемешается. Если не получается, возвращайся с примером на jsbin.com или аналоге.
>>397579 Тебе надо этот кот засунуть в nodejs, писать вместо консольки в какую-нибудь базу данных или файл, а при запросе странички отдавать содержимое.
>>397592 Я его запускаю > node chat.js И вывод идёт в консольку, а нужно > в какую-нибудь базу данных или файл, а при запросе странички отдавать содержимое.
>>397609 >Просто текстовый файл с расширением .html А тебе, сырна, какой файл надо? >как захостить Гугли что такое веб-сервер. Проще всего так: - ставишь пайтон - в консольке пишешь python -m SimpleHTTPServer на 8000 порту у тебя будет сервер со статикой из текущей директории.
>>397587 Спасибо, сортировка работает. Но не работает вместе с фильтрацией, т.к. функция фильтрации берет инфу из DOM, а сортировка ее обновляет каждый раз. Можно конечно тоже фильтровать массив первоначальный, но получится слишком ли много манипуляций с DOM. При вводе каждой буквы будет вся страница перерисовываться. Как этот момент грамотно сделать?
>>397772 Хотя сортировка все таки должны быть после вставки в DOM, чтобы она манипулировала только теми элементами которые отфильтровались. Только как правильно в объект засунуть конструкцию вида: <li><div class="image"><a><img src>...</img></a><div class="title"><a>...</a></div></li> Чтобы отсортировать как массив объектов и вернуть обратно.
>>397803 Этого не нужно делать. Мысли абстрактней: у тебя есть слой логики, есть слой отображения (MV-паттерн, по-сути). В модели находятся данные, которые ты изменяешь (сортируешь, фильтруешь, etc). Вторым шагом идет рендеринг колекции в DOM. Естественно, что придется добавить немного буферных коллекций медлу моделью и отображением - в них будет хранится текущее состояние модели, то есть фильтрованое и сортированное, ведь ты не хочешь проебать данные модели после фильтрации.
>>397835 Посмотри русскую доку по бекбону, раздел views. В двух словах, вешаешь листенер на контролы сортировки и фильтрации, в листенере проверяешь берешь значения контролов, пидорасишь коллецию, рисуешь в DOM что получилось.
>>397835 Если не хочется тащить бекбон ради одной вещи, есть более простое и нубское решение - клиентская шаблонизация. Handlebars, например. Создаешь шаблон вида <ul> {{#each items}} <li><a href="{{url}}">{{title}}</a></li> {{/each}} </ul>
Делаешь что-то с массивом (сортировка, фильтрация, чтоугодно), скармливаешь результат шаблонизатору, на выходе получешь строку с готовым HTML.
>>397872 На сегоднешний момент jQuery интересен только огромным количеством готовых плагинов. Кроссбраузерность отлично решается полифилами, а для чего то крупного лучше использовать MV фреймворки
>>397948 Глупо. JS то безальтернотивен, в отличие от всяких похапе, который можно заменить десятком серверных языков. Тут хочешь, не хочешь, а придется работать с тем что есть.
>>396358 Суп, ананасы. Вопрос: Я пишу приложение для Хрома, там нужно использовать рекапчу. Когда я запускаю свое приложение, получаю следующее: >Refused to load the script 'http://www.google.com/recaptcha/api/js/recaptcha_ajax.js' because it violates the following Content Security Policy directive: "script-src 'self' chrome-extension-resource:". Если запускать .HTML-страничку не как приложение, а просто открыть ее в браузере, то все работает. Как мне решить проблему? инб4: не пиши приложение для хрома
>>398032 Выхода два: либо скачать скрипт и включить его себе в расширение (рекомендуется для всяких jQuery), либо в манифесте указать сайт, скриптам с которого стоит доверять. См. developer.chrome.com/extensions/contentSecurityPolicy#relaxing-remote-script
>>398033 Спасибо. Вариант скачать не устраивает, в консольку получаю кучу ошибок, связанных с относительными URL-ами, к которым добавляется в начало Chrome://extinctions, хотя, если покопаться в скрипте, то можно это пофиксить. Второй вариант более интересный, да и работает. Кому интересно или кто столкнулся с похожей проблемой: В manifest.JSON я добавляю запись: >"content_security_policy": "script-src 'self' https://google.com; object-src 'self'"
Доброго времени суток, форумчане, есть ли проверенный способ вклиниться в 3rd-party код прямо в рантайме на jQuery? Весь код находится в замыканиях, поэтому с простой подменой объектов не взлетит. Но должно взлететь, если модифицировать сорц скрипта и скормить его интерпретатору повторно. Кто-нибудь пробовал делать такое?
>>397037 Я опять выхожу на связь >>397587 С сортировкой подобного массива по title все понятно, но не могу сделать поиск по содержимому title. Чтобы те элементы, в title которых не найден нужный текст, убирались из результирующего массива. С простым массивом все просто: используешь метод array.filter(function callback), но как залезть этим методом внутрь объекта?
Что бы фильтр применился, нужно нажать Enter или убрать курсор с поля ввода. Если тебе нужно живое обновление, то нужно гуглить, как вешать обработчик на изменение текста, на вскидку не вспомню. В идеале еще с помощью setTimeout определять, что пользователь остановил ввод и только тогда запускать фильтрацию, что бы не гонять её по каждому символу (особенно, если у тебя данные подгружаются с сервера)
>>398180 >>398180 Моча или не моча это субъективно, альтернативы нет толком нет, это да плохо. Хотя с другой стороны на клиент-сайде и не может быть альтернативы, если компилятор языка встроен в браузер. Тут наоборот стандартизация нужна. А вообще пиши на языках, интерпретируемых в JS, если он кажется настолько нелогичным.
>>398360 Ember - типа для правильных посонов. Meteor - для всяких фрилансеров. jQuery - для даунов, пишущих даже аллаха на фреймворке, предназначенном для сахарка, по сути. nodeJS - типа модно, асинхронность и 10к рпс. При этом будто похуй на то, что один поток и пиздец вместо красивого кода. Vanilla JS - типа олдфаги, сейчас никто без либ не пишет сложные вещи. ExtJS - фреймворк для типа декстоп-приложений на жсе. Говно похуже, чем GWT. Пользуют, соответственно, всякие гениальные компании, варганящие интерфейсы "форма 100х100 с 30 полями" Backbone - типа крутые, но реально тот еще пиздец. Angular - может, имелось в виду "2 чаю вам".
Затесался тут к рубистам в команду, а они угорели по CoffeeScript'у. Пришлось тоже знакомится с ним. Что за больной ублюдок это придумал ? Если в VanillaJS вложенность сразу видна благодаря скобкам, то в CS из-за идеологии КОКОКО СКОБКИ НЕ НУЖНЫ ТОЧКИ С ЗАПЯТЫМИ НЕ НУЖНЫ нихуя не понятно.
method1(method2(param))
в CS выглядит как
method1 method2 param
Опять же, вызвать метод с параметром можно так, без скобок:
method param
но что бы вызвать метод без параметра, скобки, внезапно, оказываются нужны, иначе вызова не произойдет. Еще вопрос: как реализовать на CS что-то подобное ?
item.render(a, function () { // something }, this);
>>398365 Это был метод какой-то сторонней библиотеки и this необходимо было передавать именно как параметр, а не менять контекст функции. В любом случае, подставь на место this любой другой параметр и вопрос останется в силе.
Анон, есть задача. Нужно симулировать событие клавиатуры с заданными свойствами. Скрипт дожен пихать в поле символы не напрямую, а будто это пользователь шлепает по клавиатуре.
Это вообще реально? Насколько я понимаю, свойства charCode и keyCode только для чтения?
>>398532 Во-первых, сам подход "мы типа не ставим, но хочешь - ставь, пожалуйста" и то, что правила меняются в зависимости от отсутствия/наличия аргументов немного странные. CS очевидно делали так, что бы код программы был похож на обычный текст. Но зачем, если я окинув беглым взглядом JS-простыню могу сразу понять, где вызывается метод, а где нет, а в CS мне нужно вглядываться и считать аргументы ? Во-вторых, когда приходишь в проект, где люди скобки не ставят и вообще CoffeeScript знают лучше, чем нативный JS, то как-то особо не повыебываешься и свои правила не внедришь.
>>398537 >CoffeeScript знают лучше, чем нативный JS Ты плохо понял суть CS. Это тот же яваскрипт, только в профиль. Всё что ты делал на js можно сделать и в кофе. Только кофе полаконичнее и требует меньше телодвижений.
Со скобками там всё несложно на самом деле. fn -- fn # без вызова fn() -- fn() # вызов без аргумента fn(3) -- fn 3 fn(3, 'x') -- fn 3, 'x' fn(gn(6)) -- fn gn 6 fn(gn, 6) -- fn gn, 6 fn(lol(4), 9) -- fn (lol 4), 9 a(b(c(d(5)))) -- a b c d 5 a(b(c, d, 5)) -- a b c, d, 5
>>398549 Я просто их слова передал. Спросил у них что-то про JS, они дали пример кода на CS и сказали, что плохо знают JS и не могут пример на нем привести. Это что-то на уровне "как сложить два числа в JQuery" или даже выше.
Со скобками я понял, просто это же ухудшает восприятие: в a(b(c(d(5)))) легче понять вложенность, чем в a b c d 5. Что-то в CS мне нравится и это и правда удобные фичи, но где-то автор помоему упоролся и зашел слишком далеко: зачем, например, нужно было && заменять на and ? Явно для того, что бы домохозяйки не пугались незнакомых символов
>>398689 >зачем, например, нужно было && заменять на and это ладно. А вот is, on, off, yes, no это вообще хипстерство. Избавление от скобочек это хорошо, а вот такие изъебы с синонимами совершенно ни к чему имхо.
>>398689 >что плохо знают JS и не могут пример на нем привести Вангую что им просто впадлу было на жс писать, либо это школохипсторы которые программировать вообще не умеют. Писать на CS не зная JS нельзя.
Что касается скобок, and и прочего сахара – возможно, вы уже добрались до терминальной стадии аутизма и ничего кроме С-подобного синтаксиса не воспринимаете.
Лично мне же – что писать, что читать CS значительно удобнее чем JS. Меньше символов, более человеческий рубиподобный синтаксис, отсутствие !== undefined && !== null, удобные циклы, да в нем вообще все охуенно.
CS создали рубисты только ради того, чтобы писать в таком же стиле. Это именно что нездоровый фанатизм, пусть разработчики руби его используют в своей инфраструктуре, но не надо его везде тащить и говорить «это тот же яваскрипт». Нет, не тот же. Это язык, компилируемый в яваскрипт.
Мне например синтаксис не нравится. Кому-то нравится. Потому не надо делать выводы за всех.
События создавать и отправлять в дерево ДОМ можно (смотри методы createMouseEvent() и fireEvent если я не путаю, в jQuery есть метод-обетка trigger). Но выполнять действия аналогичные действиям пользователя (ввод символов, нажатия на кнопки) они не будут. Событие — это уведомление о том, что что-то произошло.
>>398731 >>398732 Есть код, который отлавливает кнопки, время между нажатиями на кнопки и их отпусканием, всякую другую сопутствующую фигню, и на основе полученных данных делает свое дело. Я хочу прогнать несколько тестов, автоматизировав процесс. Однако, это оказалось как-то невозможно. Пробовал через связку createEvent()->initKeyboardEvent()->dispatchEvent() и почти добился результата, но оно работает только на очень старом фаерфоксе.
Анончики, писал сервак для быдломессенджера на ноде, хотелось бы, чтобы люди знающие оценили его с точки зрения понятности, эстетики и правильного разделения абстракций.
Скриптаны, есть одно замыкание, внутри которого выставляются обработчики событий для элементов страницы, а я хочу изменить одну-две функции внутри с помощью юзерскрипта. Как сделать это, не копируя всё замыкание в скрипт и не создавая велосипедов-замыканий, выполняющих те же задачи, что и оригинал, и сопоставимых с ним по размерам? Как с этим живут другие создатели юзерскриптов?
Дописал несколько строчек, выполнил всё замыкание с помощью javascript:alert(eval(prompt())), теперь хочу, чтобы оно автоматом выполнялось на страницах этого сайта.
Есть массив строк, в которых содержатся ссылки на сайты. По ссылкам находятся pdf-файлы(то-есть, переходишь по ссылке - открывается pdf-файл).Как мне их скачать, не открывая сами файлы? Ну, то-есть, программно, чтобы запустить скрипт и он скачал последовательно все pdf-файлы. Также, я должен быть авторизован на этом сайте, поэтому, вероятно, нужно будет запускать скрипт в браузере.
>>398929 Все началось с того, что кому-то неявные ретурны плохо читаются, ему закономерно указали на то, что сикп не читан. А теперь ты мне про мультипарадигму затираешь?
>>398728 Нет, тот же. CS это просто набор макрух. Можно писать везде писать явный ретарн, ставить скобки и прочее, если это повышает читаемость, но в 80% случаев мне этого не нужно. Если кто-то говорит, что пишет на CS без знания JS это просто наглый пиздеж. Как писать на бусте и не знать си, как писать на спринге и не знать джаву, как писать на баш и не знать линукс.
Пацаны, есть страничка, в нее выводится список текста из mongoDB, как сделать paginate ? В смысле не только в самой монге, но и на клиенте, чтоб выводилось только 10 строк, ну а дальше 1,2,3,4,5 страницы.
Все арифметические операторы кроме + преобразуют свои операнды в числа, ну и дальше над этими числами выполняются соответствующие операции.
Оператор + работает так: 1. Если один из операндов - объект, этот объект преобразуется в своё примитивное представление (число, строку, true/false, null или undefined), для чего вызывается ф-я valueOf() (кроме объектов Date - для них сразу вызывается ф-я toString()). Если ф-я valueOf() не возвращает примитивное значение (число, строку, true/false, null или undefined), для этого объекта вызывается ф-я toString(). 2. Если после п.1 один из операндов оказывается строкой, второй операнд преобразуется в строку, после чего эти строки объединяются, и возвращается результат. 3. В противном случае оба операнда преобразуются в числа и складываются.
Для простых объектов (т. е. и для массивов) valueOf() возвращает сам объект (т. е. не примитивное значение). Для объектов toString() возвращает строку '[object Class]', где Class - это класс объекта (для простых объектов - 'Object'). Для массивов toString() сначала вызывает toString() для каждого элемента массива, а потом объединяет получившиеся строки через запятую.
>[] + [] >=> '' Поскольку массивы пустые, то каждый из них преобразуется в пустую строку. Результат на картинке верный.
>[] + {} >=> '[object Object]' Массив не имеет элементов, поэтому преобразуется в пустую строку. Для простого объекта возвращается строка '[object Object]'. Результат на картинке верный.
>{} + [] >=> 0 Должно быть '[object Object]'. Результат на картинке неверный.
>{} + {} >=> NaN Должно быть '[object Object][object Object]'. Результат на картинке неверный.
>Array(16).join("wat" + 1) Неправильное использование конструктора Array, поэтому хуй знает, что тут должно быть. Вот если бы было (new Array(16)).join("wat" + 1), тогда результат должен был бы быть такой, как на картинке.
Но, вообще, уёбков, которые постят ебанутые конструкции (т. е. даже не понимают, что они постят), а потом удивляются, что в итоге язык выдаёт хуйню, надо сжигать на соответствующих фабриках, да.
>>398973 Бро, ты так хорошо объяснил, но, к сожалению, у меня и в лисе и в хромоге {} + [] = 0 и {} + {} = NaN.
Видимо связано с правилами парсера, первые фигурные скобки распознаются не как объектный литерал а как пустой блок кода. Собственно если заключить выражение в скобки то все ок.
>>398991 ВНЕЗАПНО, да? Вот так вот ты знаешь язык, знаешь все правила преобразования, знаешь про особенности работы операторов, знаешь, что будет, если сложить пустой массив с пустым объектом - складываешь, а на выходе получается хуйня. Теперь-то вы, два умника, понимаете, почему над жсом смеются?
>>398993 Абсолютно похуй. Был бы скрипт лучше - перешел бы на него, но пока js (точнее кофескрипт) лучшее что есть. Пробовал и пых и пыхтон и руби если что.
>>398960 Это всё равно, что писать на JQuery, не зная JS. Но и такие ведь есть. Что мешает рубистам обосраться от незнакомого синтаксиса и начать учить сразу CS, минуя JS ?
>>398972 Ну бля... Отправляй на сервер два параметра: номер страницы, размер выборки. Если нужна сортировка, то и поля сортировки и направление. Так же бекенд должен реализовывать метод получения длины всей коллекции в целом. >>398973 Всё бы хорошо, но ты не сказал про контекст выражения и контекст объявления. Именно по этой причине > {} + {} > NaN Если это было бы выражением целиком, то было бы объект-объект. То же самое и с вызовом IIFE >function(){}() В expression context оно работает, в definition context - нет. >>399004 Ты не понял. Это не возможно в принципе. Да, синтаксис немного более соадкий, но в остальном это тот же JS, с прототипами, евалами, call-apply-bind, сложением {} + [].
Это задание чтобы проверить понимает человек прототипы или нет. Эта функция это аналог Object.create() и создает пустой объект с указанным прототипом. Object.create() появился только в ES5, раньше наследование делали через такие функции.
То что вы не знаете что это говорит о том, что вы не умеете делать наследование в JS, не читали классическую статью Кроукфорда ( http://javascript.crockford.com/prototypal.html ) и скорее всего не знаете способы реализации ООП в JS. Кстати, у нас в php треде есть задания, которые помогают это изучить.
shallow/deep copy это другое. Копия должна быть независимой от оригинала.
>>399016 Почитал их условия приема на работу >Оклад обсуждается индивидуально по каждой вакансии и заведомо не ниже среднерыночных условий в нашей отрасли. Я что-то упустил, или Яндекс начал платить хотя бы среднерыночную зарплату? Не сеньорам и РП, конечно же. Или я могу расходиться, меня наебали?
>>399016 Это функция для создания объекта, у которого протoтипом будет object (т. е. oбъекта, который будет наследовать свойства и методы от аргумента object).
var objA = { a: 1 }; var objB = magic(objA); console.log(objB.a); // 1
>>399056 Теперь я всё понял, даже не могу предположить, почему я раньше тупил. Создаётся функция-конструктор, будущим объектам, созданным через неё, назначается прототип и сразу же возвращается результат работы этого конструктора.
>>398991 >первые фигурные скобки распознаются не как объектный литерал а как пустой блок кода >>399010 >Всё бы хорошо, но ты не сказал про контекст выражения и контекст объявления. Вообще, предложение (statement), начинающееся с открывающей фигурной скобки начинает интерпретироваться как блок предложений (statement block) до закрывающей фигурной скобки, это да. Но хуй знает, как эти консоли интерпретируют то, что в них вводится. У меня в ноде, например, выводится результат, который я указал здесь >>398973, т. е. {} + [] в нодовской консоли интерпретируется как выражение ({} + [])(expression), а не как предложение или последовательность предложений. Короче, все приведённые здесь >>398622 примеры конструкций никогда и нигде использоваться вменяемыми людьми не могут в принципе, поэтому обсуждать их смысла нет. С тем же успехом можно написать 'var var var var var' или какую другую хуйню и орать про то, что это даже не выполняется.
>>399188 Почему школодибилы с сосача не могут додуматься попробовать хотя бы гугл и википедию, перед тем как задавать такие глупые вопросы? https://en.wikipedia.org/wiki/V8_(JavaScript_engine) > V8 compiles JavaScript to native machine code (IA-32, x86-64, ARM, or MIPS ISAs)[3][6] before executing it, instead of more traditional techniques such as interpreting bytecode or compiling the whole program to machine code and executing it from a filesystem. Так что, сюрпрайз, дибилушка! Хром компилирует жс прямо в машкод!
>>399167 Опытности у меня не хватает. Все эти фриланс-биржи вызывают у меня головокружение из-за потока информации. Посмотрел на одеске, посмотрел на фри-ланс.ру. Вакансий не шибко много и бюджеты небольшие -- $100-150. Я столько в день зарабатываю на своей офисной работе. А спрашиваю у анона, потому что, может быть, он имел опыт и может им поделиться.
>>399204 В свое время интересовался этой темой, но не очень сильно. Мне кажется, что найти что-то в этом направлении почти нереально. Ну сам посуди, кому это нужно ? Расширения нужны гикам и делают их гики. Есть какая-то студия, которая впаривает всяким магазинам расширения для поиска товаров и прочей еботы, но не знаю, насколько успешно им это удается.
>>399188 >почему еще никто не додумался сделать JS компилируемым языком Так он уже давно прекрасно компилируется в нативный код в браузерах на лету. А ещё есть такая штука как asm.js (подмножество JS), которая компилируется на лету в нативный код, который исполняется всего в 1.5-2 раза медленнее аналогичного скомпилированного C++ кода. >>398976
>>396358 Суп, /пр. Вопрос следующий: я пишу приложение для хрома для работы с нашим любимым двачом, но вот наткнулся на проблему, от которой у меня нехило бомбит. Итак, у меня есть функция:
function addFile_captcha(url) {//Тут получаем из гугла файл с переменной, из которой берем recaptcha_challenge_field var jqxhr = $.get(url, function () { > console.log("ok"); }) .done(function (data) { > var m = "{" + data.toString().split('{')[1].split('}')[0] + "}"; > var recaptcha_challenge_field = m.split("challenge : '")[1].split("'")[0]; > captcha_url = "https://www.google.com/recaptcha/api/image?c=" + recaptcha_challenge_field; > addIMG(captcha_url);//функция вставляет HTML-контент (display:none) вниз }) .fail(function () { > alert("error"); }); }
Так вот, Анон, 1)почему в тот момент, когда коллбэк функци запускается и начинает выполняться то, что я выделил зеленым, ( console.log("ok"); и прочее, что в .done), HTML-контент всей страницы Двача куда-то девается, а я вижу только пустоту? 2)Проблема в том, что функция addIMG у меня для начала получает элемент на странице по id, а из-за того, что на странице нету ни хуя, она найти ничего и не может. 3)Вызвать addIMG после addFile_captcha я, как понимаете, тоже не могу, так как $.get работает асинхронно и скачивает гугловский контент позже, чем запустится следующая функция.
Аноны, помогите, пожалуйста. Если кто-то захочет взглянуть на весь код или поинтересоваться, что это за хуйня, долбоеб ни хуя непонятно написал, я дам ссылку на ГитХаб.
>>399234 Ну я не настолько тупой. Я пробовал window.onload = { ...} и $ document ready Джейкверский. Они и запускаются после того, как страница загружается. Она и загружается, но почему-то в момент выполнения .GET все содержимое пропадает. Остается только <div>РЕКАПТЧА ебаная как-то сюда вклинивается, хотя я этого ей не говорю</div>. В общем, есть еще какие-то варианты? Хотя, может, все-таки, тупой и елаю что-то не так?
>>399273 http://jsfiddle.net/6twt0hjh/ Получилось выделить элемент. Как теперь выделить ссылку, чтобы <font color=\"red\"></font> был и в начале и в конце?
Джаваскриптогоспода, простите за столь тупой вопрос, я пока только осваиваю верстку, поэтому в js 0 и это репост из вебача, но может вы ответите?
================================
ЕстьОднаЛиба - http://prismjs.com/, она реализует подсветку синтаксиса кода на сайте. К ней есть плагин, который позволяет писать код не в HTML, а брать его из файла. То есть пишешь <pre class="language-markup line-numbers" data-src="index.html"></pre> и содержимое index.html выводится с подсветкой синтаксиса. Разумеется, что он не работает без включенного js, эту проблему я попробовал решить следующим образом: по умолчанию вместо кода выводится предупреждение и ссылка на тот файл, который должен выводиться, с помощью js это заменяется на конструкцию, которая нужна для вывода кода.
То есть <p>Ололо, включи JS <a href="index.html">или скочай</a></p> превращается в <pre class="language-markup line-numbers" data-src="index.html"></pre>. Но при этом нихуя не работает. Я получаю пустое окно для вывода кода, в котором этого самого кода нет. Сам HTML 100% правильный, когда я копирую <pre class="language-markup line-numbers" data-src="index.html"></pre> и вставляю в код текстом, а не пердолю через js, то всё работает. Мои познания в JS стремятся к нулю, я пока только по вёрстке угораю, но я смею предположить, что это происходит из-за того, что скрипт, который реализует подсветку находится в самом низу страницы и срабатывает при её полной загрузке, а вот мой быдлокод работает уже после того, как страница загрузилась. Функция замены предупреждения на <pre> вызывается в window.onload.
Вопрос: как решить эту проблему? Могу ли я как-то подменить html ДО того, как он обработается полностью? Или может я как-то могу вызвать prism.js? Я захуячил содержимое prism.js в мою функцию, которая заменяет и все заработало, но это какой-то костыль пиздец.
>>399342 Вставь загрузку скрипта prism.js в <head>, после него там же загрузи свой скрипт. <head> <script src = ".../prism.js"></script> <script src = ".../твой скрипт.js"></script> </head> Ну и еще нажми f12 и посмотри, что пишется в консоли браузера, какая ошибка?
>>399351 Нет никакой ошибки. prism.js должен срабатывать самым последним и в <head> он не работает. <head> ... </head> <body> .... <script type="text/javascript" src="js/prism.min.js"></script> </body>
То есть он должен срабатывать после того, как вся страница загрузилась, чтобы ему было, что собственно заменять. Может я несу хуйню, но я понял это так, ибо в <head> как я его не пихал он не работал.
То есть у меня ситуация какая-то такая: изначально в коде страницы висит предупреждение о том, что нужно включить js => срабатывает prism.js, но ему нечего заменять => срабатывает мой быдлоскрипт из <head>, который заменяет предупреждение на <pre>, но prism.js уже отработал и ему похуй на <pre>
Вот если бы я мог в коде своего скрипта замены предупреждения сделать что-то вроде @import(prism.js) после того, как он все заменил. Или сделать так, чтобы мой быдлоскрипт сработал раньше. Как это сделать? Мой в head и срабатывает на .onload, prism.js в самом конце тела. Сделать так, чтобы prism.js тоже срабатывал на .onload, но после моего скрипта? Или мой быдлоскрипт из <head> вынести в конец тела, но перед prism.js? Может есть какое-то более элегантное решение?
Добрый анон подскажи какие годные либы стоит учить. На данный момент относительно знаю: 1.Ноду 2.Ангуляр Планирую обмазаться либо three.js , либо d3.js
фронт-енд разработчик должен уметь хорошо верстать? Т.е не просто знать html,css , а быть способным сверстать макет любой сложности? Или это не особенно важно?
>>399388 Зависит от размера компании и сферы ее деятельности. В маленькой веб-студии скорее всего потребуется умение верстать, а JS вообще может сводиться к установке, настройке и в некоторых случаях дописывания jQuery плагинов. В компаниях, которые создают сложные веб приложения, SPA, веб интерфейсы и т.п. ты уже будешь заниматься логикой и связью front- и back-end'а. И там скорее будет плюсом знание серверной части (той с которой работает компания еще лучше), пусть и на поверхностном уровне. Но само собой HTML, CSS знать везде надо.
>>399403 Ты можешь зашить данные прямо в код, как в твоем примере, либо получать их с бекенда, либо получать их в виде статического ресурса (поместив какой-нибудь countries.json рядом с приложением)
>>399406 >либо получать их с бекенда Ну вот это и интересует. Допустим у нас есть ЦМС какая-то на которой мы добавляем и убираем(меняем описание, путь к каритнке) в товаре , как в мою прогу вносить изменения?
>>396358 Суп сосоны. У меня имеется скрипт и 2 конфликтующих между собой css-файла. Мне нужно, чтобы второй css применялся только в определенному тегу и всем его детям, а первый – ко всей остальной страничке. Возможно ли это задать скриптом, не изменяя содержимого css?
>>399627 Мля, я конечно ньюфаг тот еще, но у jQuery есть метод .css() которому можно скармливать стили. Может стоит сверстать нормально? Наебешься потом с такими костылями
>>399628 Я пишу приложение для сайта. Часть контента - моя, она должна отображаться так, как я хочу. Все остальное - вторая часть(бОльшая) – принадлежит сайту. Ее дизайн меняться не должен. А за метод спасибо.
>>399633 >Часть контента - моя, она должна отображаться так, как я хочу. Сделай отдельные классы или каскад, чтобы твои стили к твоим элементам применялись и имели приоритет.
>>399670 >сделай отдельные классы Это будет работать только в том случае, если я делаю css своими руками. А я хочу использовать готовый: бутстраповский css. Если это невозможно, то буду пилить стили сам, так-то, конечно, я сделаю уникальные классы и задам для них свои стили.
>>399683 А что тебе мешает подключить свой файл, например custom.css в котором будут переопределены некоторые стили? Можно задать приоретет кастомному стилю при помощи !important нотации
Народ, подскажите как разбить li список на колонки, допустим по 10 элементов в каждой. Список генерируется из JS цикла. По идее надо оборачивать каждые 10 элементов в див, до тех пор пока список не кончится. Но не понятно как это добавить к текущему циклу вывода. Сделать нужно на чистом JS.
>>400397 Тащемта двачую. Именно поэтому их так легко и непринуждённо вертят на хую разарботчики модных фреймворков, заставляя каждые полгода перепрыгивать с одной дилды на другую.
>>400414 Просто web - это самая прогрессивная область программирования. Пока крестопидары и джаваиндусы по 10 лет ждут пока им завезут очевидные вещи, в мире JS каждые 3 месяца появляется новый концепт, новые модные фичи, новые гениальные идеи. Лучшие умы сосредоточены вокруг web, потому что это настоящее и будущее. А всякие десктоп и тырпрайз петушки могут продолжать использовать ретроградские технологии двадцатилетней давности, для поддержки легаси-говна их достаточно.
>>400477 Но лучше посмотреть видео Egghead, и почитать блог scotch.io, и смотреть всякие todo app и другие фубары на гитхабе, читать код, писать самому, и тыкать все директивы и слова из документаций, смотреть что получается. А смотреть множество видео и читать кучу книг, в большинстве трата времени. Я разве что обращался к книгам чтоб $resource изучить получше.
Какой самый лучший способ работать с ошибками в ангуляре?
Есть форма, с полями, которые. В полях могут быть ошибки, они валидируются на сервере, получаю ответ, как мне вывести каждую ошибку под поле, чтобы это было правильно, сейчас я завёл дополнительные поля как model.nameError, но не думаю что это правильно, и масштабируемо.
>>400590 Думаю он имеет ввиду данные, которые взламывать не станут. Например, чтобы менеджеры при наполнении контента писали адрес с большой буквы и без цифр или подобная хуйня.
Критичные данные потом все равно перепроверяются на сервере. Сначала валидируешь во фронтенде, но говна на бекенд все равно не отправишь. Т.е. двойная валидация получается.
>>400590 Вот ответ. >>400602 Не думал, что для кого-то станет открытием, что валидация дублируется на фронтенде и бекенде. И это уровень этого треда, блядь?
>>400614 Смысл в клиентской валидации поверх серверной в том, что если есть клиентская валидация, то на сервере достаточно при ошибке слать 500, а на клиенте уже реализовывать всю логику про то, к какому полю относится ошибка, в чем она заключается и как отображать сообщение об ошибке.
Посоны, поясните за воркфлоу на этом вашем JS. Cуть такова: хочу иметь в html один охуенноминимизированныйоптимизированный для продакшена, но при этом хочу успешно дебажить в деве. И конечно модульность, зависимости и прочие ништяки. Как ты, скриптодружок, решаешь вышеописанные задачи? Алсо реквестирую доступный для быдла туториал "хау ту старт девелоп факин осом мвц/мвп жс аппликейшен". И не о каком-либо охуительном мвц/мвп/втф фреимворке, а об этих самых commonjs, npm, bower, gulp, etc.
0$ Agnular, node, mongo, express, socket io, jqurey Живу в селе, денег на переезд нету, на съем в крупном городе тем более, на удаленку нет опыта в хай лоад проектах, и реализованных уже существующих приложений. Вывод, родился в маленьком городе, в быдлокод не лезь, это удел счастливчиков из больших городов. мимо невостребованный с перманентным бугуртом
>>400891 Есть реализованые, показываю, мне говорят что это самодельный опенсурс, а нужно коллективный продукт в продакшене, а для этого нужно родится в большом городе и работать в офисе над ним, ибо из села на удаленку в такой проект не дадут. В итоге замкнутый круг. Так что завали свой ебальник, хуйло.
1) Как запустить функцию переданного объекта? В моём примере когда Player вызывает create() ни хуя не происходит, а аддон в хроме подсказывает - "TypeError: undefined is not a function". 2) И объясните как в принципе тут работают референсы типа того, что пытался сделать я. Когда я создал копию Player и передал в него this (т.е. сам объект Game), то в эту копию приходит копия передаваемого объекта (т.е. с новым адресом и т.д.) или приходит ссылка на него?
>>401235 Если просто вызывать объявленную функцию, то this будет window. Если создать новый объект функции (по сути, все в js - объекты), то this внутри неё будет указывать на неё же.
Ананасики, часто встречаю код вида http://jsfiddle.net/j9uu0uu4/ . В жс так принято делать или лучше явно передавать переменные через аргументы функции?
>>396362 >>396362 Но ведь книга действительно хуета, тем более на русском (вместе с переводом книга получила несколько ошибок и потеряла удобность оформления блоков с кодом, как в оригинальной версии).
>>401232 >>401235 А вот хуй, там всё правильно. И ничего в скоупах ебанутого нет. Есть скоупы, есть this. Два абзаца сакральных знаний осильте уже. >>401258 Вопрос не корректный. Если это создание замыкания - это гут. Если это такое использование глобальных пересенных или еще какой-то мэдскиллз, то не гут.
>>401304 > А вот хуй, там всё правильно Хуйню не неси, если было правиль, всё бы у него работало и он не приходил сюда. Если ты про то, чем является this, то по объяснению >>401227, ему нужно передать в функцию объект Game, а как предлагаешь ты, методы объявятся у window. Работать это будет, только задумке соответствовать не будет.
>>396358 Мне нужно запилить кой-какую автоматизацию на серверах компании (к вебу отношения не имеет, ну, разве что чуть-чуть), ради интереса решил посмотреть, что вообще сейчас модно-молодёжно. Наткнулся на JavaScript. >Хочешь на сервер сайд, на самой хипстерской технологии? Копай в сторону node, express, socket io. Скажите, на нём действительно можно писать скрипты автоматизации? В чём преимущества и недостатки по сравнению с питоном, башем, руби?
Как я заебался с этим сраным this, помогите - http://jsfiddle.net/6s4gh4mt/ Мои попытки всё починить частично решили проблему, но замапить так и не получается - http://jsfiddle.net/4pv6y1bh/. Есть ли ещё какой-нибудь способ для моего случая (без map) или как это всё можно разрулить?
>>401567 За ссылку спасибо, прочитал статью и часть комментов.
Если убрать вопли и демагогию, то автор обвиняет Node.js в: 1) Тормознутости. 2) Том, что вызовы функций таки блокирующие, хотя утверждают, что нет. 3) Создании прокладки в виде собственного HTTP-сервера для входящего трафика.
Все три пункта лично мне не интересны. Тормознутость вряд ли существенная, а на внутреннюю реализацию работы насрать.
>>401570 Не очень понял, что именно ты хочешь сделать. Для чего там вообще map? Не легче ли запилить метод для получения массива людей, а потом выводить имена в нужном виде? Зачем делать это через получение одного человека по индексу? Можно обойтись и вовсе одним методом, если нужен только вывод имен на экран. Для чего нужен город в виде числового массива? Для "индексирования" жителей? http://jsfiddle.net/4pv6y1bh/5/
>>401570 http://jsfiddle.net/4pv6y1bh/2/ Я рекомендую стараться избегать использования ООП паттернов в JS. Твою задачу можно просто решить обычными объектами, массивы с id - это не уродство, как и new Array(). Забей на эти конструкторы и прототипы, это не та задача, где они оправданы.
Решил поучить метеор и сразу выпал. Анон, помоги, гугл не справился. Я имею некоторую Testdb = new Mongo.Collection("testdb") Пихаю туда всякие документы, но не хочу, чтобы она разрасталась. Допустим, как только в Testdb оказывается слишком много документов, мы удаляем самый старый. Так вот, как мне, блядь, отследить размер testdb?
>>401623 Спасибо, думаю так и поступлю в итоге ) Но ещё один вопрос есть - http://jsfiddle.net/4pv6y1bh/6/, вот тут, внутри функции getName, this внезапно становится Window, хотя по идее вызывается всё также внутри World. Почему это так и как этого можно избежать?
>>401685 Потому, что this всегда всегда сука! равен объекту на котором вызывается функция. В случае передачи функции как параметер, случится вот что: Array.prototype.map(fn) { ... fn(datum) // вот он вызов в глобальном контексте. ... } Поэтому в таких случая либо привязывают this (bind, self, etc), либо его попросту не используют. Второй вариант как по мне лучше, и тебе он вполне подходит.
При нажатии input с типом submit форма загружается как положено. При выполнении form.submit() который находится в онклике баттона, форма отправляется два раза. Что не так?
Алсо, на практике получается огромная неудобная функция-коснтруктор. Алсо, подчеркивание в начале — это отстойно. В нормальных языках для этого есть слова private и protected.
>>402378 Для констант есть `const`, для сеттеров и геттеров есть, внезапно, setter/getter (через defineProperty). Есть `Object.freeze` и `Object.seal`, есть `class`, хоть его добавили только из-за джавистов. Сейчас памяти даже на смарфонах по 4Гб, гораздо проще накопировать себе свойств и функций в объект, чем ебаться с наследованиями.
Классы будут только в ES6 и они помечаются словом class. Это функция-конструктор.
Я когда-то давно так делал, потом перестал так как получается ощущение бардака по мере роста кода. Удобнее писать классическим способом, каждый метод отдельно в prototype.method = function () ...
Какой фреймворк позволяет генерировать HTML как на клиенте, так и на сервере ? Допустим, у меня есть TODO-приложение, которое строится на клиенте с помощью Angular и там же редактируется. Я хочу, что бы этот список задач отображался и на смартфоне, но в данном случае страница гененировалась на сервере (что бы не нагружать клиент). Для Angular подобная вещь делается через какие-то адовые костыли. Есть ли аналоги из фреймворков в этом плане, которые учитывают данную потребность ?
>>402738 а опытные есть пограмисты, которые могут сказать -"этот код- хуйня, перепишика вот в таком ключе". Я немного умею в верстку и js. Хочу освоить какойнить MVC фреймворк. Почему бы не Angular? или вам нужны опытные чуваки?
>>402689 >Наследование используют не ради экономии памяти, ребенок. Лол. >>402719 Ангулар на сервере, например. jsdom или phantomjs, или хуй знает что еще, но проблема решаема, причем в лоб.
>>402771 Так это и есть костыли. PhantomJS имитирует загрузку сайта, как будто он загружен через браузер и возвращает результат. Мне нужно просто сгенерировать страницу по шаблону и этот же шаблон использовать на клиент-сайде. Уверен, это будет в разы быстрее, чем выполнять работу аналогичную той, что выполняет браузер
Какая генерация на сервере, что за хуйню я читаю? Чо нужно-то? Чтобы телефон от ангуляра не тормозил? Сделай REST api, перенаправляй мобильных клиентов куда нужно и делай с данными что угодно.
>>402774 Ты можешь расшифровать, что ты сказал ? Куда нужно перенаправлять мобильных клиентов и что делать с данными ? Ангуляр и подразумевает, что на сервере будет реализован rest api, разве нет ?
>>402778 Ангуляру похуй есть у тебя rest api или нет, он и без этого работать будет.
Ты отдаешь клиенту html файл. Там ставишь проверку по юзер-агенту и если обнаруживаешь десктоп – загружаешь ангуляр и всю хуйню.
Если мобильный – парсишь список задач из api и добавляешь их в любой шаблон какой нужно, используя более легковесные библиотеки, если днищемобила не тянет ангуляр или ты сделал тормозную архитектуру.
>>402719 Все правильно делаешь, не слушай этих любителей по-запускать браузер на сервере. Бери React он изначально делался что бы рендерить и на клиенте и на сервере. Сам перекатился с ангуляра, на котором писал почти полтора года, на реакт (+ некоторые другие либы, так реакт это все-таки только вьюха). После переусложненного комбайна ангуляра очень нравится. А после того как увидел презентацию ангуляра 2.0 окончательно убедился, что все правильно сделал.
>>402783 >Возникает вопрос, зачем тогда вообще нужен ангулар если сервер может отдавать html? По-твоему ангуляр нужен чтобы отдавать html? В чем вопрос? Я не знаю зачем ему ангуляр или отсутствие ангуляра.
>>402780 Я так и хочу, но проблема в том, что придется поддерживать ДВА разных, но одинаковых шаблона - для ангуляра и для легковестной библиотеки. >>402781 Спасибо, именно это я и хотел узнать. Как раз задумался об этом, когда читал про React. Единственное, что смутило, что автор поста про React предлагал писать HTML прямо в JS-коде. Этого можно как-то избежать ? Это же пиздец.
>>402785 Тебе в любом случае придется поддерживать два разных шаблона. Одинаковыми они никак быть не могут – помимо html тебе еще и всю js логику нужно переписывать.
React я не использовал, но похоже что и в этом случае тебе придется поддерживать разные версии – для генерации на сервере и на клиенте.
Если ангуляр на мобилах тормозит – либо ты накосячил с архитектурой, либо мобила <2010 года выпуска и на ней 80% современного веба тормозить будет. Если ты так сильно хочешь ублажить нищебродов и не хочешь одновременно поддерживать две версии – попробуй переписать на клиентском реакте/vue/mithril, которые вроде как значительно быстрее ангуляра – и посмотреть что будет.
>>402785 >Единственное, что смутило, что автор поста про React предлагал писать HTML прямо в JS-коде. Этого можно как-то избежать ? Только, если использовать какой-нибудь свой самописный препроцессор, хотя может и написал уже кто-нибудь. Прочти туториал на офсайте и поймешь почему было сделано так и почему это вполне удобно.
Сап, пацаны, есть один acmp.ru, суть в том, что я хочу написать дополнение для хрома, которое будет скрывать темы нерешенных задач. Ясен хуй, это задача для jQuery, но у меня не получается выделить отдельные элементы из той таблицы. Помоги, антош. Обычно программирую на java, поэтому этот ваш динамичный джаваскрипт выносит мне мозг.
>>403026 Расскажи поподробнее, что тебе нужно скрыть. Я правильно понял, что у тебя есть таблица, в которой в одном из столбцов пишется, собственно, решена задача или нет ? Если да, то что-то вроде того
Проходишься по каждой строке tr и для каждой выполняешь проверку: если в третьем (или каком там в твоем случае) столбце слово "Решено", то скрываешь строчку.
Суть простая, есть часы, кликая по которым увеличивается время потраченное за игрой. Сначала пролетают секунды, после часы, месяцы, годы, века и эры. Чтобы убить больше времени можно улучшать аспекты кликинга. Скажем интернет отнимает на начальном уровне 1 час в сутки, но это значение можно улучшить развив интернет зависимость. Пока таких апдейтов всего несколько, некоторые улучшают клики, другие автоматически тратят время. Добавил шкалу опыта, прокачивая левел убийства времени игрок получает очки на прокачку этих самых улучшений. Этакий кликер с философским подтекстом.
Вообщем, столкнулся с фундаментальным недостатком js, а именно я не вижу объектов из одного модуля в другом.
Простой пример. Есть файл code.js и core.js (на самом деле файлов много, но для простоты беру два). Core - ключевой объект игры, он содержит в себе все игровые объекты, начиная от menu, заканчивая updates и другими фичами игры.
Сделал я это чтобы не засирать остальной код.
Т.е. если я хочу показать menu, я в code.js прописываю >core.menu.show = true; // set метод
Не заботясь о способах прорисовки, вся грязь содержится внутри core.js. Разумеется, мне это всё доставляло до того момента, когда скопилось 19 разных объектов с множеством методов, которые я не вижу, работая с другими модулями.
Т.е. когда я работал с c# в VS я создавал класс в отдельном модуле и видел все методы и свойства в main.cs а сейчас я использую обыкновенный sublime text 3, который по дефолту не может видеть содержимое объектов других файлов.
Короче, нужен плагин под st3, который бы мог работать со всем проектом в целом. Чтобы я мог или подключить сам файлы, а лучше, чтобы он сам находил связи и например, когда я пишу
>>403155 Так спизди его или купи. Стоит всего 50 баксов, гейгены и готовые ключи на любом трекере. Еще можешь EAP использовать бесплатно, если он сейчас есть.
>>403161 Работает оно гораздо хуже чем IDE и все фишки уже есть в st3, кроме, может быть, Function Call tooltips.
>>396358 учил когда-то, делал всякие приколы на браузере. но потом понял, что на C++ и C# при определённых фреймворках можно сделать ещё более прикольные приколы
>>403269 Но ведь они же не рендерятся сразу, там всё на страницы разбито. Какого хуя лагает тогда? И как тогда к ангуляру прикрутить серверные страницы и поиск? Чтобы без совсем ебанутых костылей.
>>403277 Попробуй с помощью Batarang найти, в какой момент и из-за чего твое приложение начинает столько жрать памяти или что оно там жрет. И не забудь рассказать потом, что там было
>>403286 Я вообще сам ниразу не пользовался, просто знал, что там есть возможность замерить производительность отдельных вещей. Так что извини, большим помочь не смогу
>>403291 >Убийца Sublime и других. Тем более тормознутой WebStorm >блокнот для верстальщика >Убийца WebStorm Этот блокнот ни один из моих текущих проектов даже проиндексировать не смог, лол, поэтому поиск файлов не работал. Quick definition для кофескрипта не заработал. JSLint из коробки ругается на все подряд, в самом начале файла ему 'use strict' не понравилось и дальше каждая третья строка.
В общем, сразу стало ясно что для программирования это поделие не годится. Но верстать psd с их новым плагином удобно наверное.
Привет, антоны, у меня вопрос к нодокунам. Я вот недавно решил перепилить бложек с рельсов (postgresql) на экспресс (mongodb), и все вроде бы ничего, но чисто субъективно респонз-тайм стал дольше, но на бенчмарке не тестил. Так и должно быть или мне просто так кажется? Алсо вопрос по поводу хайлоада: сильное ли нода имеет преимущество перед другими технологиями?
>>403345 Зачем стиль из одного языка тащить в другой ? Тоже пишу на C# и там ставлю скобки на одной линии, а методы называю с большой буквы. Когда пишу на JS, то делают наоборот, потому что good practice ёба.
>>403319 Не рассказывай мне про JSLint, по дефолту он не должен ругаться на use strict и скобочки без пробела. Никого не должно ебать как я расставляю эти скобочки, пока специально не укажу это в code style – что, кстати, охуенно удобно реализовано в Webstorm, там можно выставить настройки чего угодно.
>>403383 >Фундаментальная разница в том, что c# компилируется в бинарный код, а js интерпретируется при каждом запуске. Да ты же упоротый. >V8 compiles JavaScript to native machine code (IA-32, x86-64, ARM, or MIPS ISAs) before executing it, instead of more traditional techniques such as interpreting bytecode or compiling the whole program to machine code and executing it from a filesystem. The compiled code is additionally optimized (and re-optimized) dynamically at runtime, based on heuristics of the code's execution profile. Optimization techniques used include inlining, elision of expensive runtime properties, and inline caching, among many others. Ну и другие браузеры тоже уже давно JS налету в машинный код компилируют.
>>403493 >>403492 как связан пхп и генерация кода на сервере? пхп можно использовать как генератор контента, а получать его при помощи чего хочешь запросами на сервер
>>403495 потому что ИЗНАЧАЛЬНО он создавался для негерации хтмл на сервере.
понятное дело можно извратиться и писать всякие рестики с жейсоном на нем, да и туча фреймворков для этого, вот только НАХУЯ? когда есть узкоспециализированные инструменты для этого.
Боги jquery, срочно нужна помощь. Имеется подобие слайдшоу - http://jsfiddle.net/2s7eu87g/ Нужно сделать, чтобы картинки менялись с эффектом или анимацией, любой вариант. Буду очень признателен за помощь.
>>396358 Есть один проект, который писался в виде пикрилейтеда и так дорос до 10к строк кода. Я говноед? Как привести это в порядок? О Gruntjs и подобном только слышал.
Посоветуйте пост с объяснением, когда в ангуляре рекомендуется юзать события. Везде пишут, что их должно быть как можно меньше, но нигде не пишут те редкие случаи, когда они оправданы. Какой-нибудь крутой репозиторий с примерами их использования тоже сгодится.
Ничего, кроме того, что тебе нужно написать нормально продуманное приложение с возможностью масштабирования, интеграции с сервером и прочее. Головой думай, а не плагинами.
у тебя, блять, специфичная задача, а ты хочешь готовое решение? у тебя там чистой воды SPA, бери любой MV фреймворк и ебошь (хотя если ты под это просишь плагин, то шансов мало).
>>403630 просто разбей весь код на файлы и нормально всё это структурируй, потом настрой грант, чтобы всё конкатенировал и минифаил (один хуй ты же в продакшен жмёшь)
>>403631 внедряй то, что знаешь (Backbone, Ember, Angular, React, Knockout) -- особой разницы нет. В бекбоне, правда, нет two-way data-binding (без плагинов), но в описании твоей задачи он не нужен. Ещё похоже, что тебе придётся написать rest api ко всему этому делу (то есть продумать структуру хранения). Короче, задача не особо тривиальная и требует обдумывания.
MV тут будет не оверкилом, а наоборот.
з.ы. на голом жиквери тоже можно писать вполне, просто в этом случае серверсайд нагружается, а js чисто для еба-визуализации.
>>403641 >>403637 я не знаю ни одного языка, я скорее пхп-бэкендом занимают, жквери знаю постольку поскольку
структура хранения уже есть, мне нужно просто крудить это всё
да, в интернете кучи статей по сравнению бэкбон\ангуляр и т.д., по ним я выбрал бэкбон. но ангуляр сейчас форсят заебись как. за чем будущее? что итт анонасы посоветуют? мне нужен баланс между мощью\временем обучения, желательно что-то простое для вникания, но и не застарелое говно
Javascript mvc для этого не обязателен, можно и обычным аяксом обойтись. Готовой библиотеки под конкретный круд, понятное дело, не найдешь. Никто не будет писать новую библиотеку для шкафов-носков-ящиков и трусов-стульев-стаканов. Так что я бы использовал YobaJS.
>>403651 Будущее за реактом с флюксом или какой-нибудь другой флюксоподобной либой, которые сейчас появляются, как на дрожах, но настоящее за ангуляром. Вникнуть, как по мне, проще в реакт, в нем все api состоит из пятка коллбеков, полутора десятка методов и кучки миксинов, но из них реже чем никогда ты вряд ли станешь больше 2-3 в реальности использовать.
>>403755 Меня тоже это убивает. Это же пиздец, не могли зделать как в ангуляре ? Почему нельзя шаблоны держать в отдельной директории, например, а не искать их по скрипт-файлу ?
>>403777 Кроме того, если ты используешь прототипы, то все твои методы класса будут создаваться один раз, иначе - для каждого экземпляра класса будет создаваться точная копия внутренних методов, что, разумеется, не очень хорошо. Я бы посоветовал покрыть тестами то, что у тебя есть и после этого начинать рефакторить, что бы ничего не сломать. Точнее посоветовать не могу, я ололо-теоретик
>>403784 Написать препроцессор для любой системы сборки, который будет брать jade, компилировать его и инлайнить в компонент дело на час. Другое дело, что не очень-то удобно, по-крайней мере мне и видимо создателям реакта, когда темплейт у тебя использует методы из компонента и локальные переменные из render, при этом находясь в другом файле.
>>403819 Я говорил о возможности наследования, поехавший. Ее не следует использовать где попало и без нужды, потому я и не наследовал свои классы. Алсо ты знаешь что такое инкапсуляция? А, уебок?
>>403456 >налету компилируют Ты мудак? Якобы споришь, но написал ровно то, что я тебе написал.
Интерпретация подразумевает компилляцию каждый раз во время выполнения js. Это время, тогда как бинарный, скомпиллированный заранее код запускается сразу.
Такой процесс значительно медленнее, чем запуск сразу готового машинного кода. Разумеется, и тут можно приебаться, как ты любишь делать, но суть понятна.
Вот когда js будет реально компиллироваться в бинарные файлы и таким образом подключаться к веб страницам тогда можно будет говорить про нативность.
Сейчас тот натив, что есть в Chrome предполагает запуск кода в обход традиционной браузерной интерпретации, но это не тоже самое, что ты запустил приложение, написанное на плюсах вне браузерной среды, которую можно сравнить с виртуальной машиной типа java машины или даже с гостевой виртуальной операционной системой, которая всегда будет медленнее работать, чем хост из которого она запущена.
и слушать бд, хотя метеор с некоторыми костылями тоже самое делает, так что можешь слушать коллекцию где нибудь на сервере средствами метеора и удалять при необходимости
>>404017 Ой, пиздец, прочти хотя бы туториал на офф сайте-то. setState тебе нужен. А менять props это уберзашквар в реакте, хотя, если ты прочтешь туториал, то и так об этом узнаешь.
>>403823 Я знаю, ксати. Но я не тот Анон. Это закрытые поля и организованный к ним доступ через свойства. До сих пор не понял, зачем это, правда. Нигде рального примера не увидел, где в этом пофит.
>>399086 Храню дату коммита и встраиваю её в URL скрипта, в случае c SPA на каждом AJAX-запросе отсылаю файлы и версии в JSON, смотрю обновилось ли что, если обновилось то перегружаю.
Предыдущий: - https://2ch.hk/pr/res/385174.html
Ньюфагам:
1. Что это за язык такой? - Объектно ориентированный язык, наиболее широкое применение находит в браузерах как язык сценариев для придания интерактивности веб-страницам.
2. Ааа, так это хуйня чтоб типа текст покрасить при клике, или попап вызвать? - Это только малая часть того, что может язык. Сейчас, на JS можно делать игры, с 3д(three.js) графикой или 2д(phaser.js), можно делать игры и приложения для телефонов(phonegap, etc), можно делать десктоп приложения(node-webkit)
3. Ну ясно, а че еще можно? - А еще можно использовать на сервере, причем очень даже успешно. А все благодаря платформе node.js, и v8, который встроен во все хромоподобное.
4. Я щас ниче не понял, повтори. - Проще говоря, если ты не делаешь огромный интернет магазин, или хай лоад проект, то забудь о пхп или руби, используй javascript и node.js (базы данных прилагаются, mongoDB и sql-и тоже)
5. А че еще прикольного можно сделать - А еще есть MVC фреймворки, angular, backbone, ember, knockout и многое другое.
6. Нах оно надо? - Для создания web application, логики на клиент-сайд.
7. Мда столько хуйни всякой... А можно просто jquery учить, я слыхал щас все ее используют сайты - Не стоит, можешь начать писать на жыквери, когда будешь асом в других фреймворках, и, в частности самого нативного языка, но не раньше, не порть себе мозги
8. Ну все все бля, че как учить то? - Дальше я приложу список материалов для изучения
Учим JS:
Книги:
David Flanagan - "JavaScript: Подробное руководство" - маст хев, книга, которую будешь читать не раз. (Читать 6-е издание).
Дуглас Крокфорд "JavaScript: сильные стороны" - просто хорошая книга.
Стефанов С. - "JavaScript. Шаблоны"
Онлайн сообщества:
http://learn.javascript.ru/ - оно одно, единственное. Начинать учить язык советую отсюда, потом переходить уже к книгам.
Онлайн курсы:
Как же можно учить язык, только читая книжонки? Нужна практика, и только так изучаемое усваивается, не иначе.
CodeSchool - http://go.codeschool.com/KoeYkQ (не ругать за рефку, она прибавляет +2 дня бесплатного пользования)
Отличный ресурс для изучения языка, очень много курсов по всем передовым технологиям.
CodeAcademy - http://www.codecademy.com/
Уже не такой сильный, но все еще интересный проект, так же маст хев для набивания скилла.
Выучил основы, написал свою пузырьковую сортировку и змейку? Не знаешь как двигаться дальше?
Почитай теперь это - https://shamansir.github.io/JavaScript-Garden/
А потом? Я и так уже гений!!!
Выбери себе направление, может, ты хочешь игори делать, тогда вперед на гитхаб, и ищи phaser, pixi и другое, выбор велик.
Хочешь на сервер сайд, на самой хипстерской технологии? Копай в сторону node, express, socket io.
Хочешь писать MVC логику? Angular, backbone, да множество их.
Ну, а мы продолжаем наш JavaScript тред #3