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

    mr_T
    @mr_T
    Web-разработчик
    Не существует готового универсального решения для таких случаев. Legacy это боль, понимаю, но придётся открывать документацию, разбираться и решать проблему самостоятельно.
    Ответ написан
    Комментировать
  • Как подключить vue-компонент к сайту(без SPA) и настроить ssr?

    mr_T
    @mr_T
    Web-разработчик
    SSR подразумевает исполнение кода vue компонентов на сервере, так что именно ssr сделать на php не получится. Для этого нужно поднимать node сервер, сделать нормальную сборку и т.п.
    2 более простых варианта:
    1) Использовать пререндеринг для страниц с vue компонентами, что всё равно потребует установки node сервера, но само приложение менять не придётся.
    2) Тупо дублировать разметку в компоненте и на сервере.

    В общем, какой-то чудесной серебряной пули, которая быстро и без геморроя решит задачу, не существует.
    Ответ написан
    Комментировать
  • Как правильно реализовать работу с пользователем в изоморфном js приложении?

    mr_T
    @mr_T
    Web-разработчик
    Всё, что связано с авторизацией, можно оставить только на клиенте. На сервере в таком случае всё должно рендериться так, как будто пользователь анонимус. Так делать совершенно нормально, если нет цели давать готовую разметку авторизованным пользователям с сервера.
    Ответ написан
    3 комментария
  • Компонент из двух строк таблицы?

    mr_T
    @mr_T
    Web-разработчик
    Именно повторить - никак. Каждый компонент должен иметь единственный элемент верхнего уровня, и с этим ничего не поделать. Так что либо через tbody, как писали выше, либо дробить на несколько компонентов, либо оставить всё в цикле template v-for.
    Ответ написан
    Комментировать
  • Как добавлять в Webpack сборку кастомный код на лету?

    mr_T
    @mr_T
    Web-разработчик
    Если не давать сторонним разработчикам вклиниваться в процесс сборки и вообще не давать возможность пересобирать проект, то силами webpack такое вряд ли можно провернуть. В webpack модули должны быть предсказуемыми на момент сборки и, насколько я знаю, динамически их загружать из внешних источников не выйдет.
    Можно либо всё-таки пересобирать проект при добавлении сторонних плагинов и просто подгружать все плагины из определённых папок (с помощью require.context), либо писать собственный динамический загрузчик.
    Передача зависимостей плагинам - вообще не проблема при любом из подходов. Просто каждый плагин должен иметь какую-то функцию инициализации, в которую вы можете передать нужные зависимости в качестве аргументов. При желании можно даже какой-нибудь DI замутить.
    Ответ написан
    Комментировать
  • Как разделить webpack код от кода проекта?

    mr_T
    @mr_T
    Web-разработчик
    Задаёшь в entry столько элементов, сколько нужно. Потом в output задаёшь filename с подстановкой имени нужного entry. Entry со всеми зависимостями добавляешь в CommonsChunkPlugin, чтобы они не дублировались в entry исходников приложения. Типа того:

    entry: {
    	app: './src/app.js',
    	vendor: ['lib1', 'lib2', ... ] // перечисляем тут все зависимости, которые нужно вынести в отдельный файл
    },
    output: {
    	filename: '[name].js?[chunkhash:6]' // получаем 2 файла: app.js, vendor.js
    },
    plugins: [
    	new webpack.optimize.CommonsChunkPlugin({ // убираем дубли зависимостей из app.js
    		names: ['vendor']
    	}
    ]


    Ну и дальше по необходимости шатать конфиги entry и CommonsChunkPlugin, про них всё подробно в документации webpack расписано.
    Ответ написан
    2 комментария
  • Как сделать авторизацию у SSR приложения?

    mr_T
    @mr_T
    Web-разработчик
    1. Для начала по SSR не нужно заморачиваться - пускай рендеринг всегда исходит из того, что пользователь не авторизован. Всё остальное можно подгрузить на клиенте при необходимости.
    Какой порядок аутентификации нужен
    - довольно странный вопрос, так как это решать вам в зависимости от того, какие условия задачи :) Предполагая, что вам нужно узнать, какие есть варианты, могу сказать, что в общем их 2 - стандартная для сайтов история с куками и сессиями или получение токена и дальнейшая авторизация по нему, то есть стандартная история для всяких REST API.
    2. Если имеется в виду stateless авторизация на клиенте через OAuth, то есть замечательная библиотека для этого. Если не хочется тянуть такую большую зависимость, то можно и самому реализовать - там всё довольно просто. Могу подсказать конкретнее, если интересно. На бэкенде можно взять готовое решение, коих куча для любого языка/фреймворка/CMS.
    3. Тонкостей особо нет. Получил токен или куку сессии и всё. Дальше уже всё зависит от того, что конкретно нужно реализовать.

    Всё, что касается процесса подтверждения email относится к бэкенду, так что тут всё стандартно, и SSR ничего не меняет. Опять же, есть куча готовых решений для любой платформы. OAuth можно тоже полностью отдать бэкенду, но тут нужно понимать, что тогда не получится этот бэкенд использовать для stateless API.
    Ответ написан
  • Переход по страницам с get параметром. Как реализовать в vue.js?

    mr_T
    @mr_T
    Web-разработчик
    Вот это должно решить проблему. Там примеры с параметрами пути, но с query тоже должно сработать. В любом случае, если не сработает beforeRouteUpdate, то watch $route точно сработает.
    Ответ написан
    Комментировать
  • Как совместить жизненные циклы vue.js и vue-router?

    mr_T
    @mr_T
    Web-разработчик
    Можно использовать такой или такой подходы.

    Можно попробовать вообще инициализировать роутер после проверки авторизации и, скажем, добавлять туда только форму авторизации по любому пути.

    Вообще, сам вариант "запустить компонент до того, как сработает роутер" неверен с точки зрения архитектуры. Роутер всего лишь подсовывает компонент по определённому пути, то есть до того, как роутер засунет компонент, в DOM нельзя выполнять код этого компонента. То есть посыл вашего вопроса неверен в корне, нужно решать проблему другим путём.
    Ответ написан
    Комментировать
  • Стоит ли использовать NodeJS с PostreSQL или все таки остаться на Yii2 + PostreSQL?

    mr_T
    @mr_T
    Web-разработчик
    Если вопрос именно в том, чтобы использовать PostgreSQL с нодой, то проблем никаких - есть sequelize, waterline и, думаю, еще много модулей для удобной работы с базой и ORM. По скорости выигрыш тоже будет скорее всего. Ну а в остальном слишком много "но" и "если", чтобы можно было однозначно сказать, стоит ли это делать или нет.
    Ответ написан
    Комментировать
  • Что лучше, написать собственный код для галереи или использовать уже существующие библиотеки?

    mr_T
    @mr_T
    Web-разработчик
    Можно ли сделать семантически-адаптивную и бла-бла-бля своими руками


    Можно, ибо разработчики существующих решений тоже делали это, очевидно, своими руками.

    но я хочу понять и научиться делать собственноручно


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

    Куда смотреть, статьи,книги,советы


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

    Еще хотел бы узнать нужна ли галерея для мобильных устройств?


    Ты бы пользовался галереей на своем мобильном устройстве? А целевая аудитория сайта? Только у нее есть ответ на вопрос.

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

    mr_T
    @mr_T
    Web-разработчик
    $('.container_bb').each(function(i, el) {
    setTimeout(function() { $(el).addClass('show'); }, i * 5000);
    });
    Ответ написан
  • Как при добавлении строки изменить атрибуты в DOM?

    mr_T
    @mr_T
    Web-разработчик
    Такого в ангуляре нет, можно только сделать как-то так:

    <div ng-hide='editMode'>{{content}}</div>
    <div ng-if='editMode' contenteditable>{{content}}</div>
    Ответ написан
    Комментировать
  • Как реализовать наследование DOM объекта в jQuery?

    mr_T
    @mr_T
    Web-разработчик
    Сделай просто функцию, которая возвращает созданный элемент DOM, в простейшем случае здесь и наследование в полном смысле слова не нужно. Что-то типа того:

    function Base() {
    	var el = $('<div></div>');
    	// ...
    	
    	return el;
    }
    
    function Sub() {
    	var el = Base();
    	// ...
    	
    	return el;
    }
    Ответ написан
  • Как передать большой JSON через $.ajax и не получить Request entity too large?

    mr_T
    @mr_T
    Web-разработчик
    Надо добавить processData: false, а тело запроса передать как строку. bodyParser.json() воспринимает все тело запроса как JSON документ, а не как данные формы.

    ajax.json({
    // ...
    processData: false,
    data: JSON.stringify(data)
    // ...
    });


    Ну и проблема Request entity too large как раз решается параметром limits, он и задает максимальный размер тела запроса.
    Ответ написан
    Комментировать
  • Можно ли вызвать функцию после события click?

    mr_T
    @mr_T
    Web-разработчик
    Можно на один и тот же элемент вешать много обработчиков одного и того же события, jQuery гарантирует их выполнение в том порядке, в котором обработчики задаются. То есть можно просто сделать так:

    $( "#target" )
        .click(function() {
            fun();
        })
        .click(function() {
            afterFun();
        });
    Ответ написан
    Комментировать
  • Как настроить gulp stylus url на определенный префиксный адрес?

    mr_T
    @mr_T
    Web-разработчик
    Попробуй сделать функцию, по аналогии с linear-gradient из nib (там снизу на странице)
    Ответ написан
    Комментировать
  • Ссылочный тип данных JavaScript?

    mr_T
    @mr_T
    Web-разработчик
    В первом случае ты передаешь в newArr указатель на массив, потом изменяешь этот же массив через указатель arr.
    Во втором случае ты снова передаешь указатель в переменную newArr, а потом просто присваиваешь переменной arr другое значение, то есть убираешь из нее указатель, но не затираешь само значение. Мало того - ты вручную вообще никак не затрешь значение любого объекта, ты можешь только "забыть" о нем, а уберет его за тебя уже либо сборщик мусора, либо просто вся выделенная память затрется при перезагрузке страницы.
    Ответ написан
    Комментировать
  • Как в nodejs возвращать ответ на AJAX запрос?

    mr_T
    @mr_T
    Web-разработчик
    Во-первых, в jQuery есть функция data и можно (и даже нужно) сократить код до $(this).parent().data('id').
    Во-вторых, урлом /get_comments?jsoncallback=? явно что-то не так, а именно второй знак вопроса.
    В-третьих, со слов документации по res.end() для Express:
    Use to quickly end the response without any data. If you need to respond with data, instead use methods such as res.send() and res.json().

    Хотя там и есть опциональный параметр data, лучше все равно написать res.json({data: 12}); хотя бы потому, что такая запись короче и веселее.
    Исходя из того, что есть в вопросе, о других ошибках сказать нельзя, поэтому если не поможет, то покажи еще код вызова express (банально, но вдруг ты, например, вызываешь express.get, хотя запрос идет post?)
    Ответ написан