что произошло в арт-мире за неделю • ARTANDHOUSES

Творческий дуэт Elmgreen & Dragset (@elmgreenanddragsetstudio) продолжает шествие по миру — вслед за ретроспективной в Лондоне и показом инсталляции «Кого это касается» на Вандомской площади в Париже в рамках ярмарки FIAC они представили гигантскую скульптуру «Зеро» на только что открывшейся Бангкокской биеннале. Скульптура находится рядом со зданием, построенным в духе Ренессанса более ста лет назад…

CIOB открывает международную фотосессию 2018 года

Ежегодный международный конкурс цифровой фотографии «Искусство строительства», организованный Чартерным институтом строительства, открыт для представлений. Каждый год тысячи абитуриентов со всего мира вдохновляются исследовать и захватывать искусство строительства воображаемым и продуманным способом. «Из скромных домов, построенных вручную, которые сделали много счастливых пожизненных воспоминаний, к славным структурам, достигающим неба, сформированному с равной степенью сложности и мастерства, чудесами…

17 диалогов из культовых фильмов, после которых вы захотите все пересмотреть

Ребята, мы вкладываем душу в AdMe.ru. Cпасибо за то,что открываете эту красоту. Спасибо за вдохновение и мурашки.Присоединяйтесь к нам в Facebook и ВКонтакте Хороший диалог — это изюминка любого фильма. Да, сюжетные твисты удивляют, музыка направляет эмоции, действия героев раскрывают смысл, но при этом запоминаются и украшают весь фильм именно диалоги. AdMe.ru вспомнил примечательные разговоры из совершенно разножанровых, но культовых…

Влад Савинкин и Владимир Кузьмин: «Наша цель – РЕ-Зодчество»

Фестиваль «Зодчество′18» пройдет с 19 по 21 ноября в «Манеже». О том, какие новые идеи реализуют кураторы фестиваля Владимир Кузьмин и Влад Савинкин, вновь, как и 6 лет назад, отвечающие за оформление и содержание экспозиции, читайте в нашем интервью

Призрачные темы Бесплатно — Фрэнк Тема

        Главная            БЛОГ            MAGAZINE            Бесплатные шаблоны HTML               Тема призрака в стиле Github                Блог               | 2018-10-20 Репозиторий для темы блога призрака varpop.com                Блог               | 2018-10-16 Тема для форумов OpenMined и Weekly Digs                Блог               | 2018-10-16 Тема призрака Овна                Фото                             Блог       …

«Нас интересовали осколки идеологического характера» • ARTANDHOUSES

Союз художников Елены Елагиной и Игоря Макаревича известен не только российскому зрителю — их выставки проходили в разных странах мира, а работы классиков отечественного искусства находятся в музеях Европы, Америки и Азии. При всем разнообразии жанров и технических приемов, используемых дуэтом при работе над проектами (фотография, живопись, графика, скульптура, объекты, инсталляции), самое главное в их…

6 способов превратить бренд в фамилию

DesignStudio — это название некоторых из самых известных брендинговых историй последних лет, и быстро развивается репутация превращения стартапов в имена домашних хозяйств. Его работа над Airbnb помогла компании разгореться. Аналогичный случай с Deliveroo. Выступая на конференции дизайнера Манчестера D (перерыв) M, соучредитель студии Бен Райт разделяет некоторые из процессов, стоящих за историями успеха DesignStudio. 01.…

GitHub — Tencent / omi на webdesignernews.com

English |简体 中文

 omi "width =" 300 "style =" max-width: 100%; "/> </p>
<h2 align= Omi: веб-инфраструктура следующего поколения в JavaScript 4kb

Объединить JSX, веб-компоненты, прокси, магазин, обновление пути вместе

