• Node js, Как правильно подключить скрипты, картинки и др?

    Проблема в том, что текущая реализация вашего сервера не предусматривает отдачу статических ресурсов (изображений, скриптов и т.п.). Единственный запрос на который может отвечать ваш сервер описан в этом рауте (строки 7-9):

    app.get('/', function(req, res) {
        res.end(index);
    });

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

    Модуль express расширяет функционал модуля connect, у которого есть middleware-обработчик 'static', позволяющий задать путь по которому ваш сервер будет отдавать статические ресурсы.
    Если ресурсы расположены в папке "public", то middleware можно подключить следующей строкой кода:

    app.use(express.static(__dirname + '/public');
    При использовании middleware-обработчиков следует понимать, что они выполняются в том же порядке, в котором они прописываются в коде. Кадый middleware может выполнить один из трёх сценариев:
    1. Прервать цепочку middleware-обработчиков, ответив на запрос пользователя.
    2. Преобразовать объект response и/или request и продолжить выполнение цепочки midleware-обработчиков .
    3. Ничего не делать (просто передать управление следующему middleware)
    Учитывая, что static выполняет первый либо третий сценарии, скорее всего, будет правильно поместить middleware static в начало цепочки, чтобы сразу исключить выполнение последующих middleware, если клиент запрашивает статику.
    Документация по middleware static:
    www.senchalabs.org/connect/static.html
    Ответ написан
    Комментировать
  • Javascript try..catch?

    Как в случае браузерного, так и в случае серверного Javascript конструкция try/catch используется для отлова исключений в синхронных операциях (пример: десериализация JSON-данных или валидация данных которые ввёл пользователь). Если требуется обрабатывать ошибки в асинхронных операциях, то ошибка либо передается в callback-функцию (В Node.js общепринятым шаблоном вызова callback-функции является вызов вида callback(err, results), где лишь один из аргументов может принимать значения отличные от null.), либо в более сложных случаях генерируется событие 'error' объекта класса EventEmitter.

    В Node.js try/catch используется очень редко (в основном только при парсинге JSON-данных), это объясняется тем что большинство операций в Node.js асинхронны, как правило ошибку передают в callback-функцию или генерируют событие "error" у объекта класса EventEmitter.

    Вот пример иллюстрирующий, что try/catch не отловит исключение возникшее при выполнении асинхронной операции:

    function myApiFunc(callback)
    {
      /*
       * Пример некорректного перехвата исключений
       * в асинхронных операциях
       */
      try {
        doSomeAsynchronousOperation(function (err) {
          if (err)
            throw (err);
        });
      } catch (ex) {
        callback(ex);
      }
    }

    Дело в том, что исключение бросается и, соответственно , должно ловиться в том контексте, в котором вызывается функция. В данном примере try/catch и вызов функции бросающей исключение выполнятся в разных контекстах в силу асинхронности функции doSomeAsynchronousOperation.
    Ответ написан
    Комментировать
  • Twitter API — результат поиска по хештегу «top tweets» для твиттер-виджета?

    Используйте Twitter REST API search/tweets.
    В Вашем случае запрос будет выглядеть так:

    https://api.twitter.com/1.1/search/tweets.json?q=top%20tweets&result_type=popular&count=10

    (вернёт 10 твитов)
    Ответ написан
    Комментировать
  • Как узнать количество поделившихся twitter facebook и google+?

    Ищите ответ в документации к API соответствующей социальной сети.
    В Twitter API у каждого объекта Tweets есть поле retweet_count которое хранит число ретвитов.
    Ответ написан
    1 комментарий