Comments 13
Извините, возможно не понял, но где у вас всякие замечательные штуки типа ng-repeat, ng-switch, ng-view и т.д. (видимо, за это отвечает builder.compile)?
Где dependency injection (да и вообще непонятно, как производится вставка данных, видимо, через builder.compile)?
200 строк кода — но вы же используете jQuery, не так ли?:)
И самый главный вопрос — не подскажите, какова была мотивация? Ну то, что постарались разобраться с внутренностями angular и их философией — это вы молодец.
Где dependency injection (да и вообще непонятно, как производится вставка данных, видимо, через builder.compile)?
200 строк кода — но вы же используете jQuery, не так ли?:)
И самый главный вопрос — не подскажите, какова была мотивация? Ну то, что постарались разобраться с внутренностями angular и их философией — это вы молодец.
0
Прошу прощения но ng-repeat, ng-switch, ng-view нет — их нет, причины:
не имеют отношения к семантике html. К примеру ng-repeat отвечает за работу с коллекцией данных, а «ngView is a directive that complements the $route service by including the rendered template of the current route into the main layout (index.html) file.» В начале статьи я попытался объяснить что именно в дальнейшем подразумивается под компанентами.
Речь шла не шла о директивах связаных с данными — нам нужны были именно кастомные компоненты. К примеру у нас в проекте около 8000 вхождений одинаковых 4 строк htmlи коротенького скрипта в 6 строк — теперь вместо этого написано просто
А мотивация — «мне нужны были вэб компоненты» в проекте, в котором я не мог использовать ангулар (кстати пример вставки данных есть через underscore, если имеется ввиду шаблонизация). И пока замечательно работает
не имеют отношения к семантике html. К примеру ng-repeat отвечает за работу с коллекцией данных, а «ngView is a directive that complements the $route service by including the rendered template of the current route into the main layout (index.html) file.» В начале статьи я попытался объяснить что именно в дальнейшем подразумивается под компанентами.
Речь шла не шла о директивах связаных с данными — нам нужны были именно кастомные компоненты. К примеру у нас в проекте около 8000 вхождений одинаковых 4 строк htmlи коротенького скрипта в 6 строк — теперь вместо этого написано просто
<td w-component="acc">
, ушло очень много копипаста. Или тот же датапикер которого несколько десятков — <datapicker time="now"/>
и все, а внутри и валидатор и разметка и параметризирование.А мотивация — «мне нужны были вэб компоненты» в проекте, в котором я не мог использовать ангулар (кстати пример вставки данных есть через underscore, если имеется ввиду шаблонизация). И пока замечательно работает
0
а почему тогда angular? для красивого заголовка?;)
0
это первая причина, а вторая — “Directives is a unique and powerful feature available only in Angular. Directives let you invent new HTML syntax, specific to your application.” Я хотел показать что директивах нет ничего волшебного и уникального
0
есть ощущение, что ту задачу, которую вы описали, должны в полной мере решить просто правильно написанные шаблоны. может даже декларативные, типа yate
0
Если вы имели ввиду — habrahabr.ru/company/yandex/blog/151700/? То да может, просто то что использует яндекс намного более сложный и нагруженный фреймворк. И кроме того у него немного другой подход — у нас шаблонизация на стороне клиента с использованием DOM машины браузера, у них перд компиляция в JS функцию и потом шаблонизация, тоесть фактически «Подход 2» из статьи + декларативное использование шаблона.
0
есть же jquery.widgetFactory, dojo.widgetFactory + любой шаблонизатор и все будет работать на ура. Замысел в чем? В легковесном коде?
0
Замысел в новой семантике HTML и ввыделении нового уровня абстракции. Как написано здесть — dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/templates/index.html " describes a method for declaring inert DOM subtrees in HTML and manipulating them to instantiate document fragments with identical contents."
Ни jquery.widgetFactory ни dojo.widgetFactory + любой шаблонизатор не позволят вам декларативно описать использование шаблона в html с уже существующем контентом + забиндиными кликами, а именно:
фреймворки которые указали вы — это императив, вот тот же яндекс, отказывается от императива, и можете почитать почему habrahabr.ru/company/yandex/blog/151700/. Кроме они, к сожелению, имеют зависимости от других библиотек.
PS Я совершенно согласен с товарищами с W3C (Dimitri Glazkov, Google, <dglazkov@chromium.org>, Rafael Weinstein, Google, <rafaelw@chromium.org> Tony Ross, Microsoft, <tross@microsoft.com> dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/templates/index.html) что это необходимо
Ни jquery.widgetFactory ни dojo.widgetFactory + любой шаблонизатор не позволят вам декларативно описать использование шаблона в html с уже существующем контентом + забиндиными кликами, а именно:
<expandable header="Click">
<ul>
<li>lkj;lksdf</li>
<li>lkj;lksdf</li>
<li>lkj;lksdf</li>
<li>lkj;lksdf</li>
<li>lkj;lksdf</li>
</ul>
</expandable>
фреймворки которые указали вы — это императив, вот тот же яндекс, отказывается от императива, и можете почитать почему habrahabr.ru/company/yandex/blog/151700/. Кроме они, к сожелению, имеют зависимости от других библиотек.
PS Я совершенно согласен с товарищами с W3C (Dimitri Glazkov, Google, <dglazkov@chromium.org>, Rafael Weinstein, Google, <rafaelw@chromium.org> Tony Ross, Microsoft, <tross@microsoft.com> dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/templates/index.html) что это необходимо
0
PSS Могу добавить только то что — у нас в проекте мидл верстальщик — сам начал писать и использовать компоненты уже через пару дней, как только прочувствовал. Тот же датапикер — из jquery, (я уже это упоминал) нам понадобилось его расширить версткой, поведением и валидацией, и как итог: намного удобнее его использовать в html маркапе как /> чем обертывать его еще 4 дивами для отображения таймлана после выбора даты + везде делать связку JS
0
Спасибо за линку не знал, интерестно — почитаю внимательнее
Но к сожалению, подход очень похож на ангуляровский, т.е. вместо использования методов addEventListener или on в JQuery на уже существующем контенте, я вынужден исползовать: data-dojo-event=«onClick» data-dojo-args=«evt» то есть прописаные ивенты и аргументы во фреймворке.
<div data-dojo-type="dijit.Dialog" data-dojo-props='title:"My Dialog",
onFocus:function(){ /* a focus event handler */ }'
data-dojo-id="myDialog">
</div>
Но к сожалению, подход очень похож на ангуляровский, т.е. вместо использования методов addEventListener или on в JQuery на уже существующем контенте, я вынужден исползовать: data-dojo-event=«onClick» data-dojo-args=«evt» то есть прописаные ивенты и аргументы во фреймворке.
0
Sign up to leave a comment.
Очень маленький фреймверк или как написать собственный Angularjs в 200 строк