Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   web components (https://javascript.ru/forum/offtopic/39321-web-components.html)

DjDiablo 25.06.2013 15:35

web components
 
Web components нуждаетесь ли вы в них ?

kobezzza 25.06.2013 15:39

Не могу сказать, что жду как манну небесную, но штука прикольная.

mta88 25.06.2013 15:51

необъективный опрос, нужно еще два варианта
  • в первый раз слышу, что это за хрень?
  • так и не осилил, слишком заумно

monolithed 25.06.2013 19:52

Цитата:

Сообщение от mta88
необъективный опрос, нужно еще два варианта

Значит не нужно :)

nerv_ 25.06.2013 20:47

не понятно о чем вопрос:
- о стандартизации
- ангуляре

По большому счету они (веб-компоненты) уже существуют. Разница лишь в том, что у каждого разработчика свой подход к реализации.

iKillMaxmaxmaximus 25.06.2013 23:50

UI например

а вообще у меня вопрос, что такое шадоу дом я не понял, эт он типа не рендерится или чо?

iKillMaxmaxmaximus 26.06.2013 00:03

Лол это вазе чо такое)? Это нативно будет или чо? Это же ваще ад

kobezzza 26.06.2013 00:37

Цитата:

Сообщение от iKillMaxmaxmaximus (Сообщение 258492)
а вообще у меня вопрос, что такое шадоу дом я не понял, эт он типа не рендерится или чо?

На него можно свою стилевую таблицу повесить и на него не накладываются общие стили документа. Т.е. теперь не нужно костылить с кастомными тегами или ифреймами.

iKillMaxmaxmaximus 26.06.2013 01:39

Цитата:

Сообщение от kobezzza
На него можно свою стилевую таблицу повесить

эм.. и все? я то думал это когда ты достраиваешь и модифицируешь дерево дом а потом так apply и он рендерит а до этого не тупил)

iKillMaxmaxmaximus 26.06.2013 01:41

kobezzza, кстати скоро покажу няшную версию UI 0.7 которая почти дотягивает до ангуляра по функционалу не хватает только шаблонов. но КАК это сделано, с ангуляром не сравнить я лучшего шаблонизатора чем свой вообще ни где не видел.. собственно поэтому и начал его делать) лол

DjDiablo 26.06.2013 06:27

Цитата:

не понятно о чем вопрос:


Вопрос скорее об идеи заменить стандартные теги своими собственными, при этом ваши теги будут обладают логикой как сейчас jQuery плагины.

список технологий растёт шустро

от гугла angular, native/polimer, dart webcomponents
от мозиллы x-tag,

Цитата:

Это нативно будет или чо?
MDV в polimer пока реализован. Но в будущем гугл надеется реализовать его нативно.

В принципе при поддержки Polimer веб компоненты по стандарту W3C уже могут работать на
Chrome Android, Chrome, Canary, Firefox, IE 10+, Safari 6+, Mobile Safari
с учётом миграции оперы на webkit думаю и там всё будет ок.

DjDiablo 26.06.2013 10:18

Мой пост не об ангуляре конкретно, а о том что происходит с веб разработкой вообще.

Цитата:

Сообщение от nasqad
мертворожденное чудо

Обоснуй.

iKillMaxmaxmaximus 26.06.2013 11:46

Цитата:

Сообщение от DjDiablo
Вопрос скорее об идеи заменить стандартные теги своими собственными, при этом ваши теги будут обладают логикой как сейчас jQuery плагины.

Ну так это есть уже в ui например, а раз есть значит нынешние технологии ПОЗВОЛЯЮТ это сделать, в чем проблема то?

Цитата:

Сообщение от DjDiablo
Обоснуй.

все просто

nerv_ 18.08.2013 14:24

Цитата:

Сообщение от DjDiablo
Вопрос скорее об идеи заменить стандартные теги своими собственными

Цитата:

Сообщение от DjDiablo
Мой пост не об ангуляре конкретно, а о том что происходит с веб разработкой вообще.

Люди начинают понимать, что html для динамических приложений есть ничто. XML :)

nerv_ 21.09.2013 11:31

Цитата:

Сообщение от iKillMaxmaxmaximus
а вообще у меня вопрос, что такое шадоу дом я не понял, эт он типа не рендерится или чо?

Цитата:

