{"id":35549,"date":"2019-10-31T22:04:58","date_gmt":"2019-10-31T19:04:58","guid":{"rendered":"https:\/\/prohoster.info\/blog\/ot-ui-kit-do-dizajn-sistemy\/"},"modified":"2019-10-31T22:04:58","modified_gmt":"2019-10-31T19:04:58","slug":"ot-ui-kit-do-dizajn-sistemy","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/ot-ui-kit-do-dizajn-sistemy","title":{"rendered":"Von UI-Kit zu einem Design-System","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Erfahrungen des Online-Kinos Ivi<\/i><\/p>\n<p>Als wir Anfang 2017 erstmals dar\u00fcber nachdachten, ein eigenes System zur Bereitstellung von Design in Code zu schaffen, hatten bereits viele dar\u00fcber gesprochen und einige hatten sogar damit begonnen. Dennoch gibt es bis heute nur wenig Wissen \u00fcber den Aufbau plattform\u00fcbergreifender Design-Systeme, und verst\u00e4ndliche sowie bew\u00e4hrte Rezepte, die die Technologien und Methoden solcher Transformationen des Implementierungsprozesses von Design in ein bereits funktionierendes Produkt beschreiben, sind nach wie vor rar. Unter \"Komponenten im Code\" versteht man oft sehr unterschiedliche Dinge. <\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ivi\/blog\/456854\/\"><img decoding=\"async\" alt=\"Von UI-Kit zu einem Design-System\" src=\"\/wp-content\/uploads\/2744a7b57e23a6d0ffad927d0641097b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\nIn der Zwischenzeit hat das Unternehmen von Jahr zu Jahr das Personal verdoppelt \u2013 es war notwendig, die Designabteilung zu skalieren und die Prozesse zur Erstellung und Weitergabe von Layouts an die Entwicklung zu optimieren. Wenn wir all das mit dem \"Zoo\" an Plattformen multiplizieren, die unterst\u00fctzt werden m\u00fcssen, entstehen Zust\u00e4nde, die einfach nicht in der Lage sind, \"normal\" zu arbeiten und Einnahmen zu generieren. Die Entwicklung der Plattformen verlief oft parallel, sodass dieselbe Funktionalit\u00e4t auf unterschiedlichen Plattformen mit einem Abstand von mehreren Monaten verf\u00fcgbar sein konnte.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<img decoding=\"async\" alt=\"Von UI-Kit zu einem Design-System\" src=\"\/wp-content\/uploads\/751a8ec25b5c82496633f07c103cfe3d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Separate Layout-Sets f\u00fcr jede Plattform<\/i><\/p>\n<p>Traditionell haben wir mit den Herausforderungen begonnen, die eine Design-System l\u00f6sen k\u00f6nnte, und haben die Anforderungen f\u00fcr dessen Gestaltung formuliert. Neben der Erstellung einer einheitlichen visuellen Sprache, der Beschleunigung der Prototypen- und Entwicklungsphase sowie der allgemeinen Produktqualit\u00e4t war es von entscheidender Bedeutung, das Design so weit wie m\u00f6glich zu vereinheitlichen. Dies ist notwendig, um die Entwicklung neuer Funktionen gleichzeitig auf all unseren Plattformen zu erm\u00f6glichen: Web, iOS, Android, Smart TV, tvOS, Android TV, Windows 10, xBox One, PS4, Roku \u2014 ohne jede von ihnen einzeln bearbeiten zu m\u00fcssen. Und genau das haben wir erreicht!<\/p>\n<h2>Design \u2192 Daten<\/h2>\n<p>\nNachdem die grundlegenden Vereinbarungen zwischen den Produkt- und Entwicklungsteams getroffen waren, begannen wir mit der Auswahl des Technologie-Stacks und der Ausarbeitung der Details des gesamten Prozesses \u2013 von den Entw\u00fcrfen bis zur Markteinf\u00fchrung. Um den \u00dcbergang vom Design zur Entwicklung vollst\u00e4ndig zu automatisieren, haben wir den Ansatz mit einem Parser f\u00fcr die Parameter der Komponenten direkt aus den Sketch-Dateien mit den Entw\u00fcrfen untersucht. Es stellte sich heraus, dass es kompliziert und riskant ist, die ben\u00f6tigten Codeabschnitte zu finden und die erforderlichen Parameter zu extrahieren. Erstens m\u00fcssen die Designer \u00e4u\u00dferst vorsichtig mit der Benennung aller Schichten der Originaldatei umgehen, zweitens funktioniert dies nur f\u00fcr die einfachsten Komponenten, und drittens stellt die Abh\u00e4ngigkeit von der Technologie und der Code-Struktur des urspr\u00fcnglichen Sketch-Entwurfs die Zukunft des gesamten Projekts in Frage. Wir haben uns entschieden, an dieser Stelle auf eine Automatisierung zu verzichten. So wurde in dem Team f\u00fcr das Designsystem die erste Person eingef\u00fchrt, die die Designentw\u00fcrfe erh\u00e4lt und als Ergebnis Daten liefert, die alle Parameter der Komponenten beschreiben und hierarchisch nach der Methodologie des atomaren Designs angeordnet sind.<\/p>\n<p>Es blieb nur noch die Frage: Wo und wie speichern wir die Daten, wie \u00fcbergeben wir sie an die Entwicklung und wie interpretiert man sie auf allen von uns unterst\u00fctzten Plattformen? Der Abend wurde auf einmal viel spannender... Das Ergebnis der regelm\u00e4\u00dfigen Treffen der Arbeitsgruppe, bestehend aus Designern und Teamleitern jeder Plattform, waren Vereinbarungen \u00fcber Folgendes.<\/p>\n<p>Wir zerlegen das visuelle Design manuell in seine Einzelteile: Schriften, Farben, Transparenzen, Abst\u00e4nde, Rundungen, Icons, Bilder und Animationsdauern. Daraus erstellen wir Buttons, Eingabefelder, Checkboxen, Kreditkarten-Widgets usw. Den Styles jeder Ebene, mit Ausnahme der Icons, geben wir nicht-semantische Namen, zum Beispiel St\u00e4dtenamen, Namen von Nymphen, Pok\u00e9mon, Automarken\u2026 Hier gilt eine Regel \u2014 die Liste darf nicht enden, bevor die Styles ausgehen \u2014 das Show muss weitergehen! Mit der Semantik sollte man jedoch vorsichtig sein, um nicht gezwungen zu werden, einen mittleren Button zwischen \u201esmall\u201c und \u201emedium\u201c hinzuzuf\u00fcgen.<\/p>\n<h2>Visuelle Sprache<\/h2>\n<p>\nDie Entwickler haben dar\u00fcber nachgedacht, wie Daten gespeichert und \u00fcbertragen werden k\u00f6nnen, sodass es f\u00fcr alle Plattformen geeignet ist. Das Design-Team musste Benutzeroberfl\u00e4chenelemente entwerfen, die auf allen unterst\u00fctzten Ger\u00e4ten sowohl ansprechend aussehen als auch effizient funktionieren.<\/p>\n<p>Zuvor hatten wir bereits die meisten Designelemente in der Anwendung f\u00fcr Windows 10 getestet, die zu diesem Zeitpunkt eine neue Plattform f\u00fcr uns war, was bedeutete, dass eine Neuentwicklung und Gestaltung erforderlich war. Durch diese Arbeiten konnten wir die meisten Komponenten vorbereiten und testen sowie herausfinden, welche in die zuk\u00fcnftige Design-System von Ivi aufgenommen werden sollten. Ohne diese \"Spielwiese\" w\u00e4re eine solche Erfahrung nur durch zahlreiche Iterationen auf bereits funktionierenden Plattformen m\u00f6glich gewesen, was \u00fcber ein Jahr gedauert h\u00e4tte.<\/p>\n<p>Die Wiederverwendung identischer Komponenten auf verschiedenen Plattformen reduziert die Anzahl der Layouts und das Datenvolumen der Designsysteme erheblich. Daher musste das Design eine weitere Herausforderung meistern, die bisher in den Praktiken des Produktdesigns und der Entwicklung nicht behandelt wurde \u2013 wie beispielsweise, eine Taste f\u00fcr Telefone und Tablets f\u00fcr Fernseher wiederzuverwenden. Und wie geht man grunds\u00e4tzlich mit Schriftgr\u00f6\u00dfen und Elementen auf solch unterschiedlichen Plattformen um?<\/p>\n<p>Offensichtlich war es erforderlich, ein plattform\u00fcbergreifendes modulares Raster zu entwerfen, das uns die ben\u00f6tigten Gr\u00f6\u00dfen f\u00fcr Texte und Elemente f\u00fcr jede spezifische Plattform vorgibt. Als Ausgangspunkt f\u00fcr das Raster w\u00e4hlten wir die Gr\u00f6\u00dfe und Anzahl der Filmplakate, die wir auf dem jeweiligen Bildschirm sehen m\u00f6chten, und basierend darauf formulierten wir die Regel f\u00fcr den Aufbau der Grid-Spalten, wobei die Breite einer Spalte der Breite des Plakats entspricht. <\/p>\n<p><img decoding=\"async\" alt=\"Von UI-Kit zu einem Design-System\" src=\"\/wp-content\/uploads\/feef2d7bf3ed4b0e89da68e2d661966f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nJetzt m\u00fcssen alle gro\u00dfen Bildschirme auf die gleiche Gr\u00f6\u00dfe des Layouts gebracht und in das allgemeine Raster eingef\u00fcgt werden. Apple TV und Roku werden in der Gr\u00f6\u00dfe 1920 \u00d7 1080 entwickelt, Android TV \u2013 960 \u00d7 540, Smart TVs variieren je nach Anbieter, einige haben die gleiche Gr\u00f6\u00dfe, w\u00e4hrend andere 1280 \u00d7 720 betragen. Wenn die App auf Full HD-Bildschirmen gerendert und angezeigt wird, wird 960 mit 2 multipliziert, 1280 mit 1,33 und 1920 bleibt unver\u00e4ndert. <\/p>\n<p>Um die langweiligen Details zu \u00fcberspringen, sind wir zu dem Schluss gekommen, dass alle Bildschirme, einschlie\u00dflich Fernsehern, hinsichtlich der Elemente und ihrer Gr\u00f6\u00dfen von einem einzigen Design-Layout abgedeckt werden. Alle Fernseher stellen einen speziellen Fall des allgemeinen plattform\u00fcbergreifenden Rasters dar und bestehen aus f\u00fcnf oder sechs Spalten, \u00e4hnlich einem durchschnittlichen Tablet oder Desktop. Interessierte k\u00f6nnen die Details in den Kommentaren nachlesen.<\/p>\n<p><img decoding=\"async\" alt=\"Von UI-Kit zu einem Design-System\" src=\"\/wp-content\/uploads\/fd52207c32a33a1a44bebe19b9685bb7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Einheitliches UI f\u00fcr alle Plattformen<\/i><\/p>\n<p>Jetzt ben\u00f6tigen wir f\u00fcr die Gestaltung neuer Funktionen keine Layouts mehr f\u00fcr jede Plattform, einschlie\u00dflich der Anpassungsvarianten f\u00fcr jede von ihnen. Es reicht aus, ein Layout und seine Anpassungsf\u00e4higkeit f\u00fcr alle Plattformen und Ger\u00e4te mit beliebiger Breite zu zeigen: Telefone \u2013 320\u2013599, alles andere \u2013 600\u20131280. <\/p>\n<h2>Daten \u2192 Entwicklung<\/h2>\n<p>\nNat\u00fcrlich, so sehr wir uns auch einen einheitlichen Designansatz w\u00fcnschen, jede Plattform hat ihre eigenen einzigartigen Eigenschaften. Obwohl sowohl Web- als auch Smart TV-Anwendungen auf dem ReactJS + TypeScript-Stack basieren, wird die Anwendung f\u00fcr Smart TVs auf veralteten WebKit- und Presto-Clients ausgef\u00fchrt und kann daher keine gemeinsamen Stile mit dem Web verwenden. E-Mail-Newsletter hingegen m\u00fcssen mit tabellarischen Layouts arbeiten. Keine der Nicht-HTML-Plattformen verwendet oder plant den Einsatz von React Native oder \u00e4hnlichen Alternativen, da wir zu viele benutzerdefinierte Layouts mit komplexer Logik f\u00fcr Aktualisierungen, Bildern und Videos haben, was die Leistung beeintr\u00e4chtigen k\u00f6nnte. Daher ist die g\u00e4ngige Praxis \u2014 fertige CSS-Stile oder React-Komponenten bereitzustellen \u2014 f\u00fcr uns nicht geeignet. Stattdessen haben wir uns entschieden, die Daten im JSON-Format zu \u00fcbertragen und die Werte in einem abstrakten deklarativen Format zu beschreiben. <\/p>\n<blockquote><p>So wird die Eigenschaft <code>rounding: 8<\/code> vom Windows 10-Anwendungsclient in <code>CornerRadius=\"8\"<\/code>, im Web \u2014 <code>border-radius: 8px<\/code>, Android \u2014 <code>android:radius=\"8dp\"<\/code>, iOS \u2014 <code>self.layer.cornerRadius = 8.0<\/code>. <br \/>\nDie Eigenschaft <code>offsetTop: 12<\/code> kann vom gleichen Web-Client in unterschiedlichen F\u00e4llen als <code>top<\/code>, <code>margin-top<\/code>, <code>padding-top<\/code> oder <code>transform interpretiert werden.<\/code><\/p><\/blockquote>\n<p>\nDie Deklarativit\u00e4t der Beschreibung impliziert auch, dass die Plattform, falls technisch nicht in der Lage, bestimmte Eigenschaften oder deren Werte zu verwenden, diese ignorieren kann. In Bezug auf die Terminologie haben wir eine Art Esperanto-Sprache geschaffen: etwas aus Android, etwas aus SVG, etwas aus CSS. <\/p>\n<p>F\u00fcr den Fall, dass auf einer bestimmten Plattform Elemente anders dargestellt werden m\u00fcssen, haben wir die M\u00f6glichkeit geschaffen, die entsprechende Datengenerierung in Form einer separaten JSON-Datei zu \u00fcbermitteln. Zum Beispiel erfordert der Zustand \u201eim Fokus\u201c f\u00fcr Smart TVs eine \u00c4nderung der Textposition unter dem Poster, was bedeutet, dass dieser Komponente auf dieser Plattform im Wert der Eigenschaft \u201eAbstand\u201c die ben\u00f6tigten 8 Punkte Abstand enthalten wird. Auch wenn dies die Infrastruktur des Design-Systems komplizierter macht, gibt es uns dennoch eine zus\u00e4tzliche Freiheit und erm\u00f6glicht es uns, die visuelle \u201eUn\u00e4hnlichkeit\u201c der Plattformen selbst zu steuern, anstatt von der von uns geschaffenen Architektur abh\u00e4ngig zu sein.<\/p>\n<p><img decoding=\"async\" alt=\"Von UI-Kit zu einem Design-System\" src=\"\/wp-content\/uploads\/5aaf5d8b049e2c0ed2d3c94fc4929d59.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Piktogramme<\/h2>\n<p>\nIcons in a digital product are always a substantial and complex sub-project, often managed by a dedicated designer. There are usually many glyphs, each with several sizes and colors, and platforms typically require them in various formats. Therefore, there was no reason not to integrate all of this into a design system.<\/p>\n<p><img decoding=\"async\" alt=\"Von UI-Kit zu einem Design-System\" src=\"\/wp-content\/uploads\/a9adfa408bdd89f1b8e12c1a54505b10.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nGlyphs are loaded in vector SVG format, and color values are automatically replaced with variables. Client applications can access them in a ready-to-use state \u2014 in any format and color.<\/p>\n<h2>Vorschau<\/h2>\n<p>\nOn top of the JSON data, we developed a preview tool \u2014 a JS application that processes the JSON data through its markup and style generators in real time, displaying various variations of each component in the browser. Essentially, the preview acts just like a client application, working with the same data as the platform applications.<\/p>\n<p>Es ist am einfachsten, zu verstehen, wie ein bestimmtes Bauteil funktioniert, indem man damit interagiert. Daher haben wir uns entschieden, keine Tools wie Storybook zu verwenden und ein interaktives Vorschau zu erstellen \u2013 man kann es anfassen, darauf zeigen und klicken\u2026 Wenn ein neuer Bauteil in das Design-System integriert wird, erscheint er in der Vorschau, damit Plattformen eine Orientierungshilfe f\u00fcr dessen Implementierung haben.<\/p>\n<h2>Dokumentation<\/h2>\n<p>\nBasierend auf den Daten, die in Form von JSON an die Plattformen geliefert werden, wird automatisch die Dokumentation der Bauteile erstellt. Es wird eine Liste der Eigenschaften und der m\u00f6glichen Werttypen f\u00fcr jede davon beschrieben. Nach der Autogenerierung kann die Information manuell verfeinert und eine textuelle Beschreibung hinzugef\u00fcgt werden. Die Vorschau und die Dokumentation sind auf Ebene jedes Bauteils mit Querverweisen miteinander verbunden, und alle Informationen, die in die Dokumentation aufgenommen werden, sind f\u00fcr Entwickler in Form zus\u00e4tzlicher JSON-Dateien verf\u00fcgbar.<\/p>\n<h2>Deprecator<\/h2>\n<p>\nEine weitere Notwendigkeit ist die M\u00f6glichkeit, bestehende Komponenten im Laufe der Zeit auszutauschen und zu aktualisieren. Das Designsystem hat gelernt, den Entwicklern mitzuteilen, welche Eigenschaften oder sogar ganze Komponenten nicht verwendet werden d\u00fcrfen und diese zu entfernen, sobald sie auf allen Plattformen nicht mehr genutzt werden. Obwohl in diesem Prozess noch viel manuelle Arbeit steckt, stehen wir nicht still.<\/p>\n<h2>Kundenentwicklung<\/h2>\n<p>\nZweifellos war die Umsetzung der Daten des Designsystems in den Code all unserer unterst\u00fctzten Plattformen der komplexeste Schritt. W\u00e4hrend modulare Raster im Web nichts Neues sind, hatten Entwickler nativer mobiler Anwendungen f\u00fcr iOS und Android eine Menge Arbeit, bevor sie herausfanden, wie sie damit umgehen k\u00f6nnen. <\/p>\n<p>F\u00fcr das Design von iOS-Anwendungsoberfl\u00e4chen verwenden wir zwei grundlegende Mechanismen, die iviUIKit bereitstellt: die freie Anordnung von Elementen und die Anordnung in Elementkollektionen. Wir nutzen VIPER, und die gesamte Interaktion mit iviUIKit konzentriert sich auf das View, w\u00e4hrend der Gro\u00dfteil der Interaktion mit dem Apple UIKit in iviUIKit angesiedelt ist. Die Gr\u00f6\u00dfen und Positionen der Elemente werden in Kolumnen und syntaktischen Konstruktionen festgelegt, die \u00fcber den nativen Constraints des iOS SDK funktionieren und sie anwenderfreundlicher machen. Dies hat uns das Leben bei der Arbeit mit UICollectionView erheblich erleichtert. Wir haben mehrere anpassbare Wrapper f\u00fcr Layouts geschrieben, auch f\u00fcr ziemlich komplexe. Der Client-Code ist auf ein Minimum reduziert und ist deklarativ geworden. <\/p>\n<p>Zur Generierung von Stilen im Android-Projekt verwenden wir Gradle, um die Daten des Designsystems in XML-Formatstile umzuwandeln. Dabei haben wir mehrere Generatoren auf unterschiedlichem Niveau:<\/p>\n<ul>\n<li><b>Basis<\/b>. Sie parsen die Daten der primitiven Generatoren f\u00fcr h\u00f6herstufige Generatoren.<\/li>\n<li><b>Ressourcen<\/b>. Diese laden Bilder, Icons und andere Grafiken herunter.<\/li>\n<li><b>Komponenten<\/b>. Diese werden f\u00fcr jede Komponente geschrieben, wobei die Eigenschaften beschrieben werden und wie sie in Stile \u00fcbersetzt werden.<\/li>\n<\/ul>\n<p><\/p>\n<h2>App-Releases<\/h2>\n<p>\nNachdem die Designer eine neue Komponente entworfen oder eine bestehende \u00fcberarbeitet haben, flie\u00dfen diese \u00c4nderungen in das Designsystem ein. Die Entwickler jeder Plattform passen ihre Codegenerierung an, um die \u00c4nderungen zu unterst\u00fctzen. Danach kann er bei der Implementierung neuer Funktionen genutzt werden, in denen diese Komponente erforderlich ist. So erfolgt die Interaktion mit dem Designsystem nicht in Echtzeit, sondern lediglich zum Zeitpunkt des Builds neuer Releases. Dieser Ansatz erlaubt es auch, den Daten\u00fcbertragungsprozess besser zu kontrollieren und die Funktionsf\u00e4higkeit des Codes in Kundenprojekten zu gew\u00e4hrleisten.<\/p>\n<h2>Ergebnisse<\/h2>\n<p>\nBald j\u00e4hrt sich die Einf\u00fchrung des Designsystems als Teil der Infrastruktur, die die Entwicklung der Online-Videoplattform Ivi unterst\u00fctzt, und man kann bereits einige Schlussfolgerungen ziehen: <\/p>\n<ul>\n<li>Es handelt sich um ein gro\u00dfes und anspruchsvolles Projekt, das st\u00e4ndige, dedizierte Ressourcen erfordert.<\/li>\n<li>Dies hat es uns erm\u00f6glicht, unsere einzigartige plattform\u00fcbergreifende visuelle Sprache zu schaffen, die den Anforderungen des Online-Videodienstes gerecht wird.<\/li>\n<li>Wir haben keine visuell und funktional zur\u00fcckbleibenden Plattformen mehr.<\/li>\n<\/ul>\n<p>\nVorschau der Komponenten des Ivi-Designsystems \u2014 <noindex><a rel=\"nofollow\" href=\"http:\/\/design.ivi.ru\">design.ivi.ru<\/a><\/noindex><br \/>\n<br \/>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ivi\/blog\/456854\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e\u043f\u044b\u0442 \u043e\u043d\u043b\u0430\u0439\u043d-\u043a\u0438\u043d\u043e\u0442\u0435\u0430\u0442\u0440\u0430 \u0418\u0432\u0438 \u041a\u043e\u0433\u0434\u0430 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 2017 \u0433\u043e\u0434\u0430 \u043c\u044b \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u0437\u0430\u0434\u0443\u043c\u0430\u043b\u0438\u0441\u044c \u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0434\u0438\u0437\u0430\u0439\u043d\u0430 \u0432 \u043a\u043e\u0434, \u043e\u0431 \u044d\u0442\u043e\u043c \u0443\u0436\u0435 \u043c\u043d\u043e\u0433\u0438\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u0438 \u043a\u0442\u043e-\u0442\u043e \u0434\u0430\u0436\u0435 \u0434\u0435\u043b\u0430\u043b. \u041e\u0434\u043d\u0430\u043a\u043e, \u043e\u0431 \u043e\u043f\u044b\u0442\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0445 \u0434\u0438\u0437\u0430\u0439\u043d-\u0441\u0438\u0441\u0442\u0435\u043c \u0438 \u043f\u043e \u0441\u0435\u0439 \u0434\u0435\u043d\u044c \u043c\u0430\u043b\u043e \u0447\u0442\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0430 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0445 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0446\u0435\u043f\u0442\u043e\u0432, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0445 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0434\u0438\u0437\u0430\u0439\u043d\u0430 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-35549","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041e\u043f\u044b\u0442 \u043e\u043d\u043b\u0430\u0439\u043d-\u043a\u0438\u043d\u043e\u0442\u0435\u0430\u0442\u0440\u0430 \u0418\u0432\u0438 \u041a\u043e\u0433\u0434\u0430 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 2017 \u0433\u043e\u0434\u0430 \u043c\u044b \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u0437\u0430\u0434\u0443\u043c\u0430\u043b\u0438\u0441\u044c \u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0434\u0438\u0437\u0430\u0439\u043d\u0430 \u0432 \u043a\u043e\u0434, \u043e\u0431 \u044d\u0442\u043e\u043c \u0443\u0436\u0435 \u043c\u043d\u043e\u0433\u0438\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u0438 \u043a\u0442\u043e-\u0442\u043e \u0434\u0430\u0436\u0435 \u0434\u0435\u043b\u0430\u043b. \u041e\u0434\u043d\u0430\u043a\u043e, \u043e\u0431 \u043e\u043f\u044b\u0442\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0445 \u0434\u0438\u0437\u0430\u0439\u043d-\u0441\u0438\u0441\u0442\u0435\u043c \u0438 \u043f\u043e \u0441\u0435\u0439 \u0434\u0435\u043d\u044c \u043c\u0430\u043b\u043e \u0447\u0442\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0430 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0445 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0446\u0435\u043f\u0442\u043e\u0432, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0445 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0434\u0438\u0437\u0430\u0439\u043d\u0430\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/ot-ui-kit-do-dizajn-sistemy\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041e\u0442 UI-kit \u0434\u043e \u0434\u0438\u0437\u0430\u0439\u043d-\u0441\u0438\u0441\u0442\u0435\u043c\u044b | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e\u043f\u044b\u0442 \u043e\u043d\u043b\u0430\u0439\u043d-\u043a\u0438\u043d\u043e\u0442\u0435\u0430\u0442\u0440\u0430 \u0418\u0432\u0438 \u041a\u043e\u0433\u0434\u0430 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 2017 \u0433\u043e\u0434\u0430 \u043c\u044b \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u0437\u0430\u0434\u0443\u043c\u0430\u043b\u0438\u0441\u044c \u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0434\u0438\u0437\u0430\u0439\u043d\u0430 \u0432 \u043a\u043e\u0434, \u043e\u0431 \u044d\u0442\u043e\u043c \u0443\u0436\u0435 \u043c\u043d\u043e\u0433\u0438\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u0438 \u043a\u0442\u043e-\u0442\u043e \u0434\u0430\u0436\u0435 \u0434\u0435\u043b\u0430\u043b. \u041e\u0434\u043d\u0430\u043a\u043e, \u043e\u0431 \u043e\u043f\u044b\u0442\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0445 \u0434\u0438\u0437\u0430\u0439\u043d-\u0441\u0438\u0441\u0442\u0435\u043c \u0438 \u043f\u043e \u0441\u0435\u0439 \u0434\u0435\u043d\u044c \u043c\u0430\u043b\u043e \u0447\u0442\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0430 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0445 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0446\u0435\u043f\u0442\u043e\u0432, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0445 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0434\u0438\u0437\u0430\u0439\u043d\u0430\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/ot-ui-kit-do-dizajn-sistemy\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:04:58+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:04:58+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Von UI-Kits zu Designsystemen | ProHoster","description":"Die Erfahrung des Online-Kinos Ivi. Als wir Anfang 2017 zum ersten Mal \u00fcber die Entwicklung eines eigenen Systems zur Umsetzung von Design in Code nachdachten, hatten dar\u00fcber bereits viele gesprochen und einige hatten sogar damit begonnen. \u00dcber die Erfahrung beim Aufbau plattform\u00fcbergreifender Designsysteme ist bis heute jedoch wenig bekannt, und es gibt nur wenige verst\u00e4ndliche und erprobte Rezepte, die Technologien und Methoden f\u00fcr eine solche Transformation des Designimplementierungsprozesses beschreiben.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/ot-ui-kit-do-dizajn-sistemy","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041e\u0442 UI-kit \u0434\u043e \u0434\u0438\u0437\u0430\u0439\u043d-\u0441\u0438\u0441\u0442\u0435\u043c\u044b | ProHoster","og:description":"\u041e\u043f\u044b\u0442 \u043e\u043d\u043b\u0430\u0439\u043d-\u043a\u0438\u043d\u043e\u0442\u0435\u0430\u0442\u0440\u0430 \u0418\u0432\u0438 \u041a\u043e\u0433\u0434\u0430 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 2017 \u0433\u043e\u0434\u0430 \u043c\u044b \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u0437\u0430\u0434\u0443\u043c\u0430\u043b\u0438\u0441\u044c \u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0434\u0438\u0437\u0430\u0439\u043d\u0430 \u0432 \u043a\u043e\u0434, \u043e\u0431 \u044d\u0442\u043e\u043c \u0443\u0436\u0435 \u043c\u043d\u043e\u0433\u0438\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u0438 \u043a\u0442\u043e-\u0442\u043e \u0434\u0430\u0436\u0435 \u0434\u0435\u043b\u0430\u043b. \u041e\u0434\u043d\u0430\u043a\u043e, \u043e\u0431 \u043e\u043f\u044b\u0442\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0445 \u0434\u0438\u0437\u0430\u0439\u043d-\u0441\u0438\u0441\u0442\u0435\u043c \u0438 \u043f\u043e \u0441\u0435\u0439 \u0434\u0435\u043d\u044c \u043c\u0430\u043b\u043e \u0447\u0442\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0430 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0445 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0446\u0435\u043f\u0442\u043e\u0432, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0445 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0434\u0438\u0437\u0430\u0439\u043d\u0430","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/ot-ui-kit-do-dizajn-sistemy","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:04:58+00:00","article:modified_time":"2019-10-31T19:04:58+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"35549","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 23:44:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:00:24","updated":"2026-01-21 23:44:19"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/35549","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=35549"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/35549\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=35549"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=35549"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=35549"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}