ユニバーサル モード (静的ページとしてデプロイ) で実行されている nuxt サイトに画像ギャラリーがあり、そこにblueimp ギャラリー(ライトボックス) を追加したいと考えています。
Javascript を配置する方法はいくつかあります ( ./static
、./plugins
または./assets
)。そこに置くものはすべてwebpack(圧縮、長期クライアントキャッシュの一意のID)によって処理されるため、assetsフォルダーを使用することをお勧めします。
blueimp はページのレンダリング中は重要ではなく、インタラクション (画像をクリックしてライトボックスを開く) の間のみ重要であるため、javascript はページの終了直前にロードする必要があります。</body>
もう 1 つのことは、専用ページでのみ blueimp が必要であるため、可能であれば、blueimp-gallery.min.js とその css を他のページで提供しないことです。
JS
static フォルダーのスクリプトを head に含めて ( head を使用しないように ;) )yarn dev
追加することにより、モード (SSR をサポートする)で実行しました。body: true
本番環境では (静的ページとして)、機能しません。パラメータssr: false
は効果がないようです。また、テンプレートに画像コンポーネントを追加<client-side>
しても役に立ちません。
質問 1:これをクライアント側の関数に書き直すのを手伝ってくれたらうれしいです (おそらく、created() やmounted() のような別のフックを使用して?)
<script>
export default {
head: {
script: [
{
src: 'js/blueimp-gallery/blueimp-gallery.min.js',
body: true,
ssr: false,
},
],
},
},
</script>
CSS
以下のコードを使用して、静的フォルダーから css ファイルを読み込むことができます。残念ながら、これにより追加のリクエストが追加されます。
<template>
...
</template>
<script>
export default {
head: {
style: [{ src: "blueimp-gallery/css/blueimp-gallery.min.css", head: true }],
},
}
</script>
@import でロードすると、assets フォルダーからフェッチされてページに埋め込まれますが、これは素晴らしいことですが、すべてのページに埋め込まれています。
<style>
@import '~/assets/styles/blueimp-gallery/css/blueimp-gallery.min.css';
</style>
ここで別の方法を見つけました。これはおそらく最良の方法です: NUXT レイアウトの 'assets' ディレクトリから css ファイルをロードする
link: [{ rel: 'stylesheet', href: require('~/assets/blueimp-gallery/css/blueimp-gallery.min.css')}],
質問 2: CSS を 1 つのページに埋め込むための改善されたソリューションをお持ちですか?
私は初心者なので、解決策がある場合は、状況を少し説明した例をいくつか追加してください。