Upload
andrew-gumenniy
View
309
Download
3
Embed Size (px)
Citation preview
О проекте● Более 500 сайтов на одном движке и базе● Более 100 разработчиков● Более 20 локаций● Более 3,5 миллионов посетителей● Более 300 основных устройств
Преимущества multisite● Проще обслуживание инфраструктуры● Меньше дублирования кода● Проще поддерживать, если нужно
добавить один функционал на множество сайтов
● Одна база и серверсайд, нет проблем обмена данными между сайтами
Бизнес задачиМножество возможностей для маркетинга● для разных регионов
○ региональные новостные сайты с одной базой● для разных групп товаров
○ отдельный сайт как магазин игрушек● для разных социальных групп
○ отдельный сайт с дешевыми и не очень качественными товарами
Config сайтов
garnet.comtheme: theme1.theme2
country: Spaine
color: red
juice: true
orange.comtheme: theme1.theme3
country: USA
color: orange
juice: true
apple.comtheme: theme1
country: Ukraine
color: green
juice: true
Структура
● theme1○ _default○ _mobSite○ _webSite○ theme2
■ _default■ _mobSite■ _webSite
○ theme3■ _default■ _mobSite■ theme4
● _mobSite● _webSite1
2
35
m.site.com
Тема:theme1.theme3.theme4
Подключаем test.js4
Компонентыtheme1/_mobSite/components
● component1○ views○ models○ templates○ styles
● component2● component3
Подгрузка ресурсов- k: environment: mobSite theme: theme1 v: package1: - component1 - component2 package2: - component3
Resources.load('package1', function() {
var model1 = new Component1Model();
var model2 = new Component2Model();
....
});
Resources.load('package2', function() {
var model3 = new Component3Model();
....
});
Сборка less● Если стили компонента перекрыты, то
они снова компилятся, иначе будут взяты из верхней темы
● Повторная компиляция в окружении темы при использовании сторонних миксинов или переменных
Сборка спрайтовgrunt.initConfig({
...
sprite: _.object(_.map(grunt.lib.Config.get('_themes'), function(theme, themeName) {
return [themeName, {
src: theme.themeDir + '/images/sprite/*.png',
dest: theme.themeDir + '/images/sprite-images.png',
destCss: theme.themeDir + '/styles/sprite.less',
padding: 2,
cssTemplate: 'spritesmith-template.mustache'
}];
}))
});
Длительностью деплояПолный деплой занимает около 30 минут.
● Компиляция Jade и Less только для одной темы
● Компиляция ресурсов для одной темы иерархически
● Less компилируются только там, где это нужно
Тестирование● Автотестирование● Точечное мануальное тестирование● Legacy● Правильна структура шаблонов
Git● Избегать конфигов, которые могут
конфликтить● Группировать функционал в отдельные
модули и репозитории● Автоматическая чистка старых веток