怠惰な負荷画像に対する新しいデッドシンプルなオープンソースWebコンポーネント



怠惰な良い女の子または男の子.写真でBrianna Santellan on Unsplash
先月、私はブログのポストを公開しましたが、その後にどのようにしてそれが判明したのか、実際に開発中に何度か自分の薬を使わなければなりませんでしたDeckDeckGo , プレゼンテーションのための我々の今後のオープンソースエディタ.
だからこそ私たちは出版に満足しているnpm 今日新しい死者は単純
オープンソースのWebコンポーネントStencilJS , どのフレームワーク(またはnone)を使用していても、どんな現代的なWebプロジェクトの怠惰な負荷イメージにでも😃

でもどうして?



しかしなぜ怠惰な負荷画像に別のWebコンポーネント?
JavaScriptの2行を書くだけで簡単なときに、なぜ私たちが開発し、怠惰なロードイメージに新しいWebコンポーネントを公開しなければならなかったのかを問うことができますIntersection Observer API , 怠惰な読み込みをサポートするイメージを既に持っていること🤔
実際、前に述べたように、Webコンポーネントを使ったプレゼンテーション用のオープンソースのWebエディタを開発しています.編集したデータを保存するには、プレゼンテーションのスライドをデータベースに保存する必要があります.我々が速度のための我々のツールを開発しているように、すべての構成要素と特にイメージは怠惰にロードされなければなりません.その目的のために、我々はsrc 画像の属性は、“オンとオフ”を微調整するときに正確に画像をフェッチする必要がありますし、それは私たちの問題の根本的な原因は、ブラウザを指示します.
我々が内容を保存していて、操作していたのでimg DOMの要素は、私たちは常に我々のデータベースの“ロードされていない状態”では、余分な機能と再帰のカップルを追加することなく、常に画像を保存していたことを確認することができなかった、我々はそれがプロセスに複雑さと計算時間を追加したとして実装することに同意しなかった.だからこそ、私たちは、カスタムのWebコンポーネントを使用して怠惰なローディングプロセスを分離するため、常にいつでも余分なチェックをせずに正しい状態で我々のデータベースからのイメージとSAVを読み込むことができるようになったのです.

おかしいGIFしかし、それは私たちに実際に何があったかを理解するために3日かかった
解決策😂

フレームワークとの統合


次のNPMコマンドを使用して、プロジェクトにコンポーネントをインストールできます.
npm i @deckdeckgo/lazy-img --save
一旦インストールされるならば、あなたはステンシルで説明されるように、使用しているフレームワークの必要に応じてそれを統合することができましたdocumentation .
最後に、プロジェクトに簡単にコンポーネントを使用できますimg タグ付きのタグdeckgo-lazy-img (src and alt あなたが使用する必要がありますimg-src and img-alt ).
要約すると、次のようにコンポーネントを使用できます.
<deckgo-lazy-img
    img-src="/assets/img/your_image.png"
    img-alt="My lazy loaded image">
</deckgo-lazy-img>
それは、あなたのイメージは怠惰ロードされます😄

フレームワークなしの統合


また、フレームワークが使用されないプロジェクトでもコンポーネントを使用できます.そのためには、例えばcdnからコンポーネントを使用しますUnpkg , そして、上記のようにそれを消費してください.
繰り返しますが、次のようにできます.
<!DOCTYPE html>
<html lang="en">
<head>
  <script src="https://unpkg.com/@deckdeckgo/lazy-img@latest/dist/deckdeckgo-lazy-img.js"></script>
</head>
<body>
  <deckgo-lazy-img
    img-src="/assets/img/your_image.png"
    img-alt="My lazy loaded image">
  </deckgo-lazy-img>
</body>
</html>

反応


この小さなブログ記事が公開された後、私はフィードバックのカップルを受信しましたresponsive images 属性を使用するsrcset and sizes . もちろん、私はそれが素晴らしい考えだったので、私はすでにそれを実装し、NPM🤪

ケーキのチェリー🍒🎂


私の小さなブログ記事で一度だけ、ケーキには1つ以上の桜があります😉
まず第一に、コンポーネントはオープンソースです、そして、コードは我々の利用できますGithub repo , したがって、それにアクセスすることができますし、お客様のニーズに応じてそれを改善する.
第二に、私は私たちのすべての属性と機能を文書化するために少しの時間を取ったdocumentation website .
最後に、交差点のoberserverよりも早く画像を読み込むために「手動で」をトリガーしたい場合があります.そのために、コンポーネントは非同期メソッドlazyLoad() そうすればそうする😇
const element = document.querySelector('deckgo-lazy-img');
await element.lazyLoad();
私は、この新しい死んだ簡単なWebコンポーネントはあなたを助けるかもしれないし、任意のフィードバックや改善のアイデアを私をpingすることを躊躇しないことを願って、特別に我々は本当にすぐに公開できるようになる可能性があります新しいスーパーデューパークールな機能で“本物のために”それを使用しているように😜
無限に🚀
ダビデ