• Что посоветуете новичку в node.js?

    ImLoaD
    @ImLoaD
    Программист
    По своему опыту скажу - задался в 15 году вопросом изучения Node, сначала прочитал nodebeginner, потом кучу статей и видео. Написал простой сервер, прикинул что к чему и взялся за фреймворки.
    Начал использовать express, и смотрел в сторону koa.
    Нововведения EcmaScript2015 практически не использовал.
    Потом взялся за Sails JS, и до сих пор его активно использую!
    В настоящий момент вся разработка перешла на фронтенд в связи с использованием angular, с бэкендом наигрался, понравилось, остановился на Sails, будет время - попробую другие.
    1. Sails JS (немного предвзято)
    2. Используй Promise, async, ну и во многих случаев прекрасно можно обойтись коллбэками =)
    3. Подключай фишки ES6 уже по ходу разработки, экспериментировать никто не запрещал, правил нет =)

    Удачи
    Ответ написан
    Комментировать
  • Что делать, если запутался в css?

    @devstudent
    frontend-developer
    изучать на практике, полное понимание придет со временем. не паникуйте )) работайте, делайте ошибки и успехи, другого пути нет
    Ответ написан
    Комментировать
  • Что делать, если запутался в css?

    Elwen
    @Elwen
    1) Адаптивная - это, грубо говоря, фиксированная верстка, которая использует медиа запросы для того, что бы подстроится под устройство просмотра. Отзывчивая - это резиновая верстка с использованием тех же медиа запросов для того же. В свое время именно такое объяснение показалось мне самым простым и понятным. Но большинство заказчиков все равно воспринимает это как одно и тоже, так что объяснять будет дольше.
    Есть замечательный сайт liquidapsive.com, который очень наглядно показывает разницу между разными типами верстки (адаптивная, отзывчивая, фиксированная и резиновая) на примере одного макета. К нему же есть отличная статья на frontender.info, где довольно доходчиво рассказано о разных подходах, их плюсах и минусах.
    2) Как бы то ни было, это все же зависит от проекта. Резиновая верстка отлично подходит для большинства сайтов, но есть проекты, где целесообразней все же сделать отдельно мобильную версию. Например, соц. сети.
    3) Нет.
    4) К сожалению, есть много вопросов относительно возможностей и развития css.
    5) Единственного верного способа решить поставленную задачу в программировании нет. В большинстве случаев есть несколько способов. Бывает что одно решение выигрывает по тем или иным параметрам у другого. И каждый программист иногда чувствует, что его творение больше походит на монстра, чем на чистый код. Это вовсе не означает, что это так (хотя случается и такое, чего таить). В любом случае, взглянув на свой код, который сейчас вам кажется хорошим, через несколько лет, скорее всего, вы схватитесь за голову) Стремитесь совершенствоваться, но не зацикливайтесь на этом.
    Ответ написан
    2 комментария
  • Что делать, если запутался в css?

    zooks
    @zooks
    Frontend
    1. Одно и то же
    2. Адаптивная
    3. Нет
    4. Потому что Flexbox рулит, а float создан для обтекания элемента текстом.
    Ответ написан
    Комментировать
  • Возможно ли подгрузить данные на сайт с помощью JS без PHP?

    Ivanq
    @Ivanq
    Знаю php, js, html, css
    Можно, через AJAX. Если не знаете, что это такое, давайте поговорим
    Ответ написан
    Комментировать
  • Нормально ли делать всю страницу сайта в position absolute?

    In4in
    @In4in
    °•× JavaScript Developer ^_^ ו°
    CSS - это магия грамотного расположения и внешнего вида элементов на странице , а не банальное указание координат для них. Каждую способность этой магии нужно использовать в определенных ситуациях, а не пихать всюду одно и то же.

    Да, построение контента с помощью position:absolute кажется проще - "поставил два числа и элемент там, где нужно, ыыыы...", но именно то, что кажется гораздо сложнее в итоге может быть самым элементарным и удобным решением вашей задачи.

    Чем же он хуже relative?

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

    Да и вообще, глупо сравнивать relative и absolute - это сооовершенно разные вещи. <-- Тык

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

    Absolute - отделяет элемент от остального мира, устанавливает ему заданные координаты, отсчет которых начинается с верхнего левого угла ближайшего родителя с position:relative|absolute|fixed.
    ------------------------------------------

    -

    Конечно кто то скажет что можно использовать float left, и float right,

    А это тут причем?

    Приходится делать частые@media screen and (max-width), которых намного больше чем пришлось бы делать для div-a с абсолютными ззначениями.

    А без абсолютных еще меньше :\

    Итог
    -----------------------------------------
    Я не в коем случае не заявляю, что absolute - это зло.. Использовать его нужно, но только там, где он востребован. Но вы же все равно будете его всюду совать, да? :)
    Ответ написан
    4 комментария
  • В чем может быть проблема с массивом javascript?

    In4in
    @In4in
    °•× JavaScript Developer ^_^ ו°
    В куки можно хранить только простые типы.

    Преобразуйте массив в JSON:

    //Запись
    items = [
       {"cid":"345498", "q":1, "tq":3, "im":"5802177", "imf":"444444444", "ie":"true", "iprt":11393, "ipr":11393},
       {"cid":"345476", "q":1, "tq":2," im":"9905000", "imf":"33333", "ie":"true", "iprt":14554, "ipr":14554}
    ];
    $.cookie("arr", JSON.stringify(items));


    //Чтение
    var arr = JSON.parse($.cookie("arr"));
    alert(arr[0].cid);
    Ответ написан
    2 комментария
  • Как лучше, отдельный файл или тег script?

    orlov0562
    @orlov0562
    I'm cool!
    Зависит от задачи. Если этот JS надо выполнить до загрузки остальных скриптов и элементов (например нужно создать для старых версий IE, какие-то html5 элементы), либо если скрипт совсем маленький, тогда лучше в head. Если это нечто большое и страница спокойно может отобразиться (не путать с работоспособностью) без этого скрипта, тогда в отдельный файл и загружать этот файл вконце документа перед тегом </body>
    Ответ написан
    Комментировать
  • Как разобрать url при помощи регулярного выражения?

    @run100500
    Можно использовать свойства элемента <a>
    var parser = document.createElement('a');
    parser.href = "http://example.com:3000/pathname/?search=test#hash";
    
    parser.protocol; // => "http:"
    parser.hostname; // => "example.com"
    parser.port;     // => "3000"
    parser.pathname; // => "/pathname/"
    parser.search;   // => "?search=test"
    parser.hash;     // => "#hash"
    parser.host;     // => "example.com:3000"

    Источник
    Ответ написан
    3 комментария
  • Почему не все серверы пишутся на Node js?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    1. Принципиальных качественных преимуществ у node.js перед остальными языками нет, как впрочем и недостатков. Просто yet another язык со своими особенностями. Соответственно если в вопросе заменить node.js на php/ruby/python итд - ничего не изменится.
    Вопрос по сути абстрактный "почему все не перешли на язык %%%%%"

    2. Ответ на абстрактный вопрос:
    а) Потому что существует огромное количество legacy кода который нужно поддерживать. Работы по поддержке и развитию существующего кода на порядок больше чем написания с нуля нового
    б) Потому что у разработчиков есть свой стек любимых технологий, изменять который без явных экономических причин основная масса не готова
    в) Потому что умные технические менеджеры выбирают стек технологий проекта исходя из имеющихся под рукой разработчиков и легкости поиска и заменимости оных.

    UPD
    hbrmdc
    У NodeJS есть уникальные и очень весомые преимущества, которых нет ни у одного другого языка. Например то, что это JS, и, следовательно, нет необходимости разучивать лишние языки - можно весь webapp писать на js.
    Личные предпочтения обоснованные привычками - это не имеющий значения аргумент в данном вопросе.

    1) Есть отличия, да. Только не те о которых Вы пишите. То что это "JS" вообще ни на что не влияет.
    JS хорошо знают фронтендщики - а кто пустит фронтэндщика к внутренней архитектуре? Там подход совершенно другой нужен, другие навыки, другое понимание как это все работает. Просто пересадить человека с фронта на бек - нельзя.

    На самом деле основные отличия другие:
    Постоянно живущий процесс, фактическая однопоточность. В зависимости от задачи - это может быть и плюсом и минусом. Условно для какого нибудь сокет-сервера - плюс (активно используем на живых проектах). Для middleware - я бы подумал. Для нагруженного сервиса с расчетами - точно нет.

    2) Личные предпочтения обоснованные привычками это основной аргумент.
    Я вот умею в php, умею в ноду, умею в еще десяток умных слов.
    Мне нужна новая команда на новый проект.
    Я открываю hh и что я вижу: node.js 279 резюме из которых половина фронтэндщики.
    PHP - 9613 резюме. Даже если 90% разработчиков PHP на hh - уроды которых к коду нельзя подпускать на пушечный выстрел - останется все равно в 3 раза больше чем есть node.js.
    Собственно на этом выбор и закончен.

    На малопопулярных языках пишут в случаях:
    a) это мелкий сервис с неявными перспективами который можно переписать за неделю
    б) это проект "для души" разработчика.

    Получается замкнутый круг на самом деле.
    Менеджер смотрит резюме, резюме на node.js нет =>
    Менеджер не начнет проект на node.js =>
    Не возникнет вакансия на node.js =>
    Разработчик анализируя вакансии не увидит вакансий на node.js =>
    Разработчик будет учить что то другое =>
    Менеджер смотрит резюме, резюме на node.js нет...

    Переломить ситуацию могут только очень крупные игроки обладающие возможностями формирования рынка (например Apple и Swift), и то не со 100% гарантией (samsung&c и Tizen)
    Ответ написан
    13 комментариев
  • Почему постоянно лезет undefined?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    На сколько я поля это фишка асинхронности !?
    Правильно поняли.

    Это получается нужно код выстраивать цепочкой из калбэков ?
    Необязательно. (для nodejs, понятно, своя специфика, но общие принципы такие же, естественно).
    Ответ написан
    Комментировать
  • Как распарсить FormData запрос в nodejs?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js
    Когда парсать MIME, а это формат не простой, то не будет в том греха, есливозьмете модуль https://www.npmjs.com/package/multiparty и будете его применять, только если content-type точно содержит MIME
    var contentType = req.headers['content-type'];
    if (contentType && contentType.indexOf('multipart') === 0) {
      var form = multiparty.Form();
      form.parse(req, function(err, fields, files) {
        if (!err) {
          // тут имеем files
        }
      });
    }

    Благословенны пишущие без Expressa
    Ответ написан
    1 комментарий
  • Как понять что response.write закончен?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js
    // после res.on('data') вставляем еще обработчик:
    res.on('end', function() {
      response.end();
    });
    Ответ написан
    1 комментарий
  • Какие библиотеки использовать для высоконагруженного приложения в Node.js?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js
    Общий совет, использовать как можно меньше сторонних библиотек и писать все на нодовских родных, чтобы проект не превратился в зоопарк всего чего только можно. Особенно советую не использовать принцип middleware и все, что на нем основано. Так же важно максимально использовать оперативную память, снизить необходимость ввода/вывода (минимизировать доступ к базе и файлам). И постараться писать все аккуратно и экономно, без утечек и лишних операций. Подробнее посоветовать невозможно, ведь Вы даже не намекнули, что хотите сделать, это будет высоконагруженное API или высоконагруженный сервер вебсокетов или высоконагруженный сервис для агрегации твитов, например, да что угодно.
    Ответ написан
  • Как правильно написать кастомный асинхронный модуль на NodeJS?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js
    Так можно же посмотреть, как написан тот же модуль fs: https://github.com/joyent/node/blob/master/lib/fs.js
    Как писать асинхронные функции Вы нашли, код нормальный, а вот асинхронный модуль - это нонсенс, вот модуль fs синхронный или асинхронный? Ведь в нем есть fs.readFile и fs.readFileSync. Модуль может содержать и синхронный и асинхронный код, вообще в ноде асинхронно решается обычно только ввод-вывод: работа с файлами, сетью, базой данных. Весь остальной код остается синхронным. Чувствуется, что Вы еще не полностью освоили ноду, а уже хотите делать свои модули. Рекомендую Вам перед этим почитать исходники хороших модулей, например, вот этих небольших и хорошо написанных:
    https://www.npmjs.com/package/mkdirp
    https://www.npmjs.com/package/ncp
    https://www.npmjs.com/package/colors
    Советую пройти nodeschool.io/ru и потренироваться в использовании модулей, а потом уже делать свои. Еще обязательно освойте библиотеку async: https://github.com/caolan/async и посмотрите что такое EventEmitter https://nodejs.org/api/events.html Ну и конечно читайте исходники ноды и других модулей. Статей же нагуглить или на Хабре нарыть - не должно быть проблемой.
    Ответ написан
    2 комментария
  • Как правильно написать кастомный асинхронный модуль на NodeJS?

    @tex0
    gMyModule.prototype.DoSomething = function(variable, callback)
    {
    	process.nextTick(function(){
    		/*
    			основной алгоритм, использующий variable
    		*/
    		callback(result, error);// результат работы алгоритма (либо всё ОК, либо ошибка)
    	});
    }
    
    module.exports.MyModule = gMyModule;


    вроде как-то так.
    Ответ написан
    7 комментариев
  • Как избавиться от нескольких сообщений, после переподключения к webSockets?

    Sanasol
    @Sanasol Куратор тега JavaScript
    нельзя просто так взять и загуглить ошибку
    не биндить события внутри подключения.

    при реконнекте срабатывает connect событие и снова все socket.onы биндятся.

    В итоге сколько реконнектов столько и дублей
    Ответ написан
    Комментировать
  • Логика работы с MongoDB в сервере на Node.JS?

    @napa3um
    При инициализации приложения однократно подключайся к базе данных с помощью MongoClient. Объект MongoClient создаёт пул соединений к БД, и сам восстановит соединение в случае разрыва. Также при инициализации рекомендую получить все необходимые коллекции для дальнейшей работы с ними, т.к. помимо оверхеда на создание JS-объектов в режиме strict получение коллекции вызывает проверку существования коллекции в базе данных. При этом закэшированные объекты коллекций будут использовать вышеописанные преимущества объекта MongoClient - пул соединений и переподключение в случае разрыва. Самостоятельно закрывать соединения не нужно, контекста и блокировок у соединения нет. Т.е., логика примерно такая (очень условно, без учёта архитектуры приложения):
    // init db:
    MongoClient.connect('mongodb://localhost:27017/dbName', function(err, db){
        cached.db = db;
        // init collection:
        db.collection('collName', { strict: true }, function(err, coll){
            cached.coll = coll;
        });
    });
    // usage in request:
    cached.coll.insert(...);
    Ответ написан
    Комментировать