• Готовим Sublime Text 2 для front-end
    0
    LiveReload for Sublime Text 2 рабочий
    1. Ставим через Package Control — LiveReload
    2. Ставим расширение версии 2.0.8 на свой браузер

    проверенно на FF 15 и Chrome 22 работает.
  • Подводные камни JavaScript
    +11
    Для получения того самого типа — внутреннего свойства [[Class]] можно использовать особенность работы Object.prototype.toString и написать вот такой код
    var allowedTypes = ["Object", "Undefined", "Null", "Boolean", "Number", "String"];
    /**
     * @param {Mixed} x
     *
     * @return {String}
     */
    function Type(x) {
        var type = Object.prototype.toString.call(x).replace(/^\[object\s|\]$/g, '');
        return ~allowedTypes.indexOf(type) && type || "Object";
    }
    

    Еще есть интересная особенность оператора new — он не может вызвать функцию у которой нет свойства prototype — все нативные функции и функции () => из ES6
    new Array.prototype.slice
    // TypeError: Array.prototype.slice is not a constructor
    
    // VS
    
    var A = function () {};
    
    Object.getOwnPropertyDescriptor(A, "prototype");
    // {"configurable":false,"enumerable":false,"value":{},"writable":true}
    
    // Убить prototype у пользовательской функции нельзя
    delete A.prototype; // false - "configurable":false
    
    new A(); // ok
    
  • Изучение Node.js от начала до конца на практике. Часть 1
    +2
    По моим подсчётам он остаёт от всех остальных. Я тестирую не в браузере, а в node.js.

    Вот код бенчмарка: https://github.com/baryshev/template-benchmark.

    А вот результаты на моей виртуалке с Ubuntu 12.04 и Node.js 0.8.9:

    Rendering 100000 templates:
    
    ECT
      Escaped   : 559ms
      Unescaped : 134ms
      Total     : 693ms
    
    Eco
      Escaped   : 2625ms
      Unescaped : 491ms
      Total     : 3116ms
    
    EJS
      Escaped   : 4621ms
      Unescaped : 2786ms
      Total     : 7407ms
    
    Handlebars.js
      Escaped   : 521ms
      Unescaped : 275ms
      Total     : 796ms
    
    Hogan.js
      Escaped   : 889ms
      Unescaped : 720ms
      Total     : 1609ms
    
    Swig
      Escaped   : 2052ms
      Unescaped : 369ms
      Total     : 2421ms
    
    Dust
      Escaped   : 553ms
      Unescaped : 363ms
      Total     : 916ms
    
    doT
      Escaped   : 1699ms
      Unescaped : 100ms
      Total     : 1799ms
    
    Fest
      Escaped   : 418ms
      Unescaped : 202ms
      Total     : 620ms
    
    Jade without `with`
      Escaped   : 4134ms
      Unescaped : 3255ms
      Total     : 7389ms
    
    Jade
      Escaped   : 13495ms
      Unescaped : 12210ms
      Total     : 25705ms
    


    Такие вещи предпочитаю перепроверять. Кстати, шаблон doT по Вашей ссылке вообще не валиден. Это можно проверить, вставив его и данные в демо-редактор на сайте разработчика. Даже если бы он был валиден, такое сравнение не приемлемо, т.к. в doT по умолчанию отключено экранирование данных, а во всех остальных оно по умолчанию включено. Отсюда его «хвалёная» скорость. Экранирование — самая тяжёлая операция для js-шаблонизаторов и использовать её стоит с умом. Не стоит экранировать все данные подряд.
    В своём тесте я сравниваю для всех шаблонизаторов скорость с экранированием и без неё.