Сообщение от kobezzza
На него можно свою стилевую таблицу повесить и на него не накладываются общие стили документа. Т.е. теперь не нужно костылить с кастомными тегами или ифреймами.

давно пора :)

Цитата:

Сообщение от DjDiablo
Вопрос скорее об идеи заменить стандартные теги своими собственными, при этом ваши теги будут обладают логикой как сейчас jQuery плагины

ну так сейчас (с приходом html5) уже можно. Не хватает инкапсуляции в dom / html\css

<элемент пошли_все_нафиг_я_самостоятельный="1">
</элемент>

:)

nerv_ 21.09.2013 12:46

выглядит многообещающе
<element name="my-megabutton" extends="button" constructor="MegaButton">
  <template>
    <button><content></content></button>
  </template>
  <script>
    MegaButton.prototype = {
      megaClick: function(e) {
        play('moo.mp3');
      }
    };
  </script>
</element>

http://html5-demos.appspot.com/stati.../index.html#63
http://html5-demos.appspot.com/stati.../index.html#66

DjDiablo 21.09.2013 21:20

Угу мне тож нравится, я через pollyfill баловался, фурычит на всех современных браузерах.

Кстатии еще давным давно на IE 5 Можно было сделать вот такую штуку
Почти что тоже компонент :)

<html xmlns:b="http://xyz.ru/">
<style type="text/css">
b\:spacer{
    display: inline-block;
    width: expression(this.width+'px');
    height: expression(this.height+'px');
}
</style>

Привет <b:spacer width="200" height="1"></b:spacer>Всем
</html>

monolithed 21.09.2013 22:04

Цитата:

Сообщение от DjDiablo
Кстатии еще давным давно на IE 5 Можно было сделать вот такую штук

Разве сейчас нельзя?

DjDiablo 21.09.2013 22:10

Цитата:

Сообщение от monolithed (Сообщение 273131)
Разве сейчас нельзя?

А я разве говорил что сейчас нельзя



Лишний раз пропиарю своеобразные веб компоненты на jQuery, которые работают уже сейчас.
Выглядеть будут так
<demotivator id="t1" title="Узбагойтесь" subtitle="Сделаем вовремя">
      <img src="http://im2-tub-ru.yandex.net/i?id=137949638-61-72&n=21"/>
</demotivator>


А работать так
<!DOCTYPE HTML>
<html>
  <head> 
      <script src="https://code.jquery.com/jquery-2.0.3.min.js"> </script>
  </head>
  <body>    
    <style>
      
      demotivator{
        background-color:black;    
        display:block;   
        color:white;
        width:250px;
        padding:10px;
      }
      
      demotivator img{
        width:100%;        
      }
      
      demotivator h1{
        text-align:center;
        margin:0px;
      }

      demotivator h2{
        text-align:center;
        margin:0px;
      }
      
      .red{
        background-color:red;                      
      }
            
    </style>
    

    
    <script>

      $(function(){   
        //функция шаблонизатор
        function template(data){
          return  "<h1>"+data.title+"</h1>"+                
                  "<h2>"+data.subtitle+"</h2>"
        }

        //конструктор плагина
        var Plugin=function(el){                       
             el.append( 
                template({
                  title:$(el).attr('title')||"",                   
                  subtitle:$(el).attr('subtitle')||""                   
                })
             );                                                 
             this.el=el;
         }

         // прототип плагина
         Plugin.prototype={
           //демонстрационный метод
           red:function(){
             this.el.addClass('red');
           }      
         }
      
         //автоматическое создание
         $('demotivator').each(function(){
              $(this).data('widget', new Plugin( $(this) ) );
         })         
      })
      
      

      //Тест управления виджетом из вне. 
      $(function(){
        $('#btn1').click(function(){            
            $('#t1').data('widget').red();
        })                
      })
      
      
    </script>

    
    
    <demotivator id="t1" title="Узбагойтесь" subtitle="Сделаем вовремя">
      <img src="http://im2-tub-ru.yandex.net/i?id=137949638-61-72&n=21"/>
    </demotivator>
    
    <button id="btn1"> Волшебная кнопка </button>
    
    <demotivator id="t2" class="red" title="Уcпакойтесь" subtitle="Сделаем вовремя">
      <img src="http://im2-tub-ru.yandex.net/i?id=137949638-61-72&n=21"/>
    </demotivator>
    
  </body>
</html>

