Как стать автором
Обновить

Комментарии 9

А как добавить fieldName с названием 'name'?
Родное поле «name» 100% можно использовать при соблюдении 2-х условий:
1. Во время жизни объекта смена name не предполагается
2. Имена объектов будут уникальны в пределах 1 объекта
За остальные случаи не скажу… НО! Никто не запрещает использовать proxy-object:
enyo.kind({
  name: 'EnyoClass',
  proxy_object: {name: 'NAME'}
})
var cls_1 = new EnyoClass()
console.dir(cls_1.proxy_object)

А внутри EnyoClass можно инициализировать в create обращаясь к proxy_object через this:
enyo.kind({
  name: 'EnyoClass',
  proxy_object: {name: 'NAME'},
  create: function() {
    this.inherited(arguments)
    console.log(this.proxy_object.name)
  }
})
Нет, ну все-таки это разные вещи немного. Если все поля, которые объявлены, попадают в прототип, то у вас этот прокси объект будет шариться между всеми экземплярами, что есть совсем не клево.
Ок. Адаптируем пример:
enyo.kind({name: 'EnyoClassE', proxy_object: {}})
var cls_1 = new EnyoClassE({proxy_object: {name: 'qwe'}})
var cls_2 = new EnyoClassE({proxy_object: {name: 'qwe2'}})

При такой схеме proxy_object в cls_1 и cls_2 — свойства экземпляра, а не прототипа.
Можете пояснить, какие нерешенные проблемы решает данный фреймворк, и почему я должен использовать Enyo?
Сложный вопрос…
Enyo разрабатывался для WebOS и позиционировался как UI framework.
На тек. момент поддержка Enyo заявлена в FirefoxOS и Tizen. Через PhoneGap его можно использовать в Android, iOS и WindowsPhone. LG для своих SmartTV выбрали синтаксис сильно схожий с Enyo, хоть и не совместимый. На хабре были статьи как написать расширение для Chrome на enyo.
Я бы сказал: мобильная разработка — конек Enyo, он позволяет людям слабо имеющим отношение к web, и html в частности, создавать интерфейсы довольно высокого качества, но это ответ из разряда «Qt круче GTK потому что там виджеты интереснее»…
Enyo — довольно широкий framework, в нем есть UI елементы специально разработанные для тач интерфейсов (шутка ли, Scroller в enyo научился обрабатывать тач евенты раньше, чем работать с колесом мыши), есть API для взаимодействия с WEB сервисами по Ajax, есть стек универсальных событий и т.д. Все это реализовано так чтобы не потерять связь с другими JavaScript framework-ами (у разрабов есть в вики нативных JavaScript вызовов для обращения к Enyo объектам).
Enyo не навязывает какой-то патерн в разработке (MVP/MVC/etc.), вы вольны сами решать как связывать данные и объекты, при этом позволяет поддерживать модульную структуру приложения через деление на пакеты и последующий динамический импорт.
Для меня Enyo стал интересен после приобретения HP Touchpad. :-) Очень уж мне интересно стало как под него кодить…
Впоследствии я понял что Enyo ведет себя достойно не только в мобильных системах, но и в классическом web.
Ну правда, разве не прекрасна конструкция:
enyo.kind({name: 'MyApp'}) // прототипируем. Определяем типы, отношения и поведение.
var data = //получаем данные в json или еще как, в которых уже есть поля "kind" "name" "components"
var my_app = new MyApp(data)
my_app.renderInto(document.body)

Эдакий WEB 3.0 на js. :-)
Кстати, может кому будет интересна разработка под tizen с помощью enyo?
Пишите конечно.
Быстрая и удобная разработка для SmartTV с существующей бидлиотекой контролов для теликов. Хотя enyo позиционируется себя как супер кросс-платформенный фреймворк, поддерживает windows 8 app и мобильные платформы. LG, например. прямо рекомендует enyo.
Фреймворк достаточно легковесный и легко кастомизируется.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории