Extras
extras
には、Stencilの新しい/実験的な機能を有効にするオプションが含まれています。
機能のランタイムを追加したり削除したりするオプションが含まれており、ポリフィルへの操作を必要とします。例えば、Slotポリフィルを使った場合、すべてのDOM APIが完全にポリフィルされるわけではありません。
例えば、Slotポリフィルを使用した場合、全てのDOM APIが完全にポリフィルされるわけではありません。すべてのユーザーが追加のランタイムを必要としているわけではないので、これらのほとんどはオプトインです。
例えば、Slotポリフィルを使用する場合、すべてのDOM APIが完全にポリフィルされるわけではありません。 全てのユーザーが追加のランタイムを必要とするわけではないため、これらのほとんどはオプトインです。
デフォルトでは、StencilはIE11、Edge 18以下(Chromiumに移行する前のEdge)およびSafari 10では機能しません。レガシーブラウザをサポートするには、ブラウザでポリフィルをダウンロードして実行する必要があります。extras
設定を使用することで、アプリはこれらの追加のランタイム設定をオプトインできます。
例は supporting レガシーブラウザをサポートするextras
設定例です:
export const config: Config = {
buildEs5: 'prod',
extras: {
cssVarsShim: true,
dynamicImportShim: true,
shadowDomShim: true,
safari10: true,
scriptDataOpts: true,
appendChildSlotFix: false,
cloneNodeFix: false,
slotChildNodesFix: true,
}
};
注:この例ではレガシーブラウザをサポートする必要があるため、buildEs5:'prod'
も設定で設定されています。詳細については、buildEs5 configを参照してください。
appendChildSlotFix
Slotポリフィルは、デフォルトではappendChild()
を更新しないため、Shadow DOMのように新しい子ノードを正しい子スロットに追加します。これは、必要な人のためのオプトインポリフィルです。
cloneNodeFix
ランタイムは、デフォルトではSlotポリフィルを使用するコンポーネントを複製するときに、cloneNode()
をポリフィルしません。これは、必要な人のためのオプトインポリフィルです。
cssVarsShim
レガシーブラウザでCSSカスタムプロパティを使うためのpolyfillやshimを含めます。レガシービルドのみデフォルトはtrue
です。ESMビルドにはcss vars shimは含まれません。これは、レガシービルドのオプトアウトポリフィルです。
これをfalse
に設定すると、レガシービルドに"フォールバック"プロパティを手動で提供する必要があります。例えば次のcssでは、IE11のcss variablesはポリフィルされないため、開発者はcss variablesの直前に手動でフォールバックを提供する必要があります。
div {
color: blue; /* IEで使用される */
color: var(--color); /* モダンブラウザで使用される */
}
dynamicImportShim
動的なimport()
shimです。これは、Edge18以下およびFirefox67以下でのみ必要です。Edge 18以下(Chromiumに移行する前のEdge)をサポートする必要がない場合は、dynamicImportShim
をfalse
に設定することをお勧めします。デフォルトは
false
です。
lifecycleDOMEvents
コンポーネントのライフサイクルイベントをディスパッチします。デフォルトではこれらのイベントはディスパッチされませんが、true
に設定するとこれらのイベントをwindow
でリッスンできます。
主にテストで使用されます。
Event Name | Description |
---|---|
stencil_componentWillLoad |
各コンポーネントのcomponentWillLoad に対してディスパッチされます。 |
stencil_componentWillUpdate |
各コンポーネントのcomponentWillUpdate に対してディスパッチされます。 |
stencil_componentWillRender |
各コンポーネントのcomponentWillRender に対してディスパッチされます。 |
stencil_componentDidLoad |
各コンポーネントのcomponentDidLoad に対してディスパッチされます。 |
stencil_componentDidUpdate |
各コンポーネントのcomponentDidUpdate に対してディスパッチされます。 |
stencil_componentDidRender |
各コンポーネントのcomponentDidRender に対してディスパッチされます。 |
safari10
safari 10は<script type="module">
でESモジュールをサポートしていますが、<script nomodule>
は実装されていませんでした。safari10
がfalse
に設定されている場合、ランタイムはsafari 10のサポートを適用しません。もしアプリケーションがsafari 10をサポートする必要がない場合は、この値をfalse
に設定することをお勧めします。デフォルトは false
です。
scopedSlotTextContentFix
An experimental flag that when set to
true
, aligns the behavior of invoking the
textContent
getter/setter on a scoped component to act more like a component that uses the shadow DOM. Specifically, invoking
textContent
on a component will adhere to the return values described in
MDN's article on textContent. Defaults to false
.
scriptDataOpts
実際の<script>
要素のdata-opts
プロパティにデータを割り当てることが可能であり、そのデータはStencilの最初の自動実行に渡されます。この機能は非常に特殊なケースでのみ必要とされ、ほとんどの場合必要とされません。false
に設定すると、このデータは読み込まれません。デフォルトは false
です。
shadowDomShim
もしtrue
で有効にすると、shadow dom shimが必要かどうかをチェックします。しかし、shadow dom がすでにブラウザでネイティブにサポートされていると判断された場合はshimを要求しません。もしfalse
に設定すると、すべての shadow domテストを回避します。アプリが IE11 や Edge 18 以下をサポートする必要がない場合は、shadowDomShim
をfalse
に設定することを推奨します。デフォルトは
false
です。
slotChildNodesFix
shadow domをサポートしていないブラウザ(IE11とEdge 18以下)では、slotがポリフィルされて同じ動作をシミュレートします。ただし、ホスト要素のchildNodes
とchildren
ゲッターは、デフォルトのスロットの子ノードと要素のみを表すようには修正されません。デフォルトは
false
です。
Contributors
Thanks for your interest!
We just need some basic information so we can send the guide your way.