iLikeMaxmaxmaximus 22.09.2013 01:28

Цитата:

Сообщение от DjDiablo
Вопрос скорее об идеи заменить стандартные теги своими собственными, при этом ваши теги будут обладают логикой как сейчас jQuery плагины.

ВОТ ЭТО ПОВОРОТ


nerv_ 15.04.2015 00:52

x-repeat (demo)
 
На днях вернулся к теме веб-компонет. Сделал простой репитер :)

С помощью изменения значения атрибута элемента можно менять кол-во выводимых шаблонов:
<x-repeat count="1">
    <!-- html here -->
</x-repeat>

Полный код страницы
<!DOCTYPE html>
<html>
<head>
    <title>Web Components: Hello World</title>
    <meta charset="utf-8">
    <!--<script src="../../node_modules/babel/browser-polyfill.js"></script>-->
    <!--<script src="../../node_modules/webcomponents.js/webcomponents.min.js"></script>-->
</head>
<body>
    <h1>Web Components: Hello World</h1>

    <hr/>

    <section>
        <h2>Template</h2>
        <x-repeat count="1" id="test-repeat">
            <span>test_1</span>
            <span>test_2</span>
        </x-repeat>
    </section>

    <hr/>

    <section>
        <h2>Controls</h2>
        <label>count</label>
        <input type="number" value="1" id="test-input"/>
    </section>
    
    <script src="script.js"></script>
    <script src="HtmlXRepeatElement.js"></script>
</body>
</html>


Класс, описывающий компонет выглядит так
const TAG_NAME = `x-repeat`;

export default class HtmlXRepeatElement extends HTMLElement {
    // [url]https://learn.javascript.ru/webcomponent-core#жизненный-цикл[/url]
    render() {
        var count = Number(this.getAttribute('count')) || 0;
        var fragment = document.createDocumentFragment();
        this.innerHTML = null;
        for(var i = 0; i < count; i++) {
            fragment.appendChild(this.__getTemplate());
        }
        this.appendChild(fragment);
    }
    createdCallback() {
        // 1: save template
        this.__saveTemplate();
    }
    attachedCallback() {
        //2:
        this.render();
    }
    detachedCallback() {
        this.__clearTemplate();
    }
    attributeChangedCallback(name, prevValue, newValue) {
        this.render();
    }
    __saveTemplate() {
        var fragment = document.createDocumentFragment();
        var childNodes = this.childNodes;
        while(childNodes[0]) {
            fragment.appendChild(childNodes[0]);
        }
        this.__template = fragment;
    }
    __getTemplate() {
        return this.__template.cloneNode(true);
    }
    __clearTemplate() {
        this.__template = null;
    }
    static register(document) {
        document.registerElement(TAG_NAME, {
            prototype: HtmlXRepeatElement.prototype
        });
    }
}

Рабочая песочница (es5) (Хром, наверно...). Код es6 + модуль можно посмотреть там же.

Разумеется, вся прелесть в том, что таких элементов
<x-repeat count="1">
    <!-- html here -->
</x-repeat>

с разным содержимом можно навтыкать на странице сколько угодно)

nerv_ 15.04.2015 10:17

Поддержка браузерами с учетом полифилов

Т.е. с приходом веб компонет становятся ненужными React, Angular и прочие. Вероятно, jQuery тоже.

TODO: написать TODO list :)

Gozar 15.04.2015 11:17

Цитата:

Сообщение от nerv_
с приходом веб компонет становятся ненужными React, Angular и прочие.

Я когда писал fj именно так и думал. Сейчас пишу на React :D

Safort 15.04.2015 11:21

nerv_,
Цитата:

Т.е. с приходом веб компонет становятся ненужными React, Angular и прочие. Вероятно, jQuery тоже.
Можно по подробнее? Я пока не сильно вникал в эту тему, но мне интересно, почему ты так считаешь.

l-liava-l 15.04.2015 18:34

Цитата:

Можно по подробнее? Я пока не сильно вникал в эту тему, но мне интересно, почему ты так считаешь.
Потому что будет нативный декларативный view, с возможностью писать свои компоненты. А нафига тогда шаблонизатор ангуляровский и тем более реакт? ;)

Gozar 15.04.2015 18:41

Цитата:

Сообщение от l-liava-l
А нафига

Удобно потому что.


Часовой пояс GMT +3, время: 14:43.