Как стать автором
Обновить
15
Карма
0
Рейтинг
Артём Курбатов @tenorok

Пользователь

  • Подписчики 5
  • Подписки 1

Отслеживаем состояние своего портфеля у брокера «Тинькофф Инвестиции» через Google Таблицы

Есть такой misterbuffett.ru — обновляет котировки в гугл-таблице по расписанию и отправляет сообщения с результатами.

Делать ли мобильную версию? 5 распространенных проблем, которые решает адаптивная верстка. Опыт Яндекса

Старые версии IE были главным препятствием в использовании пикселей, поскольку те браузеры не позволяли пользователям нормально менять масштаб страницы. Современные браузеры отлично справляются с масштабированием страницы, свёрстанной в любых единицах размеров.

CSS — это высокоуровневый язык, где мы работаем с логическими пикселями, что гарантирует предсказуемость указываемых размеров на экранах с любой плотностью физических пикселей. Суть хорошо видна на иллюстрации:
image

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

Делать ли мобильную версию? 5 распространенных проблем, которые решает адаптивная верстка. Опыт Яндекса

Упоминание эмулятора важно для читателей, которые могут не знать о доступном способе проверки вёрстки под произвольные размеры окна браузера.
Действительно, эмуляция существует уже давно и в статье приведён скриншот Яндекс.Браузера, но подразумевается, что аналогичный эмулятор есть во всех браузерах, реализация которых базируется на Chromium. Конечно, аналогичные эмуляторы есть и в других браузерах, например в Firefox.

Делать ли мобильную версию? 5 распространенных проблем, которые решает адаптивная верстка. Опыт Яндекса

Большинство задач адаптивной вёрстки решаются достаточно простыми легковесными техниками, овладение которыми будет ценным навыком для любого разработчика интерфейсов. Несмотря на это, существует большое количество инструментов, привносящих универсальные конструкции для облегчения рутины команды из нескольких разработчиков. Кажется, что упоминание таких инструментов полезно для полноты статьи.

Делать ли мобильную версию? 5 распространенных проблем, которые решает адаптивная верстка. Опыт Яндекса

Дело в том, что эти термины имеют достаточно размытое понятие.
Вы, вероятно, подразумеваете доступность интерфейса в зависимости от технических возможностей браузера. Здесь же речь идёт о наборе интерфейсных возможностей, которые могут быть доступны в зависимости от размеров экрана устройства.
Грубо говоря, на большом экране настольного компьютера может уместиться значительно больше кнопок, нежели в мобильном телефоне.

Масштабирование наоборот: БЭМ-методология Яндекса на небольших проектах

Для простой сборки БЭМ-проекта можете попробовать grunt-bemaker.

Definer.js — простая модульная система

Да, сейчас я понял чего вы хотите.
Для этого действительно лучше использовать какую-то реализацию CommonJS.
Definer задуман для другого применения.

Definer.js — простая модульная система

У разработчика, использующего скачанную библиотеку нет оригинальных исходников.

Definer.js — простая модульная система

Смысл не в байтах, а в читаемости финального кода и максимальной приближенности к оригиналу.

Definer.js — простая модульная система

Это же абстрактный пример. К тому же использование browserify сводится к тому же самому.
Сборка указанного модуля приведёт к получению файла, содержащего все модули, необходимые для его работы. Если надо собрать несколько модулей, то можно make module1 module2 ... moduleN.

Definer.js — простая модульная система

Какая вам разница, какая система модулей используется в проекте, если вы можете собрать необходимый модуль командой make modulename?

Спросите у разработчиков jQuery, зачем они вырезают из собранного файла всё про RequireJS.

Definer.js — простая модульная система

Думаю, что подавляющее большинство разработчиков не собирает библиотеки по частям, а просто скачивают собранный файл в один клик.

Но если хочется кастомно собрать проект из необходимых модулей, то с помощью definer можно сделать и это. А какую команду для сборки вы будете использовать, уже не так важно, хоть grunt, хоть make, или npm run-script и так далее.

Definer.js — простая модульная система

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

Definer.js — простая модульная система

Возьмём три простых модуля и сравним.

Definer.

Модули:
definer('a', function() { return 'a'; });
definer('b', function() { return 'b'; });
definer('c', function(a, b) { return a + b + 'c'; });


Собранный файл (206 символов):
(function(global, undefined) {
var a = (function () { return 'a'; }).call(global),
b = (function () { return 'b'; }).call(global),
c = (function (a, b) { return a + b + 'c'; }).call(global, a, b);
})(this);


Browserify.

Модули:
module.exports = function() { return 'a'; };
module.exports = function() { return 'b'; };
module.exports = function() { return require('./a') + require('./b') + 'c'; }


Собранный файл (828 символов):
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
module.exports = function() { return 'a'; };
},{}],2:[function(require,module,exports){
module.exports = function() { return 'b'; };
},{}],"XGSqeA":[function(require,module,exports){
module.exports = function() { return require('./a') + require('./b') + 'c'; }
},{"./a":1,"./b":2}],"./c.js":[function(require,module,exports){
module.exports=require('XGSqeA');
},{}]},{},[])


Очевидно, файл, собранный с помощью definer работает быстрее и его проще отлаживать.

Definer.js — простая модульная система

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

Definer.js — простая модульная система

Об этом я как-то не подумал.
Хорошая идея, но при этом надо обдумывать детали.

Definer.js — простая модульная система

Нет, definer вам не подойдёт.
Он всегда конкатенирует модули в один файл и не работает с HTML.

Definer.js — простая модульная система

1) Эта ошибка описана для ясности, в жизни же не предполагается такое использование системы, а зависимости нормально разрешаются при сборке.

2) В девелопменте с помощью грант-плагина можно автоматизировать сборку и добавить минификацию с помощью grunt-contrib-uglify, например.

Мне definer нужен в первую очередь для того, чтобы писать инструменты с разбивкой по модулям и автоматически собирать единый файл без модулей, который легко сможет использовать кто-то другой.

Definer.js — простая модульная система

Да, я видел Мишину систему, но мне она показалась сложной и я решил ради интереса сделать совсем примитивную.

Definer.js — простая модульная система

Согласен, но мой английский пока не позволяет нормально писать.
Если пришлёте пулреквест с документацией на английском — буду сильно благодарен :)

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Работает в
Дата рождения
Зарегистрирован
Активность