Приветствую!
О чём же я буду писать. Да в общем ни о чём. Даже не советую читать.
Как я потратил несколько недель на создание своего 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 решения:
  1. Полностью всё переписать, долго и дорого.
  2. Выбрать из frameworkа всё необходимое, от остального избавиться, предыдущих недостатков нет.

Выбор естественно упал на 2 вариант, что и было быстренько сделано. От былой роскоши осталось только создание модуля, выглядит теперь это вот так:
the.module({
	Test: {
		//И тут всё как раньше.
		...
	}
});

Если вдруг интересно попробовать, то вот репка
github.com/pashaigood/the.module
или
bower install the.module


Вывод


И тут полагается вывод, а он такой. Перед созданием чего-либо нового и крайне нужного для себя, стоит подумать как минимум о 2 вещах. Есть ли силы и возможности для дальнейшей поддержки и что самое главное продвижения своего решения. Второе и самое главное, html 5 платформа нуждается в стандартах как никто другой. А вот как к этому подойти, вопрос совсем другой и видимо самый сложный.

Если так получилось, и Вы это читаете, то мне бы было интересно узнать, как вы себе представляете возможность стандартизировать разработку на html 5?