Почему Оми?

  • Крошечный размер. ( 4kb gzipped)
  • Поддерживает TypeScript.
  • Реактивная привязка данных
  • На основе Shadow DOM
  • Легко отлаживается через расширение Omi DevTools [Install from Chrome WebStore]
  • Соблюдение тенденции браузера и дизайна API.
  • Объединить JSX и веб-компоненты в одну структуру.
  • Веб-компоненты также могут быть ориентированы на данные, UI = fn (данные) .
  • JSX — лучший опыт разработки (интеллектуальное завершение кода и подсказка). Выражение пользовательского интерфейса с наименьшим грамматическим шумом.
  • Оригинальная система Path Updating . Автоматическое автоматическое обновление потребление низкой мощности высокая степень свободы, отличная производительность, легкая интеграция requestIdleCallback
  • Попробуйте this.update метод при использовании системы хранения ! Он будет автоматически обновлять пользовательский интерфейс при изменении данных.
  • Посмотрите на Facebook React vs Web Components, Omi сочетает в себе свои преимущества и дает разработчикам свободу выбора 19459017 .
  • Shadow DOM объединяется с Virtual DOM Omi использует как виртуальную DOM, так и реальную DOM DOW, чтобы сделать просмотр обновлений более точным и быстрым.
  • В системе Store 99,9% проектов не требуют путешествий во времени, и не только Redux может путешествовать, пожалуйста, не придумывайте Redux, система магазинов Omi может удовлетворить все проекты
  • Лучшее решение с CSS — это Shadow DOM сообщество, разбивающее фреймворки и библиотеки для Scoped CSS (с использованием стилей записи JS или JSON, таких как Radium, jsxstyle, стиль, привязка к webpack с использованием сгенерированного уникального className filename-classname-hash такого как CSS-модули, Vue), являются хакерскими технологиями; и Shadow DOM Style — идеальное решение .

Сравнить TodoApp от Omi и React, Omi и React, рендеринг структуры DOM:

Оми React
Добавить Оми в одну минуту

Эта страница демонстрирует использование Omi без инструмента для сборки .

 
< HTML >

< глава >
   meta   charset  =   " UTF-8 "   />
  < название > Добавить Оми в одну минуту </  название >
</  глава >

< тело >
     src  =   " https://unpkg.com/omi "  > </  ] сценарий >
  < сценарий > 
  const  { WeElement  h  render  определяют }  =  Оми 

  класс   LikeButton   распространяется   WeElement  {
  установить  () {
      =  {понравилось :   false } 
} 

   () {
 если  ( это .  данные .  понравилось ) {
  return    ' Вам понравилось. '   
} 

  возвращение   h  (
      
 {
  onClick  :  ()  =>  {
  это .  данные .  понравилось   =   true  
  это .  обновление  () 
} 
}, 
   '    
) 
} 
} 

  определяют  (  » аналогичная кнопка  ' LikeButton) 

    h  (  » аналогичная кнопка   ),   ' тела   ) 
  </  сценарий >
</  тела >

</  HTML > 

Вы также можете использовать тег как кнопка непосредственно в HTML:

 < тело >
  < как-кнопки  > </  как-кнопки  >
</  тела > 

Начало работы

Установите

 $ npm i omi-cli-g   #  установить cli 
$ omi init your_project_name   #  init project, вы также можете выполнить команду 'omi init' в пустой папке 
$  cd  your_project_name   # пожалуйста, проигнорируйте эту команду, если вы выполнили 'omi init' в пустой папке 
$ npm start   #  разработать 
$ npm run build   #  выпуск  

Описание в каталоге:

  ├─ config
├─ общественность
├─ скрипты
├─ src
│ ├─ активы
│ ├─ elements // Хранить все пользовательские элементы
│ ├─ store // Хранить все это хранилище страниц
│ ├─ admin.js // Запись js компилятора, будет создана для admin.html
│ └─ index.js // Запись js компилятора, будет создана для index.html
 

Автосозданные строительные леса CLI основаны на одностраничном приложении create-response-app, которое будет преобразовано в многостраничное, с проблемами конфигурации, чтобы увидеть руководство пользователя для создания-реагирования-приложения

Hello Element

Определите пользовательский элемент, расширив WeElement базовый класс и назовите его с помощью @tag decorator:

  import  { tag  WeElement  render }  из     оми   

@  Тег  (   Привет-элемент   )
 класс   HelloElement   extends   WeElement  {

     onClick   =  ( evt )  =>  {
          //  триггер CustomEvent 
               abc  ' {name :     dntzhang  ' возраст :   12 })
         ЭВТ .  stopPropagation  ()
    }

     css  () {
       возвращение    ` 
 div {
 цвет: красный; 
 курсор: указатель; 
}  ` 
    }

     render  ( реквизит ) {
       возвращение  (
         < div onClick  =  { это .  onClick } > 
          Привет [ реквизит .  msg } { реквизит .  propFromParent }
           < div >       <  /  div > 
         <  /  DIV > 
      )
    }
} 

Использование hello-element :

  import  { tag  WeElement  render }  из     оми   
 импорт    ' ./ hello-element '  

