Задать вопрос
  • Как передать параметры в метод?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Добрый день, чтобы ваш прогресс был более быстрым и полезным, нужно подтягивать знания по нативному js.

    Во-первых - onClick={this.updateClick('params')} - что вы ожидаете от такой записи? Давайте поразмышляем: в onClick вы должны передать функцию-обработчик, а вы передаете РЕЗУЛЬТАТ функции this.updateClick так как вызываете ее с ( )

    Во-вторых, как вам правильно подсказали, можно использовать .bind для передачи параметров.
    Для этого, сначала идем в MDN, читаем. Пытаемся передать функцию с параметром в качестве домашнего задания. Подсказка: .bind ставит ваши параметры в начало. То есть все аргументы сдвигаются (в том числе и "e").

    P.S. Если не получится, то можете посмотреть ответ по ссылке.

    P.P.S. Очень важно понять, что есть результат работы функции. То есть, в вашем вопросе, вы передавали в onClick - e.preventDefault(), причем именно это, а не "функцию, которая по клику бы срабатывала и происходил бы e.preventDefault()). В случае с bind, вы передаете результат работы функции bind, который является функцией, другими словами - "все корректно, в onClick передается функция".
    Ответ написан
    Комментировать
  • Какой js используют при создания интернет магазина в современном мире?

    AMar4enko
    @AMar4enko
    React - будет индексироваться, его можно рендерить на сервере. Ангуляр 2 можно, он уже rc.5 по моим ощущениям файнал будет версии через две, тоже можно рендерить на сервере

    В целом, похоже что вы выбираете половник не умея варить суп
    Ответ написан
    4 комментария
  • Что сейчас используют для минификации js/css с gulp?

    sadisme
    @sadisme
    font-size:30rem
    gulp-cssnano и gulp-uglify
    Ответ написан
    Комментировать
  • Как развиваться начинающему web-разработчику?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Я в начале 2000-х писал приложение для учета некоммунальных услуг ЖКХ для местного МУПа. Начинался этот проект как тестовое задание для приема на работу.

    Писать можно было на чем угодно, но на тот момент для меня лучшим инструментом казался Clipper 5.x, которым я, как мне тогда казалось, более-менее владел.

    Проблема усугублялась еще и неразговорчивостью специалистов, работу которых мне было поручено автоматизировать.

    Забегая вперед скажу, что автоматизация, в конце концов, удалась, из режима работы 3 человека по 8 часов в день 6 дней в неделю, за 6 месяцев после начала внедрения, вышли в режим 1 человек 2 часа в день 5 дней в неделю... Т.е. 3*8*6*4 = 576 человеко-часов превратилось в 2*5*4 = 40 ч/ч, КПД был увеличен в 14.4 раза.

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

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

    Далее я реализовывал эти пути как разумел и предоставлял тётушкам.

    И о чудо, обычно на этом этапе прорезался дар речи (тётушки, как все нормальные люди, обожают критиковать то, что по их мнению "не так"), и на меня начинал сыпаться поток весьма конкретных и ёмких ЦУ (ценных указаний), которые я подробно документировал и впоследствии претворял в жизнь.

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

    Первые месяцы они вели двойной учет, по старинке в своей огромной бухгалтерской книге, и в программе, и программу проверяли по книге. Через 2-3 месяца они убедились, что в программе "цифры" точнее, ошибки отлавливаются быстрее, меньшими усилиями, и стали уже свою книгу проверять по программе. Через 5-6 месяцев я написал им модуль расчета и распечатки месячного отчета, и они перестали вести свою книгу, просто печатали ее каждый месяц на огромном матричном принтере.

    Теперь о том, как строилась архитектура приложения. Конечная версия носила номер 4, и 4 раза пришлось переписать приложение с нуля. На 4-й раз я понял, что либо я как-то грамотно организую архитектуру, либо это будет провал, т.к. мне до чертиков надоело каждый раз переписывать одно и то же.

    Условно можно разделить основной функционал приложения на 2 фазы - ввод/редактирование/просмотр данных и построение отчетов/выборок. С отчетами и выборками тёмный лес, т.к. требования меняются непредсказуемым образом любое количество раз в году (по началу), а вот с вводом и редактированием данных в целом ситуация стабильная, тем более за предыдущие 3 версии я достаточно хорошо исследовал этот процесс.

    Ввод/редактирование данных осуществляется посредством форм, которые, в общем случае, повторяют структуру таблицы БД, за исключением случаев, когда присоединяются поля из справочников.

    Я вообще по натуре человек ленивый, и вместо того чтобы 100 раз метнуться и что-то по мелочи исправить, я предпочитаю долго запрягать, а потом быстро и беззаботно ехать.

    Первейшая проблема программ на Clipper 5.x это банальное отсутствие таблиц БД, либо слетевшие индексы. Это первое, чем я озаботился. программа при запуске проверяет наличие или отсутствие таблиц и индексов, и чего не хватает - достраивает на лету. Таким образом можно потерять данные, но программа, все равно, работать будет. Чтобы это стало возможным, потребовалось в программе прописать структуры таблиц БД и индексов.

    Вторым этапом, дико устав копипастить на 95% совпадающий код для построения форм, а, потом, когда надо что-то поменять, добавить или исправить, шариться по тоннам на 95% идентичного кода в сотне мест, я решил прибиться к стану метапрограммирования.

    Для этого потребовалось каждую форму описать неким образом, и под это описание разработать генератор форм/генератор гридов. Когда мне это, далеко не с первого раза и далеко не сразу, но таки удалось, добавление новой формы/грида в программу стало сводиться к описанию структур необходимых таблиц, индексов к ним, и структуры формы, и, после компиляции, программа на лету строила все необходимые интерфейсы.

    В метаописание формы я добавлял и ссылки на другие таблицы, и генератор автоматически понимал их как ссылки на справочники, в результате чего в форме появлялось в этом месте не поле ввода, а кнопка вызова справочника.

    Причем генератор грамотно отрабатывал множественную вложенность, и каждый вызываемый справочник имел полный функционал CRU (Create, Read, Update), включая фильтрацию по столбцам и сортировку.

    Таким образом я создал мощный и гибкий генератор интерфейсов, а разработка CRU-части приложения сводилась к разработке описания структур таблиц, индексов и метаописания форм.

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

    Для реализации этого функционала пришлось пропатчить стандартный грид TBrowse (он применяется для просмотра таблиц).

    Резюме следующее - для построения грамотной архитектуры необходимо иметь минимальный опыт в пару-тройку тысяч часов бурного кодинга, и успеть собрать основные грабли, успеть устать от боли копипасты и дебаггинга. Так же нужно досконально понимать и видеть целиком предметную область. Тогда из человеческой лени и стремления к идеалу, и будет рождаться некая архитектура, причем у каждого она будет своя, индивидуальная.

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

    P.S.: когда я мигрировал в веб, через некоторое время я снова вынужден был пройти аналогичный путь, в результате которого родился простенький AJAX-фреймворк на стеке PHP+Smarty+DBSimple+jQuery. Сегодня я всеми силами стараюсь от него уйти, хотя для своих задач он достаточно хорош. Был опыт, когда на шареном хостинге за 5 баксов проект на этом фреймворке со скрипом но держал 30-40 тысяч уников в сутки (после ряда оптимизаций) и достаточно хорошо был защищен от топорного взлома через SQL-инъекции благодаря DBSimple...
    Ответ написан
    1 комментарий
  • Добавление метода в прототип конструктора?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    Свойства в сам конструктор.
    Методы и константы в прототип.
    Делать так нужно для экономии памяти. Чтобы каждый инстанс не имел одинаковые для всех методы, а брал их из прототипа
    Ответ написан
    Комментировать
  • Как лучше хранить временные данные?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Вариант с мускулем не самый лучший, все же это не очень быстрое хранилище, не стоит выбирать технологию только из за того, что Вы с ней хорошо знакомы. Посмотрите в сторону Redis, он очень прост, имеет структуру key=>value, как мемкеш, но и есть ряд плюшек, например инкрементные поля, время жизни(ну это и меме есть) и еще немного разных бонусов. ОЧЕНЬ легко интегрируется, я за 15 минут написал свой адаптер, это вместе с чтением документации. Я думаю это то что вам нужно.
    Ответ написан
    2 комментария
  • Что за проблема с плагином Masonry?

    LenovoId
    @LenovoId
    svg, css,js
    наконец то я laravel увидел , думал ни когда его не увижу , по сабжу : возможен конфликт , я не спец по masonry но у меня из 11 раз работы с ним он не работал 11 раз , т.е вообще ни разу не было нужного эффекта
    Ответ написан
    2 комментария
  • Как выучить основные методы и функции Javascript?

    @evgeniy_lm
    Никак. Javascript не стихотворение его учить не нужно
    Ответ написан
    4 комментария
  • Как задавать стили для html-блока, который будет генерироваться на других сайтах скриптом?

    @Wheelie
    Вместе с куском html генерируйте
    <link>со ссылкой на css
    или <style>
    Ответ написан
    Комментировать
  • Почему рекомендуют НЕ использовать id в HTML и CSS?

    gr1mm3r
    @gr1mm3r
    50% ответа в правильном вопросе. Остальное мануал.
    Когда ID становятся болью в...
    1) По факту ID имеет больший вес чем class
    2) Разрешается использовать только уникальные, без повторения , ID иначе браузер сойдет с ума.
    3) для class есть !important
    Также посмотрите CSS Specificity: Things You Should Know
    Взвешиваем селекторы
    6PCWC.jpg
    Ответ написан
    Комментировать
  • Как правильно писать названия переменных, функций и тому-подобное?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    нижнее подчеркивание у функции убираем и все уже чуть получше.

    В целом же названия надо делать осмысленными. То есть если не знаем как что назвать, просто формулируем что мы хотим сделать (на английском языке), и исходя из этого уже выдумываем названия:

    // calculate sum
    $sum = calculateSum(); 
    // generate report for premium users
    $sum = generateReport(new PremiumUsersSpecification());


    как-то так. Ну а что как, у меня такие правила:

    - константы - SCREAMING_SNAKE_CASE
    - названия объектов - UpperCamelCase
    - названия переменных, методов, функций и т.д. - lowerCamelCase
    - таблички/поля в бд, json, yml - snake_case
    Ответ написан
    Комментировать
  • Как узнать что точка попадает на диагональную линию?

    @YNile
    JS Developer
    В математике попадание точки на любую кривую проверяется подстановкой значений x/y этой точки в формулу описывающую кривую. Если равенство сохраняется - значит точка попадает :)
    Ответ написан
    7 комментариев
  • Как сверстать такой шаблон?

    Serj-One
    @Serj-One
    i'm sexy and i know it
    Сделать квадрат псевдоэлементом, и повернуть уже его.
    Как уже верно подметил Александр А, если применять трансформацию к тексту, он будет отображаться немного некрасиво. Однако делать квадрат из двух треугольников тоже незачем.
    Ответ написан
    Комментировать
  • Как сверстать такой элемент?

    In4in
    @In4in
    °•× JavaScript Developer ^_^ ו°
    Я у мамы художник.
    19e6e41b796f49a4b242413655968fe4.png

    Ну ладно, ладно: https://jsfiddle.net/j9052yja/3/
    Ответ написан
    2 комментария
  • Как сделать populate (join) двух коллекций в Mongoose?

    @dimonnwc3
    Я не до конца понимаю вопрос, но попробую ответить, как я понял.
    Есть Трейлеры, которые имеют ID видео на ютубе, и путь к постеру(jpg).

    По сути, сама схема построена не правильно
    Для чего используются отдельные коллекции YouTube и Posters ?

    Основной документ это трейлер, он имеет одну ссылку на ютуб и один постер, но в теории может иметь и больше.
    Сылка на ютуб и адрес постера, не могут иметь болеу одного трейлера(не могут принадлежать более чем одному трейлеру), более того они всегда уникальны и привязаны к трейлеру.

    Можно сделать ОДНУ вложенную схему вместо трех, без ссылок DBref.

    var trailerSchema = Schema({
        timestamp: String,
        youtube : String
        poster : String
    });


    Либо если трейлер, может иметь много постеров, то с помощью массива объектов:
    var trailerSchema = Schema({
        timestamp: String,
        youtube :  [{name: String, url: String}]
        posters : [{name: String, url: String}]
    });


    так запрос:
    Trailer.find(query);
    Будет сразу выдавать информацию, со ссылками на ютуб и постеры, без популяции.

    Не нужно пытаться эмулировать джоины и использовать коллекции, как таблиц, там где это не требуется.

    PS. С DBref это тоже можно сделать, но я не вижу в этом примере смысла.
    Ответ написан
    Комментировать
  • Gulp, почему так много папок стало?

    Это нормально. После обновления NPM до версии 3, все зависимости (и зависимости зависимостей) устанавливаются в виде "плоской", а не древовидной структуры, как было раньше: https://github.com/npm/npm/releases/tag/v3.0.0
    Ответ написан
    4 комментария
  • Можно ли использовать normalize.css в индивидуальных проектах?

    nazarpc
    @nazarpc
    Open Source enthusiast
    А почему нет? normalize.css не влияет на индивидуальность если только вы не понимаете под индивидуальностью различия в CSS значениях по-умолчанию в зависимости от браузера (что обычно называют багами, и с чем normalize.css борется).
    Ответ написан
    4 комментария
  • Вопрос про ретину?

    iswitch
    @iswitch
    Geek, Programmer, ????
    Из презезентации Вадима Макеева Чётко и резко

    Подготовить фотографию в 1,5–2 раза больше требуемого
    Сохранить со сжатием гораздо более смелым, до 20-30%
    Уменьшить её размеры до нужных при вставке
    Файл получится либо слегка больше, либо даже меньше
    Внешнее качество и детализация фотографии повысятся
    Ответ написан
    Комментировать