• Где найти реальный пример Front-end проекта с использованием Grunt.js, bower, Bootstrap и LESS?

    Rainum
    @Rainum
    Ни в коем случае не претендую на пример современного "Front-end workflow", но мой небольшой TODO app (это тестовое задание) как раз реализован с использованием Grunt + Bower + NPM для package management и scaffolding, node + Express..js для бекэнда и Angular + SASS для фронтенда.

    Конечно он не совсем соответствует заданным критериям, но в целом концепция та же, так что допилить это до Ваших нужд не составит большого труда.

    Форкайте и используйте на здоровье :)

    https://github.com/rainum/test-todo-app
    Ответ написан
    Комментировать
  • Как сделать массив в option на angular.js?

    Rainum
    @Rainum
    Вопрос ясен, код примера не очень. Зачем объект с индексом для года? Не проще ли в value для option хранить год, а не его индекс?

    У меня получился следующий код:

    Контроллер:

    function listYears(startYear) {
      var currentYear = new Date().getFullYear();
      var years = [];
      startYear = startYear || 1980;
    
      while (startYear <= currentYear) {
        years.push(startYear++);
      }
    
      return years;
    }
    
    $scope.years = listYears(1950);


    Шаблон:

    <select>
      <option ng-repeat="year in years" value="{{ $index }}">{{ year }}</option>
    </select>
    Ответ написан
    Комментировать
  • Конфигурирование Livereload для grunt-проекта

    Rainum
    @Rainum
    Все вы делаете так, но watch-таск делает очень много лишней работы. У вас он смотрит на директорию с исходниками и при изменении любого файла, запускает все таски, а не один нужный.

    Для начала вам стоит разбить watch на таргеты для независимой компиляции разных типов файлов. Также у меня есть сомнения по поводу необходимости указывать таргет files у самого livereload - уберите его. Вот пример моего таска с livereload:

    watch: {
      options: {
        livereload: true
      },
      gruntfile: {
        files: ['Gruntfile.js'],
        tasks: ['build:dev']
      },
      js: {
        files: '<%= path.assets %>/javascripts/{,**/}*.js',
        tasks: 'concat'
      },
      compass: {
        files: '<%= path.assets %>/stylesheets/{,**/}*.{scss,sass}',
        tasks: ['compass:dev', 'autoprefixer']
      },
      jade: {
        files: '<%= path.assets %>/views/{,**/}*.jade',
        tasks: ['jade:dev']
      }
    }


    Также не забудьте вставить скрипт для livereload в свой html:

    <script src="//localhost:35729/livereload.js"></script>
    Ответ написан
    1 комментарий
  • Как правильно оформить js скрипт?

    Rainum
    @Rainum
    Если вопрос на счет форматирования, лучше делать так (убрал лишнее объявление переменных):

    var aa = document.getElementById('qwe');
    var cc = document.getElementById('vce');
    
    aa.onmouseover = function () {
      cc.style.display = 'block';
    };
    
    aa.onmouseout = function () {
      cc.style.display = 'none';
    };
    Ответ написан
    6 комментариев
  • Почему обрезается текст в input type="text" в ie10?

    Rainum
    @Rainum
    Соглашусь с @aen, увеличьте высоту строки как-то так font: 400 22px/1 'Open Sans', sans-serif;
    Ответ написан
    Комментировать