Ответы пользователя по тегу JavaScript
  • Как правильно сделать чат?

    werevolff
    @werevolff
    Воспользуйтесь для чата любым реактивным фрэймворком. Angular.js, React.js, Vue.js или его фрэймворк второго уровня Nuxt.js.

    1. Сообщения должны отдаваться постранично.
    2. Паджинация осуществляется путём скроллинга.
    3. Новые сообщения должны прилетать через WebSocket. Например, готовый вэбсокет - https://github.com/centrifugal/centrifugo
    4. Через фрэймворк поддерживается постоянная длина массива с сообщениями. Например, 100 сообщений. Допустим, на вэбсокет приходит очередное сообщение. Оно добавляется в конец массива, а первый элемент удаляется. Если пользователь скроллит сообщения до первого показанного, скрипт отправляет на сайт запрос: отдай мне страницу с 50 сообщениями старше вот этого последнего. Сервер отдаёт страницу, она вставляется в начало массива, после чего, из него удаляются последние 50 элементов. Аналогично должен работать скроллинг к более новым сообщениям. Поскольку фрэймворки реактивные, ничего в HTML вставлять не надо: само отрендерится.
    Ответ написан
  • Какова суть фреймворков и библиотек?

    werevolff
    @werevolff
    1. Фрэймворк - это каркас приложения. Библиотека - это готовый код. Фрэймворк предоставляет разработчику архитектуру, на которой выстраивается приложение. Библиотека не предоставляет архитектуры. Ты вызываешь её, чтобы получить результат в отдельной части своего приложения.
    2. Можно использовать несколько фрэймворков. Каждый фрэймворк отвечает за своё приложение или свою часть проекта. Например, можно сделать админку сайта на Angular.js а клиентскую часть - на React. Можно одну страницу сделать на React.js, вторую - на vue.js. одну и ту же часть проекта на разных фрэймворках делать не получится. Какой выбрать - вопрос опыта. Пока не начнёшь писать - не поймёшь.
    3. Некоторые библиотеки могут заменить фрэймворки, имея полный набор абстракций доя решения задачи. Можно ли сравнивать библиотеки и фрэймворки? Это зависит от параметров сравнения. Если можешь обосновать что ты сравниваешь, то не вижу проблем. Но, для обоснования надо иметь опыт работы и решения прикладных задач.
    4. Ничего не могу посоветовать: выбор библиотеки или фрэймворка - это ответственность разработчика. Если разработчик с этим вопросом идёт на тостер, то дешевле посоветовать другого разработчика.
    P.S. Не стоит зацикливаться на ванильном JS. Стоит выбрать фрэймворк и работать с ним. Понимание придёт с опытом.
    Ответ написан
  • Как реализовать древовидные комментарии на django с использование tinymce/ckeditor?

    werevolff
    @werevolff
    Django не является CMS. Это не джумла, и не вордпресс. Здесь нет отговорок типа "мне лень это писать". Ставим treebeard или mptt, реализуем модель комментариев. При необходимости, делаем REST интерфейс для вывода дерева, в JS добавляем возможность при клике на "ответить" выставлять id комментария в переменную. Открываем tinymce/ckeditor, при сабмите отправляем id родителя и текст сообщения.

    django-threadedcomments реализует только модель и кучу templatetags. Абсолютно не django way. Как вы собрались решать проблему, если вам банально лень открыть анализатор запросов и посмотреть что отправляется на сервер? Почему не уходит parent_id?
    Ответ написан
  • Как области изображения сделать прозрачными при помощи jQuery или подобного?

    werevolff
    @werevolff
    Не совсем понятен вопрос:

    1. Что означает "делать область прозрачной"? Вот, я навожу мышку на изображение и пиксели под курсором исчезают. Это называется - сделать прозрачным. Или я навожу мышку, и область под мышкой становится полупрозрачной. Это другое.
    2. Для чего оно надо? Это визуальный эффект или изображение после такого "вытирания" надо сохранить?
    3. О какой области идёт речь? Это небольшой круг под курсором? Это многоугольник на изображении?
    4. Какая стоит задача? Если необходимо просто навесить свистоперделку на курсор, то не факт что что-то надо делать прозрачным.
    Ответ написан
  • Выбор фреймворка для админ панели?

    werevolff
    @werevolff
    Не понимаю вашей логики:

    1. У вас в приоритете быстрый старт, а вы рассуждаете какая технология умрёт, а какая нет.
    2. У вас проекты на jQuery, вы обзорно знаете ангуляр, а руки уже тянутся к реакту и эмбер.

    keeping_records_management_simple.jpg

    Получается, что в первом пункте вы сами себе усложняете жизнь, а во втором - сами себе противоречите. Почему вы считаете, что эмбер и реакт не потянут за собой кучу зависимостей ноды? Вам нужно простейшее решение для организации кода с возможностью начать одним файлом? Это Backbone.js. Однозначно и без альтернатив. Считаете, что им пользуются одни староверы? Пишите на втором ангуляре. Из приведённых вами движков проблем с интеграцией, на вскидку, не должно возникнуть разве что у бэкбона. Так что вам что ангуляр, что эмбер - один лес.
    Ответ написан
  • Как стартовать приложение на AngularJS только после загрузки стартовых данных с сервера?

    werevolff
    @werevolff
    А оно надо? Делаем в контроллере $scope.dataReady = false. Основной контейнер в HTML ng-show="dataReady". После загрузки данных, переключаем $scope.dataReady. Вешаем

    $scope.$watch('dataReady', function(newVal, oldVal) {
        if (newVal && !oldVal) {
           // А тут всё, что должно выполниться после загрузки данных. Но лучше вызвать отсюда сигнал.
        }
    })
    Ответ написан
  • Как упростить условие?

    werevolff
    @werevolff
    if (id === 100) {
        (type === 'off') ? ion.sound.play('off') | ion.sound.play('on');
        arrSound['v1'] = (arrSound['v1'] !== 1) ? 1 : 0;
    }
    Ответ написан