React Day Berlin 2017
Холодным субботним днем провели в Берлине конференцию React Day Berlin 2017. Прошло все гладко – слушатели довольны. Только мне вот показалось, что мало супа было на обед.
Фотографии из твиттера за авторством разных людей.
Холодным субботним днем провели в Берлине конференцию React Day Berlin 2017. Прошло все гладко – слушатели довольны. Только мне вот показалось, что мало супа было на обед.
Фотографии из твиттера за авторством разных людей.
Бёрнаби, восточный пригород Ванкувера. Здесь на площади в 37 тысяч квадратных метров (5 футбольных полей) располагается одно из самых технологичных представительств Electronic Arts – компании, в видеоигры которой играют по всему миру.
Иногда сделать простые вещи очень непросто. Например, добавить условный комментарии для IE в html. Этим я сегодня и занимался.
В моем текущем проекте нам нужно было поддерживать css
медиа-запросы в IE9. Для этого было решено использовать библиотеку media-match.
Что может быть проще? Пара строк кода с условным комментарием:
<!--[if lte IE 9]>
<script src="/public/media.match.js">
<![endif]-->
Но все оказалось намного сложнее, так как мы используем React.js и делаем изоморфное одностраничное приложение. Кто бы знал, что React не рендерит на странице комментарии, помещенные в .jsx-файлы
. Показынный ниже способ не работает:
renderHead: function() {
return (
<head>
<!--[if lte IE 9]>
<script src="/public/media.match.js"/>
<![endif]-->
</head>
);
}
Единственный способ, который мне удалось найти – dangerouslySetInnerHTML
для head
, внутрь которого я поместил комментарий и все заработало:
renderHead: function() {
return (
<head dangerouslySetInnerHTML={{__html: '<!--[if lte IE 9]><script src="/public/media.match.js"></script><![endif]-->'}}>
</head>
);
}
Следует также отметить, что тэг script
должен быть закрыт отдельно <script></script>
, так как сокращение <script />
не работает в React.
Последняя, но, при этом, большая проблема – если надо поместить несколько таких комментариев в head
. Конечно, можно все просто написать в одну строку, но это выглядит «убого».
Поэтому я, да простят меня парсерсы HTML в браузерах, положил условные комментарии внутри тэга meta
:
renderHead() {
return (
var comment = '<!--[if lte IE 9]><script src="/public/media.match.js"></script><![endif]-->';
<head>
<title>Website title</title>
<meta name="react-comment-hack"
dangerouslySetInnerHTML={{__html: comment}}>
</meta>
</head>
);
}
Успешного «реакта».
© Автор Maks Nemisj
В 2007 году Apple представила первый iPhone. Осенью 2008 вышел iPhone 3G. В течение года между двумя первыми яблочными смартфонами Google упорно разрабатывала свою мобильную операционную систему и в сентябре все того же 2008-го показала миру первый коммерческий телефон на Android 1.5 – HTC Dream (у нас почему-то называется везде HTC G1). Телефон даже по тем временам получился не самый удачный, да и операционная система была сырой и работала не очень стабильно.
3.3 тыс.
3 тыс.
2.7 тыс.
3.4 тыс.