Web-componentを使用したエンタープライズ・コンポーネント・ライブラリの構築
4162 ワード
コンポーネントライブラリの現状
フロントエンドの現在の主流のフレームワークはreact,vuejs,angularなどである.
通常、ant-designはreactベースのUIコンポーネントライブラリであり、elementUIはvuejsベースのコンポーネントライブラリであるなど、コンポーネントライブラリを構築するときは、あるフレームワークに基づいて構築されます.
現在、コミュニティにはvuejsコンポーネントがreactコンポーネントに変換されるなど、フレームワーク間の変換サービスを提供するツールがあります.しかし、結局は異なるフレームワークであり、異なる基準がある.そのため、フレームワークapiが変動すると、変換ロジックを書き換える必要があります.明らかに柔軟ではありません.そのため、この状況については議論しません.
会社としては、論理は同じですが、異なるフレームワークに異なるコンポーネントライブラリを書く必要があります.
また、フレームワークがアップグレードされる場合、例えば1.xを2にアップグレードxは、対応するコンポーネントライブラリをアップグレードする必要があります.会社のコンポーネントライブラリがたくさんある場合(vuejs、react、angularなど)、このアップグレードの確率はもっと大きくなります.
Web-componentとは?
では、もっと良い案はありませんか.一度に書いて、あちこちで使っていますか.
答えはweb componentを借りることです.
Web Componentsは、開発者が多重化可能なコンポーネントを作成できるように、
Web componentsはw 3 c組織によって推進されるため、近い将来ブラウザの標準化になる可能性が高い.
Web Componentsは主に以下の4つの部分から構成されています. Custom Elements–新しいhtml要素を定義するapi Shadow DOM – Encapsulated DOM and styling, with composition HTML Imports – Declarative methods of importing HTML documents into other documents HTML Templates–The
フロントエンドの現在の主流のフレームワークはreact,vuejs,angularなどである.
通常、ant-designはreactベースのUIコンポーネントライブラリであり、elementUIはvuejsベースのコンポーネントライブラリであるなど、コンポーネントライブラリを構築するときは、あるフレームワークに基づいて構築されます.
現在、コミュニティにはvuejsコンポーネントがreactコンポーネントに変換されるなど、フレームワーク間の変換サービスを提供するツールがあります.しかし、結局は異なるフレームワークであり、異なる基準がある.そのため、フレームワークapiが変動すると、変換ロジックを書き換える必要があります.明らかに柔軟ではありません.そのため、この状況については議論しません.
会社としては、論理は同じですが、異なるフレームワークに異なるコンポーネントライブラリを書く必要があります.
また、フレームワークがアップグレードされる場合、例えば1.xを2にアップグレードxは、対応するコンポーネントライブラリをアップグレードする必要があります.会社のコンポーネントライブラリがたくさんある場合(vuejs、react、angularなど)、このアップグレードの確率はもっと大きくなります.
Web-componentとは?
では、もっと良い案はありませんか.一度に書いて、あちこちで使っていますか.
答えはweb componentを借りることです.
Web Componentsは、開発者が多重化可能なコンポーネントを作成できるように、
w3c
のHTMLとDOMを追加した一連の特性です.Web componentsはw 3 c組織によって推進されるため、近い将来ブラウザの標準化になる可能性が高い.
Web Componentsは主に以下の4つの部分から構成されています.
element, which allows documents to contain inert chunks of DOM
web-component
web components ?
,web components w3c , 。
web components api , ,
, js 。
。
web components :
, web components
は です.
しかし、web componentsのapiは に なので、オリジナルのapiでweb componentsを するのは に で、まるであなたが オリジナルのcanvas apiでゲームを しているようです.
Webコンポーネントの を するためのライブラリについて します.
polymer
polymerは が した のweb componment ライブラリで、それはもう も のことです.
Build modern apps using web components
はpolymer
stencil
stencilはpolymerの に れたライブラリです. の にPolymer Summit 2017の に、ここにアドレスUsing Web Components in Ionic - Polymer Summit 2017を り けます.
Stencil is a tool developers use to create Web Components with some powerful features baked in, but it gets out of the way at runtime.
ではPowerful featuresは に を していますか?
Virtual DOM
Async rendering (inspired by React Fiber)
Reactive data-binding
TypeScript
JSX
Web compoenntを するためのtoolでもあります. いは がより くの (Reactive data-binding,Type Script,JSX,virtual dom)とより い (virtual dom,Async rendering)を したことだ.
い はすでに したかもしれませんが、 はVirtual DOMを にして、 にして、 いありません!Virtual DOMは、 が のdomに を つ がないように、 のdomへのマッピングを しています.このレベルでは です.
dom のdiff,diff info patchからreal dom( )へのプロセスから, である.
stencilでweb componentsを する は、 のようなものです.import { Component, Prop, State } from '@stencil/core';
@Component({
tag: 'my-component',
styleUrl: 'my-component.scss'
})
export class MyComponent {
// Indicate that name should be a property on our new component
@Prop() first: string;
@Prop() last: string;
@State() isVisible: boolean = true;
render() {
return (
Hello, my name is {this.first} {this.last}
);
}
}
Demo
これは がstenciljs+storybookに づいて いた さな です.クローンを して を することができます.
duiba-components
このようにして されたエンタープライズ・コンポーネント・ライブラリにより、ユーザー( ビジネス・パーティ)のテクノロジー・スタックを することなく、 なるビジネス・ラインに コンポーネント・ライブラリを に できます.
、vue 1をvue 2にアップグレードするなど、ビジネス のフレームワークのアップグレードは、コンポーネントライブラリで できます.
es が に すれば、web componentsなどの も に し、フレームワークのない が すると できる.
フレームワークがありません.ライブラリを しないわけではありません.
ツールライブラリを するだけで な コンポーネントを することができ、babelのような も なく、さまざまなpolyfillも ありません. は せだろうが、 ながらこのような は しないが、この に いのも らしい.