LitElement 3.0 & lit-html 2.0: 早期プレビューリリース
LitElementとlit-htmlの次期メジャーバージョンをプレビューしましょう。
本日、私たちの主要なライブラリであるLitElementとlit-htmlの次期メジャーバージョンの最初のプレビューリリースを公開します。
これらのリリースには、私たちが意図している破壊的変更のほとんどと、以前のバージョンから引き継ぎたい機能のほとんどが含まれています。これらはまだ機能が完全ではなく、APIも完全に安定していません。特に、IE11のようなレガシーブラウザや、Webコンポーネントポリフィルを必要とするブラウザはまだサポートされていません。
動機
私たちは現在のバージョンのライブラリに非常に満足しています。高速で、小さく、安定しています(やった!)。ある意味では、破壊的変更を加える必要性はあまりありません。私たちは軽々しく破壊的変更を行うわけではありません。しかし、LitElementで構築されたコンポーネントとアプリケーションのユーザーエクスペリエンスを向上させると考えられるいくつかの説得力のある変更理由があります。
パフォーマンス
いくつかのブラウザバグの回避コードとカスタマイズ抽象化が、私たちがやりたい最適化を妨げていることがわかりました。
サイズ
同じコードと広範な公開APIには、バイト数が必要です。私たちは常にライブラリを小さくする方法を見つけたいと思っています。
機能とAPIのクリーンアップ
一部の機能は現在のアーキテクチャでは費用対効果の高い方法で追加することが困難であるか、破壊的変更なしには本当に改善することができません。
サーバーサイドレンダリング
lit-htmlには非常に柔軟でカスタマイズ可能なAPIがあり、ある意味では単一のテンプレートシステムというよりもテンプレートシステム構築キットです。しかし、この柔軟性によってSSRが複雑になり、サーバーでレンダリングされたHTMLがテンプレートにどのようにマップされるかについて、推測する必要が生じます。SSRは、デフォルトのカスタマイズされていないlit-htmlでのみ適切に機能するため、カスタマイズを制限することでSSRの信頼性が向上します。いずれにしても、カスタマイズAPIを使用する開発者はごくわずかでした。
また、DOMへのアクセスを制限することにより、ディレクティブAPIをSSR互換にしたいと考えています。
変更点
これらは新しいメジャーバージョンであるため、いくつかの破壊的な変更がありますが、ユーザーへの混乱を最小限に抑えたいと考えています。破壊的な変更は、ほとんどのユーザーに影響を与えないか、機械的な変更(インポートの変更など)のみを必要とするように制限しました。
変更の詳細については、README (LitElement、lit-html) およびCHANGELOG (LitElement、lit-html) を参照してください。
最も重要な変更点
lit-htmlの構文のカスタマイズは、直接サポートされなくなりました。templateFactoryおよびTemplateProcessor APIは削除されました。
より優れた最小化と将来の進化を容易にするために、公開APIが最小化されました。
lit-htmlディレクティブAPIは、クラスベースでディレクティブインスタンスを永続化するように変更されました。ディレクティブは、より簡単に記述でき、SSR互換をより簡単にすることができます。
LitElementデコレーターは、メインモジュールからエクスポートされなくなりました。個別に、または新しい
lit-element/decorators.js
モジュールからインポートする必要があります。これは、デコレーターを使用しないユーザーにとってアプリのサイズが小さくなることを意味し、現在のTC39 JavaScript提案が到着したときに実装する新しいデコレーターへの道を開きます。lit-htmlは、テンプレートの結果やディレクティブなどの特別なオブジェクトを検出するために、
instanceof
またはモジュールレベルのWeakMapsを使用しなくなったため、単一のアプリでのlit-htmlの複数のコピーの互換性が向上するはずです。npmパッケージの重複排除を推奨しますが、より多くのケースが機能するようになります。Safari 12には重大なテンプレートリテラルバグがあり、lit-htmlでは回避されなくなりました。Safari 12をサポートする場合は、テンプレートリテラルをES5相当にコンパイルする必要があります。babel-preset-envは、壊れたバージョンのSafariに対してすでにこれを行っていることに注意してください。
変更ログには、より小さな変更がリストされています。全体として、これらのバージョンがほとんどのユーザーにとってドロップイン置換であること、またはデコレーターのインポートの更新のみを必要とすることを願っています。
インストール
実行
npm i lit-element@next-major
および/または
npm i lit-html@next-major
フィードバックの送信
LitElementとlit-htmlの次期バージョンをモノレポに移行するプロセスを行っています。[lit-html]
または[lit-element]
のプレフィックスを使用して、現在のlit-htmlリポジトリに問題を提出してください。プレリリースと同様に、修正する必要のある一般的な問題が発生すると予想されます。最初に問題を検索してください。次期メジャーバージョンの問題には、ラベルlit-nextが付けられます。
次は何ですか
次のプレビューリリースでは、ブラウザとポリフィルのサポート、特にIE11に焦点を当てます。