Приветствую!
О чём же я буду писать. Да в общем ни о чём. Даже не советую читать.
Как я потратил несколько недель на создание своего framework, как я его внедрял в проекты и как теперь с этим приходится бороться.
Пару лет назад клиентские html 5 приложения в моей работе стали становиться всё сложнее и сложнее. Тогда я, как старший инженер, но крайне не опытный, стал придумывать свои велосипеды.
Велосипеды были разные, от уродливых:
До совсем сахарных:
И где-то полтора года назад у меня выдалась неделька отдыха в больнице с отсутствием интернета и большим количеством свободного времени. И я написал идеальный для себя framework. О, умел он многое! Выглядел он вот так:
В общем было удобно и приятно этим пользоваться. Это прекрасно работало вместе с backbone и теоретически, с любыми другими frameworkами.
И ряд проектов был создан на такой структуре, в том числе и проект со сложными моделями в тысячи строчек кода.
А время шло. Современность диктует совсем другую структуру проектов.
И вот наступил тот день, когда мне это аукнулось. То большое приложение нуждается в новой версии.
И тут я вижу 2 решения:
Выбор естественно упал на 2 вариант, что и было быстренько сделано. От былой роскоши осталось только создание модуля, выглядит теперь это вот так:
Если вдруг интересно попробовать, то вот репка
И тут полагается вывод, а он такой. Перед созданием чего-либо нового и крайне нужного для себя, стоит подумать как минимум о 2 вещах. Есть ли силы и возможности для дальнейшей поддержки и что самое главное продвижения своего решения. Второе и самое главное, html 5 платформа нуждается в стандартах как никто другой. А вот как к этому подойти, вопрос совсем другой и видимо самый сложный.
Если так получилось, и Вы это читаете, то мне бы было интересно узнать, как вы себе представляете возможность стандартизировать разработку на html 5?
О чём же я буду писать. Да в общем ни о чём. Даже не советую читать.
Как я потратил несколько недель на создание своего framework, как я его внедрял в проекты и как теперь с этим приходится бороться.
Вводная
Пару лет назад клиентские html 5 приложения в моей работе стали становиться всё сложнее и сложнее. Тогда я, как старший инженер, но крайне не опытный, стал придумывать свои велосипеды.
Велосипеды были разные, от уродливых:
function ClassName() {
function ClassName() {
}
ClassName.prototype.method1 = function(){};
return ClassName;
}
До совсем сахарных:
class ClassName {
private function method() {
}
}
К делу
И где-то полтора года назад у меня выдалась неделька отдыха в больнице с отсутствием интернета и большим количеством свободного времени. И я написал идеальный для себя framework. О, умел он многое! Выглядел он вот так:
namespace('name.space.with.any.depth', {
require: [
//Все зависимости подгружаются автоматом и соответствуют файловой структуре.
'name.space.Test',
'name.space.Test2'
],
Test3: { extend: [name.space.Test, 'name.space.Test2']
//Все статические свойства и методы описываются тут.
our: {
staticProp1: 1
},
prop2: 2,
//По названию конструктора, которое соответствует имени сущности, мы понимаем, что описываем её в формате the.js.
Test3: function() {
console.log('Привет я конструктор');
console.log(this.our.staticProp1); // 1
},
method2: function() {
console.log('методы и свойства хранятся в prototype');
}
},
// Описание пространства может содержать всё, что угодно.
Test4: function() {
},
STATUS: 5
});
В общем было удобно и приятно этим пользоваться. Это прекрасно работало вместе с backbone и теоретически, с любыми другими frameworkами.
И ряд проектов был создан на такой структуре, в том числе и проект со сложными моделями в тысячи строчек кода.
Проблема и решение
А время шло. Современность диктует совсем другую структуру проектов.
И вот наступил тот день, когда мне это аукнулось. То большое приложение нуждается в новой версии.
И тут я вижу 2 решения:
- Полностью всё переписать, долго и дорого.
- Выбрать из frameworkа всё необходимое, от остального избавиться, предыдущих недостатков нет.
Выбор естественно упал на 2 вариант, что и было быстренько сделано. От былой роскоши осталось только создание модуля, выглядит теперь это вот так:
the.module({
Test: {
//И тут всё как раньше.
...
}
});
Если вдруг интересно попробовать, то вот репка
github.com/pashaigood/the.moduleили
bower install the.module
Вывод
И тут полагается вывод, а он такой. Перед созданием чего-либо нового и крайне нужного для себя, стоит подумать как минимум о 2 вещах. Есть ли силы и возможности для дальнейшей поддержки и что самое главное продвижения своего решения. Второе и самое главное, html 5 платформа нуждается в стандартах как никто другой. А вот как к этому подойти, вопрос совсем другой и видимо самый сложный.
Если так получилось, и Вы это читаете, то мне бы было интересно узнать, как вы себе представляете возможность стандартизировать разработку на html 5?