@  Тег  (   мое-приложение   )
 класс   MyApp   распространяется   WeElement  {
   static   get   данные  () {
        {abc :      ' passToChild :      ' }
  }

    //  bind CustomEvent 
   onAbc   =  ( evt )  =>  {
        //  получить данные evt по evt.detail 
           abc   =       $ {  ЭВТ .  подробно .  имя  }    ` 
       это .  Обновление  ()
  }

   css  () {
     возвращение    ` 
 div {
 цвет: зеленый; 
}  ` 
  }

     реквизит  данные ) {
     возвращение  (
       < DIV > 
        Привет [ реквизит .  имя } { данные .  abc }
           -  элемент onAbc  =  {   onAbc } prop  -  из  -  parent  =  { данные .  passToChild } msg  =    " WeElement  "  > <  /  Привет  -  элемент > 
       <  /  DIV > 
    )
  }
}

   < мое  -  название приложения  =    ' Omi v4.0 '   >   /  мой  -  приложение >   ' тело   ) 

Скажите Бабелю, чтобы превратить JSX в Omi.h () звонок:

 {
     presets  " : [ "  env  "   " оми "  ]
} 

Для поддержки вышеуказанной конфигурации необходимо установить следующие два пакета NPM:

   " babel-preset-env "  :   " ^ 1.6.0 "  ,
  " babel-preset-omi "  :   " ^ 0,1.1 "   , 

Если вы не хотите писать CSS в JS, вы можете использовать to-string-loader,
Например, следующая конфигурация:

 {
  :    /   [   |   / ]  _  [ ]  S ]   *   .  CSS  $   /  ,
  использование :  [
       в строке-загрузчик   ,
       CSS-погрузчик   
  ]
} 

Если ваш файл CSS начинается с « _ », CSS будет использовать для-string-loader ., Например:

  import  { tag  WeElement   render }  из    ' оми   

  //  typeof cssStr является строкой 
 импорт   cssStr   из    ' ./_ index.css '  

@  Тег  (   мое-приложение   )
 класс   MyApp   распространяется   WeElement  {

   css  () {
     возвращение  cssStr
  }
   ... 
   ... 
   ...  

TodoApp

Вот относительно полный пример TodoApp:

  import  { tag  WeElement  render }  из     оми   

@  Тег  (   TODO-лист   )
 класс   TodoList   extends   WeElement  {
     render  ( реквизит ) {
         возвращение  (
             < уль > 
                {19459049] реквизит .  предметы .  карта  ( пункт   => 
                     < li key  =  { Пункт .  id } >  { Пункт .  текст }  <  /  Li > 
                ))}
             <  /  уль > 
        );
    }
}

@  Тег  (   TODO-приложение   )
 класс   TodoApp   extends   WeElement  {
   static   get   данные  () {
      {пункты :  []текст :      ' }
  }

   render  () {
     возвращение  (
       < DIV > 
         < Н3 >   TODO   <  /  Н3 > 
         < todo  -  перечислил элементы  =  { .  данные .  пункты }  /  > 
         < форма onSubmit  =  { этот .  рукояткаSubmit } > 
           < вход
            ID  =    " новый список задачи "  
            OnChange  =  { это .  handleChange }
            значение  =  { это .  Данные .  текст }
           /  > 
           < Кнопка > 
                  .  длина   +   1 }
           <  /  Кнопка > 
         <  /  форма > 
       <  /  DIV > 
    );
  }

   handleChange   =  ( e )  =>  {
         текст   =   e .  Цель .  значение 
  }

   handleSubmit   =  ( e )  =>  {
     е   preventDefault  ().
    если     это .  данные .  текст .  обрезка  ().  длина ) {
       возвращение ;
    }

     это .  Данные .  элементов .  толчок  ({
      текст :   это .  данные .  текст ,
      id :   Дата .  сейчас  ()
    })
       данные .  текст   =        ;
     это .  Обновление  ()
  }
}

   < todo  -  приложение  /  >   ' тело   ) 

Магазин

Попробуйте this.update метод при использовании системы магазинов! При изменении данных он будет автоматически обновлять пользовательский интерфейс. Мощная архитектура Store отличается высокой производительностью, поскольку все данные монтируются в хранилище, за исключением компонентов, которые полагаются на опоры для определения состояния компонента.

  экспорт   по умолчанию  {
  данные :  {
    пункты :  [],
    текст :    ' '  ,
    firstName :    ' dnt '  ,
    lastName :    ' zhang '  ,
     fullName  :   функция  () {
       возвращение   это .  firstName   +   это .  lastName 
    },
    :     abc  '   //  Изменить, он обновит все элементы без изменения компонентов и страницы, объявляющих зависимость данных. 
    ccc : : :   1 }   //  Изменить это будет обновлять все элементы без изменения компонентов и объявления страниц. зависимость. 
  },
       globalPropTest  '  '  ccc.ddd  ' ],
   добавить  :   function  () {
    если     это .  данные .  текст .  обрезка  ().  длина ) {
       возвращение ;
    }
     это .  Данные .  элементов .  толчок  ({
      текст :   это .  данные .  текст ,
      id :   Дата .  сейчас  ()
    })
       данные .  текст   =       
  }
    //  Значение по умолчанию - false, значение true будет обновлять все экземпляры при изменении данных. 
    //  updateAll: true 
} 

Пользовательский элемент требует объявления зависимых данных, так что Omi сохраняет вычислительный путь зависимости на основе данных, объявленных на пользовательском компоненте, и обновляет их локально по мере необходимости. Например:

  класс   TodoApp   распространяется   WeElement  {
    //  Если вы используете хранилище, данные используются только для объявления зависимостей. 
   static   get   данные  () {
      {пункты :  []текст :      ' }
  }
    //  ... 
   handleChange   =  ( e )  =>  {
           текст   =   e .  цель .  значение 
  }

   handleSubmit   =  ( e )  =>  {
     е .  preventDefault  ()
     это .  магазин .  добавить  ()
  }
} 

  • Логика данных инкапсулирована в методе определения хранилища (например, store.add ).
  • Взгляды — это только ответственные за передачу данных для хранения таких как вызов store.add или установка store.data.text сверху.

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

    < todo  -  приложение  /  >    тело  ' магазин) 

→ Сохранить исходный код

Резюме:

  • store.data используется для отображения всех атрибутов и значений по умолчанию (кроме компонентов представления, определенных реквизитами).
  • Данные компонента и страницы используются для перечисления атрибутов зависимого store.data (Omi будет записывать путь) и обновления по запросу.
  • Если на странице несколько простых компонентов, updateAll может быть установлено в true а компонентам и страницам не нужно декларировать данные, и они не обновляются по запросу
  • Путь, объявленный в globalData обновляет все страницы и компоненты, изменяя значение соответствующего пути, который может использоваться для отображения всех страниц или большинства путей общедоступных свойств

Жизненный цикл

Метод жизненного цикла Когда его назовут
установите перед тем, как компонент подключится к DOM
установлен после того, как компонент подключается к DOM
удалить до снятия с DOM
BeforeUpdate до render ()
AfterUpdate после render ()

Компонентная экосистема

Я считаю, что вы можете легко преобразовать элементы веб-компонентов в элементы omi.

Отладка

Используя Omi DevTools, вы можете просто отлаживать и управлять своим пользовательским интерфейсом без какой-либо конфигурации . Просто установите и отлаживайте.

Поскольку Omi использует веб-компоненты и Shadow-DOM, ему не нужно иметь другую панель элементов, такую ​​как React или Vue. Он просто добавляет панель к боковой панели элементов и она настолько же эффективна, как и React и Vue DevTools.

Поддержка браузеров

Omi 4.0+ работает в последних двух версиях всех основных браузеров: Safari 10+, IE 11+ и вечнозеленых Chrome, Firefox и Edge.

Ссылки

Вклад

  1. Вилка (https://github.com/Tencent/omi/fork)
  2. Создайте свою ветку ( git checkout -b мое-срочное исправление )
  3. Зафиксируйте свои изменения ( git commit -am «Исправлено что-то» )
  4. Нажмите на ветку ( git push origin my-emergency-hotfix )
  5. Создайте новый запрос Pull

Пожалуйста, свяжитесь с нами по любым вопросам:

Лицензия

MIT © Tencent

Пикассо и Моне из собрания Клапперов продадут в Нью-Йорке • ARTANDHOUSES

Вечерние торги импрессионистов и модернистов Christie’s в Нью-Йорке 11 ноября соберут вещи сразу из нескольких знаменитых американских коллекций. Среди них и собрание Герберта и Адели Клаппер. Коллекция промышленного магната Клаппера формировалось с 1950-х годов — успешно развив бизнес со швейными машинками своего отца, он вместе с женой Адель увлекся искусством. Полвека их эклектичная коллекция пополнялась…

Go to Top