• Как правильно удалить классы?

    kulakoff
    @kulakoff Куратор тега Vue.js
    Vue.js developing
    <template>
      <ul>
        <li v-for="i in 6" @click="current = i" :class="{active: current === i}">
          элемент списка
        </li>
      </ul>
    </template>


    data() {
      return {
        current: 0
      }
    }
    Ответ написан
    1 комментарий
  • Как вы распределяете время между программистами и задачами?

    ApeCoder
    @ApeCoder
    Чем не подходит trello именно для этой задачи - вроде на доске должно быть видно кто что делает?

    В-общем, есть продукты специально для программистов, которые объединяют управление задачами, code review, планирование и прочее (github, jira, vsts, youtrack и так далее).

    Для планирования там реализован автоматический подсчет разных характеристик и всякие графики. Кстати, по запросу "trello lead time" находится некоторое количество дополнений, который подсчитывают такие характеристики для trello.

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

    Почитайте про скрам и канбан. Большинство инструментов их поддерживает.
    Ответ написан
    Комментировать
  • Как вы распределяете время между программистами и задачами?

    kumaxim
    @kumaxim
    Web-программист
    Имеем 4 колонки на kanban-доске:
    1. Список заданий
    2. В процессе
    3. На проверке
    4. Исполнено

    Теперь о каждом чуть более детально.

    Список задач, он же backlog - список того, что вообще надо сделать. Сортируется это дело по приоритетам, т.е. самая верхня задача самая важная, самая нижняя - самая не важная. Отдельно отмечу, что только в данный момент времени. Отметок "Важная", "Важная 1", "Важная 2", "Срочная", "Горящая" и т.п. быть не должно. Если задача есть в этом списке, значит она важна для команды. Ее исполнение необходимо для нормальной работы команды. Акцентирую Ваше внимание, что именно в данный момент. Как тимлид Вы можете сделать только одну доработку в этой колонке - присвоить цвет каждому подчиненному. Например, Иван берет только синие задачи, Николай только желтые и т.п. Срочнось задач в компетенцию тимлида не входит, это зона ответственности менеджмента.

    В процессе - задачи, над которыми именно сейчас работают Ваши подчиненные. Не вообще работают, а вот конкретно в данный момент, когда Вы открывайте доску и смотрите на нее, Ваш человек сидит в IDE и пишет/отлаживает код. Колонка обязана иметь лимит. Все книжки рекомендуют начинать с 2n - 1, где N - количество людей в команде, а минус 1 потому что кто-то может с чем-то застрять и ему надо будет помочь. Порядок задач в этой колонке не важен. Важно только то, сколько они там находятся. У Вас должно быть какое-то время реагирования, т.е. если задача висит там 3-й день, то нужно спросить условного Николая, что у него там за проблема и не нужно ли ему там с ней помочь. Часто, это колонка разбивается на на две: в процессе и отложено. Вторая означает, что когда исполнитель начал работу над задачей, он не нашел, скажем, доступа к хостингу или данные к FTP/cPanel, предоставленные клиентом, оказались не верными. Колонка "Отложено" требует уже реакции менеджеров в духе "Звонок клиенту". Задачи от колонки "Отложено" менеджеры должны обрабатывать, дополнять и перемещать снова в backlog. Продуктовые команды, обычно, такую колонку не используют. Разного рода digital-агенства применяют это очень часто.

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

    Исполнего или Готово - опять же, думаю понятно. Завершенные задачи. В конце рабочей недели по наполнению этой колонки можно оценить продуктивность команды или/и продуктивность конкретного разработчика, если Вы будите использовать схему "Человек - Цвет". Карточки из этой колонки отправляются в архив в пятницу в 19:00 или когда Вы там выгоняйте всех программистов из-за мониторов. Также, в конце каждой недели, должен чиститься backlog от более не актуальных задач. Помните что я писал выше? В первой колонке у нас только важные задачи, которые необходимы именно в данный момент. Если клиент "заглох" или "слетел" - его задачи из backlog должны быть отправлены в архив, вместе с завершенными задачами в пятницу в 19:00

    Отдельно отмечу, что появление задач с метками "Важное 1", "Срочное", "Очень-Очень срочное" в любой системе управления, не только scram/kanban, говорит о том, что в компании слабый менеджмент. Есть задача. Ее либо надо сделать прямо сейчас или в ближайшее время либо ее нет смысла делать совсем.

    Следует также помнить, что замена менеджмента и/или системы управления, ровно как и изменения в ней, должны исходить от собственика/директора либо при его одобрении и полной поддержки. В противном случае это очень быстро все заглохнет, окончившись не чем. Каким образом Вы донесете эту необходимость до своего Босса - уже вопрос отдельный.
    Ответ написан
    3 комментария
  • Что означает (jQuery) после (function( $ )?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    (function( ) {
    })();

    Вот эта конструкция называется "анонимная самовызываемая функция".

    То есть, тут два действия:
    Объявление анонимной функции
    function( ) {
    }

    и сразу ее вызов
    ()()
    Первые скобки это синтаксический приём для вызова анонимной функции. Есть и другие методы. Например
    +function(){}()
    Вторые скобки - это собственно вызов функции и при необходимости передача параметра (обычный вызов же)

    ()(jQuery) — в параметре передается jQuery

    function($){} — а тут этот параметр объявлен и используется

    (function($){})(jQuery) — итого, объявили анонимную функцию, и вызвали ее, передав параметром объект jQuery

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

    jQuery.noConflict();

    Это значит, что доллар использоваться не будет, и объект будет доступен только по ссылке jQuery.

    Но для удобства вы можете использовать анонимную функцию и безопасно использовать внутри неё переменную доллара

    (function($){
      $('.slider').slick();
    })(jQuery);


    Чтобы стало совсем понятно, конструкцию можно переписать без анонимной функции

    var myFunc = function($){
     // some code
    }
    
    myFunc(jQuery);
    Ответ написан
    Комментировать
  • Как лучше реализовать прелоадер?

    Fragster
    @Fragster
    помогло? отметь решением!
    Вероятно следует разделить на большее количество бандлов:
    1. пакеты с vue и другими общими для прелоадера и остального приложения,
    2. пакеты, со всем, что необходимо только для прелоадера
    3. прелоадер
    4. пакеты для остального приложения, кроме прелоадера (отложенная загрузка)
    5. остальное приложение (отложенная загрузка)
    Основной компонент по умолчанию скрыть (display: none) и показывать уже в mounted прелоадера.
    1, 2 и 4 нужны для кэширования у пользователя (чтобы повторно не грузить при зафиксированной версии пакетов)
    Ответ написан
    7 комментариев
  • Как правильно импортировать JS файл из папки static?

    bingo347
    @bingo347
    Crazy on performance...
    const script = document.createElement('script');
    script.async = true;
    script.src = '/static/your-script.js';
    document.head.appendChild(script);
    Ответ написан
    1 комментарий
  • В чём разница между постпроцессорами препроцессорами?

    nuykon
    @nuykon
    Full Stack Developer
    Препроцессор значительно расширяет возможности и имеет более удобный синтаксис. Препроцессор принимает данные(ваш код stylus/sass/less) и отдает (компилирует в css)
    Постпроцессор - работает уже с самим css (постобработка - последующая обработка) например подставляет вендорные префиксы.

    В общем их надо комбинировать к примеру
    Сначала пишем stylus код
    .container
      box-sizing border-box

    это компилируется в
    .container {
      box-sizing: border-box;
    }

    далее используем постпроцессор(автопрефиксер) и получаем
    .container {
      -webkit-box-sizing: border-box;
      -moz-box-sizing: border-box;
      box-sizing: border-box;
    }
    Ответ написан
    Комментировать
  • В чём разница между постпроцессорами препроцессорами?

    Stalker_RED
    @Stalker_RED
    Вся суть одной картинкой:
    tZjTgV.png

    Препроцессоры превращают всякие штуки типа SCSS в CSS.
    Постпроцессоры "улучшают" уже готовый CSS (автопрефиксер, например).
    И да, можно собрать-настроить такой тулчейн, который будет делать все эти манипуляции за один проход.
    Ответ написан
    Комментировать
  • Как правильно сделать alias во Vue.js?

    kulakoff
    @kulakoff Куратор тега Vue.js
    Vue.js developing
    Если просто вот так написать:

    {
          path: '/',
          component: index,
          children: [
            {
              path: ':id'
            }
          ]
    }


    или вот так:
    {path: '/', сomponent: index},
    {path: '/:id', сomponent: index}
    Ответ написан
    1 комментарий
  • Кто должен заниматься редиректами программист или сео-специалист?

    shambler81
    @shambler81 Куратор тега htaccess
    сеошник, могу прочитать пару лекций по регулярным выражениям и mod-rewrite
    ;)))
    Это просто главное понять как все это работает.
    ТАк же разработайте стандарты типа таких
    https://klondike-studio.ru/standards/standartnyy-h...
    и используйте сервис
    https://donatstudios.com/RewriteRule_Generator
    Ответ написан
    1 комментарий
  • Как проверить есть ли jQuery определенной версии в браузере или нет?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    Например:
    jQuery.fn.jquery // или $.fn.jquery
    Если jQ имеется, то в ответ будет строка с версией
    Иначе выбросит исключение
    Uncaught ReferenceError: jQuery is not defined
    Uncaught TypeError: Cannot read property 'jquery' of undefined

    Но никто, не мешает определить эти свойства не загружая сам jQ ...
    Ответ написан
    Комментировать
  • Как проверить есть ли jQuery определенной версии в браузере или нет?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    if (typeof jQuery != 'undefined') {  
        alert(jQuery.fn.jquery); //version
    }
    Ответ написан
    Комментировать
  • Как сделать такой эффект?

    Torin_Asakura
    @Torin_Asakura
    Lead Architect
    В вашем примере речь идёт о простом expandBlock с использованием директивы transition.
    Фишка в том, что текст изначально подгружен и живёт в доме, "слушать" изменения дом-ноды в данном случае нет необходимости и что-то грузить после инициализации объекта.
    Нужно просто:
    - подгружать объекты в дом
    - дождаться коллапс/экспанд
    - отдать уже подгруженный контент
    Vue.directive('expand', {
        inserted: function(el, binding)
        {
            if (binding.value !== null)
            {
                function calcHeight()
                {
                    const currentState = el.getAttribute('aria-expanded')
    
                    el.classList.add('u-no-transition')
                    el.removeAttribute('aria-expanded')
                    el.style.height = null
                    el.style.height = el.clientHeight + 'px'
                    el.setAttribute('aria-expanded', currentState)
    
                    setTimeout(function()
                    {
                        el.classList.remove('u-no-transition')
                    })
                }
    
                el.classList.add('expand')
                el.setAttribute('aria-expanded', (binding.value) ? 'true' : 'false')
                calcHeight()
                window.addEventListener('resize', calcHeight)
            }
        },
        update: function(el, binding)
        {
            if (el.style.height && binding.value !== null)
            {
                el.setAttribute('aria-expanded', (binding.value) ? 'true' : 'false')
            }
        },
    })
    
    var app = new Vue({
        el: '#app',
        data: {
            isExpanded: false
        }
    })
    Ответ написан
    3 комментария
  • Как правильно делать запрос картинок во Vue.js?

    0xD34F
    @0xD34F Куратор тега Vue.js
    const imageId = post.fields.image.sys.id

    Что-то ни у одного поста нет image.

    Ну а так-то можете использовать индекс, заменяете .forEach((post) на .forEach((post, i), а

    this.images.push(response.data.fields.file.url);

    заменяете на

    this.$set(this.images, i, response.data.fields.file.url);


    Или, есть вариант отказаться от использования дополнительного массива, и сохранять путь к картинке прямо в объект поста. Вместо :src="images[index]" будет :src="post.image", а

    this.images.push(response.data.fields.file.url);

    поменяется на

    this.$set(post, 'image', response.data.fields.file.url);
    Ответ написан
    2 комментария
  • Как правильно делать запрос картинок во Vue.js?

    @vism
    Что мешает кидать картинки по индексу поста и все?
    Ответ написан
    3 комментария
  • Какое backend решение выбрать для проектов на Vue.js?

    Берите Laravel

    1. Популярный фрейм у которого весьма не маленькое общество
    2. Хороша документация, много как русских так и английских видео на ютубе
    3. В Laravel уже встроен vue.js по дефолту и на https://laracasts.com/ есть бесплтный курс по использованию лары и vue + на этом же сайте очень доходчиво объясняется работа с Ларой
    4. Много добротных дополнений на гите по Ларе

    К примеру написать какой-то CRUD без наворотов не составит проблем, код получается не большим.

    Почитайте, попробуйте, может понравится
    Ответ написан
    3 комментария
  • Как показать sidebar на vue?

    kulakoff
    @kulakoff Куратор тега Vue.js
    Vue.js developing
    Отправляете событие при нажатии, ловите его в app, меняете состояние show, передаете в navigation
    Ответ написан
    5 комментариев