nuxt常用組件庫html-validator應用解析

html-validator

主要用于自動驗證nuxt服務器呈現的HTML(SSR和SSG),以檢測可能導致水合錯誤的HTML常見問題,有助于減少水合錯誤,檢測常見的可訪問性錯誤。

安裝

npx nuxi@latest module add html-validator

配置

若自動更新nuxt.config.ts配置文件失敗,可手動添加下面代碼:

nuxt3

defineNuxtConfig({modules: ['@nuxtjs/html-validator',//其他配置項]})

nuxt2.9+

 export default {buildModules: ['@nuxtjs/html-validator']}

nuxt2

 export default {// Install @nuxtjs/html-validator as dependency instead of devDependencymodules: ['@nuxtjs/html-validator']}

使用

html-validator有四個選項

1.usePrettier允許更美觀地打印源代碼,以便在上下文中顯示錯誤。?


如果使用的是TailwindCSS,請考慮不要啟用此功能,因為在開發模式下,prettier將難以處理解析HTML的大小。

2.logLevel設置詳細信息為verbose、warning或error。在dev中默認為verbose,在生成時為warning。?


您可以使用此配置選項來關閉控制臺日志記錄的No HTML validation errors found for…消息。

3.如果生成的頁面有任何驗證錯誤,failOnError將在運行nuxt generate后拋出一個錯誤。

?
在持續集成中很有用。

4.Options允許您傳入html-validate選項,這些選項將與默認配置合并?


更多關于配置 html- validate?的信息,可以參考 官方文檔。

默認配置

{htmlValidator: {usePrettier: false,logLevel: 'verbose',failOnError: false,/** A list of routes to ignore (that is, not check validity for). */ignore: [/\.(xml|rss|json)$/],options: {extends: ['html-validate:document','html-validate:recommended','html-validate:standard'],rules: {'svg-focusable': 'off','no-unknown-elements': 'error',// Conflicts or not needed as we use prettier formatting'void-style': 'off','no-trailing-whitespace': 'off',// Conflict with Nuxt defaults'require-sri': 'off','attribute-boolean-style': 'off','doctype-style': 'off',// Unreasonable rule'no-inline-style': 'off'}}}
}


規則參考

html語法和概念

與HTML語法和概念相關的規則。

attr-delimiter禁止屬性鍵和值之間有空格
attr-spacing要求屬性之間用空格分隔
close-attr禁止結束標記具有屬性
close-order要求元素按正確順序關閉
element-name禁止使用無效的元素名稱
form-dup-name要求表單控件具有唯一的名稱
map-dup-name要求‘ <map name> ’是唯一的
map-id-name要求name和id在<map>元素上匹配
no-dup-attr禁止重復屬性
no-dup-class禁止重復的類
no-raw-characters禁止使用未轉義的特殊字符
no-redundant-for禁止對屬性使用冗余標簽
script-type要求‘ <script> ’元素的有效類型
unrecognized-char-ref禁止無法識別的字符引用
valid-autocomplete要求自動完成屬性有效
valid-id要求‘ id ’是一個有效的標識符


內容模型

attribute-allowed-values驗證允許的屬性值
attribute-misuse要求屬性在正確的上下文中使用
element-permitted-content驗證允許的內容
element-permitted-occurrences驗證允許的元素出現次數
element-permitted-order驗證所需的元素順序
element-permitted-parent驗證允許的元素父元素
element-required-ancestor驗證所需的元素祖級
element-required-attributes確保設置了所需的屬性
element-required-content確保必需的元素存在
input-attributes驗證輸入屬性的使用
no-multiple-main禁用多個“<main>”
script-element為‘ <script> ’要求結束標簽
void-content禁止包含內容的void元素


棄用規則?
?


與已棄用或過時功能的使用相關的規則。

deprecated禁止使用廢棄的元素
deprecated-rule禁止使用不推薦的規則
no-conditional-comment禁止使用條件注釋
no-deprecated-attr禁止使用棄用的屬性


可行性

area-alt要求‘ <area> ’元素上的替代文本
aria-hidden-body禁止在“<body>”上設置“aria-hidden”
aria-label-misuse禁止誤用“aria-label”
empty-heading要求標題頭有文字內容
empty-title要求標題有文字內容
hidden-focusable在可聚焦的元素上禁用“aria-hidden”
input-missing-label要求輸入有標簽
meta-refresh要求元刷新具有0秒延遲
multiple-labeled-controls禁止與多個控件關聯的標簽
no-abstract-role禁止使用抽象的WAI-ARIA角色
no-autoplay禁止自動播放媒體元素
no-implicit-button-type禁止隱式按鈕類型
no-redundant-aria-label禁止arial -label和label具有相同的文本內容
no-redundant-role禁止使用冗余角色
prefer-native-element更傾向使用原生HTML元素而不是角色
svg-focusable要求<svg>具有可聚焦屬性
tel-non-breaking要求在電話號碼中使用不間斷字符
text-content要求元素具有有效的文本內容
unique-landmark要求地標有唯一的名稱
wcag/h30WCAG H30:提供鏈接文本
wcag/h32WCAG H32:提供提交按鈕
wcag/h36WCAG H36:要求在圖片上使用所有文本作為提交按鈕
wcag/h37WCAG H37:在img元素上使用alt屬性
wcag/h63WCAG H63:使用scope屬性來關聯標題單元格和數據單元格
wcag/h67WCAG H67:在img元素上使用空alt文本和沒有標題屬性
wcag/h71WCAG H71:為表單控件組提供描述


驗證

require-csp-nonce需要CSP的資源
require-sri要求資源的SRI


SEO

long-title要求標題不要有太長的文字


模式

attr-case要求屬性名使用特定的大小寫
attr-pattern要求屬性匹配已配置的模式
attr-quotesRequire attribute quoting
attribute-boolean-style要求屬性引用
attribute-empty-style為空屬性要求特定的樣式
class-pattern要求類匹配特定的模式
doctype-style需要DOCTYPE的特定案例
element-case要求元素名稱使用特定的大小寫
id-pattern要求id匹配特定的模式
name-pattern要求表單控件名稱匹配特定的模式
no-implicit-close要求帶有可選結束標簽的元素顯式關閉
no-implicit-input-type禁止隱式輸入類型
no-inline-style禁止內聯樣式
no-self-closing禁止自閉元素
no-style-tag禁止使用<style>標記
no-trailing-whitespace禁止尾隨空格
prefer-button對于按鈕,更喜歡使用<button>而不是<input>
prefer-tbody更喜歡把<tr>包裝在<tbody>里面
void-style需要一個特定的樣式來關閉void元素


文檔

這些規則適用于完整的單據。

allowed-links禁用鏈接類型
doctype-html要求使用“html”文檔類型
heading-level要求標題從h1開始并遞增1
missing-doctype要求文檔具有doctype
no-dup-id不允許重復的id
no-missing-references要求所有元素引用都存在
no-utf8-bom禁止文檔具有UTF-8 BOM


未知元素

no-unknown-elements禁止使用未知元素
no-unused-disable禁用未使用的禁用指令


預設配置

HTML-validate帶有一些預定義的預設。

示例?.htmlvalidate.json

{"extends": ["html-validate:PRESET"]
}

示例?.htmlvalidate.cjs

const { defineConfig } = require("html-validate");module.exports = defineConfig({extends: ["html-validate:PRESET"],
});

示例?.htmlvalidate.mjs

import { defineConfig } from "html-validate";export default defineConfig({extends: ["html-validate:PRESET"],
});

可以設置多個預設,并將按照它們出現在“extends”中的順序啟用。


預設類型

html-validate:recommended

這是默認的預設,支持大多數規則,包括標準驗證、WCAG和最佳實踐。它是其他預設的超集。

html-validate:standard

啟用與根據WHATWG HTML標準(生活標準)進行驗證相關的規則。

如果您想要類似于Nu Html檢查器和類似工具的驗證,請使用此預設。

html-validate:prettier

自:v7.18.0?
如果您正在使用Prettier來格式化HTML標記,則可以使用此預設來禁用諸如void-style之類的矛盾規則。?
?
這個預設應該與另一個預設(如html-validate:)結合使用,因為它只禁用規則。

html-validate:a11y

啟用與可訪問性相關的規則。大多數規則(但不是所有已啟用的規則)都與WCAG遵從性有關。它本身不會驗證文檔/模板本身是否有效,而只會在發現可訪問性問題時進行驗證。?
?
這個預設應該與html-validate:standard一起使用,以確保文檔結構是有效的(WCAG的要求),如果可能的話,還應該與html-validate:document(確保引用是有效的,等等)一起使用。

html-validate:browser

自:8.24.0?
如果要從瀏覽器中獲取源代碼,請使用此預設來禁用受瀏覽器規范化影響的規則,例如屬性布爾樣式。這些規則大多只是表面上的。?
?
這個預設應該與另一個預設(如html-validate:)結合使用,因為它只禁用規則。

html-validate:document

啟用需要驗證完整文檔的規則,即不需要驗證部分模板。示例包括缺少文檔類型和無效引用。?
?
將此預設與其他預設一起使用以實現全覆蓋。這個預設是由cypress-html-validate和protractor-html-validate等插件啟用的。


2.@nuxtjs/i18n

安裝

npx nuxi@latest module add i18n

配置

{modules: ['@nuxtjs/i18n',],i18n: {locales: [{ code: 'en', language: 'en-US' },{ code: 'fr', language: 'fr-FR' }],defaultLocale: 'en',}
}

實戰示例

import process from 'node:process'const isDev = process.env.NODE_ENV === 'development'// const apiBaseUrl = 'http://localhost:3001'
const apiBaseUrl = 'https://movies-proxy.vercel.app'export default defineNuxtConfig({modules: ['@vueuse/nuxt','@unocss/nuxt','@nuxt/image','@nuxtjs/i18n','@nuxtjs/html-validator',],experimental: {inlineSSRStyles: false,viewTransition: true,renderJsonPayloads: true,},routeRules: {'/**': isDev ? {} : { cache: { swr: true, maxAge: 120, staleMaxAge: 60, headersOnly: true } },},runtimeConfig: {public: {apiBaseUrl,},},devtools: {enabled: true,},image: {provider: 'proxy',providers: {proxy: {provider: 'ipx',options: {baseURL: `${apiBaseUrl}/ipx`,},},},},nitro: {routeRules: {'/**': { isr: false },},},i18n: {detectBrowserLanguage: {useCookie: true,fallbackLocale: 'en',},strategy: 'no_prefix',locales: [{code: 'en',name: 'English',file: 'en.json',},{code: 'fa-IR',name: '?????',file: 'fa-IR.json',},{code: 'de-DE',name: 'Deutsch',file: 'de-DE.json',},{code: 'es-ES',name: 'Espa?ol',file: 'es-ES.json',},{code: 'it',name: 'Italiano',file: 'it.json',},{code: 'ja',name: '日本語',file: 'ja.json',},{code: 'zh-CN',name: '簡體中文',file: 'zh-CN.json',},{code: 'pt-PT',name: 'Português',file: 'pt-PT.json',},{code: 'pt-BR',name: 'Português do Brasil',file: 'pt-BR.json',},{code: 'ru-RU',name: 'Русский',file: 'ru-RU.json',},{code: 'fr-FR',name: 'Fran?ais',file: 'fr-FR.json',},{code: 'uk-UA',name: 'Укра?нська',file: 'uk-UA.json',},{code: 'vi',name: 'Ti?ng Vi?t',file: 'vi.json',},],lazy: true,langDir: 'internationalization',defaultLocale: 'en',},htmlValidator: {usePrettier: false,logLevel: 'verbose',failOnError: false,/** A list of routes to ignore (that is, not check validity for). */ignore: [/\.(xml|rss|json)$/],options: {extends: ['html-validate:document','html-validate:recommended','html-validate:standard'],rules: {'svg-focusable': 'off','no-unknown-elements': 'error',// Conflicts or not needed as we use prettier formatting'void-style': 'off','no-trailing-whitespace': 'off',// Conflict with Nuxt defaults'require-sri': 'off','attribute-boolean-style': 'off','doctype-style': 'off',// Unreasonable rule'no-inline-style': 'off'}}},
})


3.@nuxt/image

為nuxt優化的圖像,具有漸進式處理,延遲加載,支持圖像CDN,實時調整大小和提供者支持。

安裝

npx nuxi@latest module add image

nuxt2 可參考 v0文檔

其他相關命令

啟用corepack enable

corepack enable

安裝依賴項

pnpm install

生成類型存根

pnpm dev:prepare

開發模式

pnpm dev

測試添加到test/目錄中

pnpm test

檢查代碼風格

pnpm lint

在創建PR之前

pnpm build

確保構建并沒有報錯

開發模式啟動文檔

pnpm docs:dev

打開http://localhost:3000在瀏覽器中查看。

更新docs/content/目錄下的文檔內容。

配置

在nuxt.config.ts添加模塊支持

export default defineNuxtConfig({modules: ['@nuxt/image',]
})

邊緣通道更新

在package.json 添加如下

刪除lockfile ?(package-lock.json,?yarn.lock, or?pnpm-lock.yaml)?并重新安裝依賴項。

退出邊緣通道

刪除lockfile ?(package-lock.json,?yarn.lock, or?pnpm-lock.yaml)?并重新安裝依賴項。

升級最新版本

pnpm up @nuxt/image

重新創建鎖文件

npx nuxt@latest upgrade --force

要配置image模塊并自定義它的行為,你可以使用next .config中的image屬性:

配置參數

示例

export default defineNuxtConfig({image: {// Options}
})

詳細參數可參考上文實戰示例,下文詳細解釋參數信息:

inject

默認情況下,nuxt Image v1采用可組合的方法。如果不使用這些組件,就不會向包中添加額外的代碼。但是,如果您希望全局初始化將在整個應用程序中可用的 $img 幫助,則可以這樣做。

示例

export default defineNuxtConfig({image: {inject: true}
})


quality

生成圖像的質量。?
?
您還可以在組件級別使用質量屬性覆蓋此選項。

示例

export default defineNuxtConfig({image: {quality: 80,}
})


format

Default: ['webp']

您可以使用該選項為<NuxtPicture>使用的圖像配置默認格式。支持的格式有webp、avif、jpeg、jpg、png和gif。

格式的順序很重要,因為瀏覽器支持的第一種格式將被使用。您可以傳遞多個值,如['avif', 'webp']。

還可以通過使用format prop在組件級別重寫此選項。

示例

export default defineNuxtConfig({image: {format: ['webp']}
})


screens

預定義屏幕尺寸的列表。?


?
這些大小將用于生成圖像的調整大小和優化版本(例如,使用大小修改器)。

示例

export default defineNuxtConfig({image: {// The screen sizes predefined by `@nuxt/image`:screens: {'xs': 320,'sm': 640,'md': 768,'lg': 1024,'xl': 1280,'xxl': 1536,'2xl': 1536},}
})

與Tailwind CSS共享相同的命名和大小,只是增加了xs和xxl(為了向后兼容)。


domains

為了在外部網站上啟用圖像優化,可以指定允許優化的域。此選項將用于檢測是否應該優化遠程映像。這是確保外部url不會被濫用所必需的。

示例

export default defineNuxtConfig({image: {domains: ['nuxtjs.org']}
})


presets

預設是項目的預定義配置集合。預設將幫助您統一整個項目中的圖像。

示例 nuxt.config.ts

export default defineNuxtConfig({image: {presets: {avatar: {modifiers: {format: 'jpg',width: 50,height: 50}}}}
})

示例 index.vue

<template><NuxtImg preset="avatar" src="/nuxt-icon.png" />
</template>


providers

為了創建和使用自定義提供程序,您需要使用providers選項并定義自定義提供程序。

示例 nuxt.config.ts

export default defineNuxtConfig({image: {providers: {random: {provider: '~/providers/random',options: {}}}}
})

示例 index.vue

<template><NuxtImg provider="random" src="main.png" width="300" height="169" />
</template>


provider

默認值:ipx(或ipxStatic,如果與靜態nitro預設一起使用,例如運行nuxt generate)?
?
我們可以指定在組件中沒有指定或調用$img時使用的默認提供商。

示例 nuxt.config.ts

export default defineNuxtConfig({image: {provider: 'twicpics',twicpics: {baseURL: 'https://nuxt-demo.twic.pics'}}
})

modifiers

您可以為所選的提供程序設置默認修飾符。

示例

export default defineNuxtConfig({image: {provider: 'cloudinary',cloudinary: {baseURL: 'https://res.cloudinary.com/<company>/image/fetch/',modifiers: {effect: 'sharpen:100',quality: 'auto:best',}}}
})


densities

Default: [1, 2]

指定一個值來處理devicePixelRatio > 1(這些是帶有視網膜顯示和其他的設備)。您必須指定要為哪個devicePixelRatio值調整圖像。?
?
你可以在MDN上關于devicePixelRatio的信息。

示例 nuxt.config.ts

export default defineNuxtConfig({image: {densities: [1, 2, 3],}
})


dir

Default: public

這個選項允許您在使用ipx或ipxStatic提供程序時指定源映像的位置。?
?
例如,你可能希望源圖像在assets/images目錄中,而不是默認的公共目錄中,這樣源圖像就不會被復制到dist中并被部署:

示例 nuxt.config.ts

export default defineNuxtConfig({image: {dir: 'assets/images'}
})

注:?
?
對于ipxStatic提供程序,如果在生成過程中沒有抓取圖像(不可訪問的模式、頁面或動態運行時大小),將dir從public更改將導致404錯誤。?


對于ipx提供程序,也要確保部署自定義的目錄。?


對于某些提供程序(如vercel),不支持使用public/以外的目錄作為資產,因為調整大小發生在運行時(而不是構建/生成時),并且從public/目錄(部署URL)獲取源代碼。


alias

這個選項允許你為src指定別名。?
?
當使用默認的ipx提供程序時,URL別名會在服務器端縮短。這對于優化外部url而不將它們包含在HTML中特別有用。?
?
當使用其他提供程序時,別名將在運行時解析并包含在HTML中。(只是用法簡化了)

示例 nuxt.config.ts

export default defineNuxtConfig({image: {domains: ['images.unsplash.com'],alias: {unsplash: 'https://images.unsplash.com'}}
})

示例 使用別名之前

<NuxtImg src="https://images.unsplash.com/<id>" />

生成

<img src="/_ipx/https://images.unsplash.com/<id>">

示例 在使用別名之后

<NuxtImg src="/unsplash/<id>" />

生成

<img src="/_ipx/unsplash/<id>" />


Providers

nuxt Image支持多個提供程序以實現高性能。

簡介?


?
提供者是next Image和第三方圖像轉換服務之間的集成。每個提供者負責為該圖像轉換服務生成正確的url。?


?
next Image可以配置為使用任何外部圖像轉換服務。簽出側欄以獲取預配置的提供程序列表。?


?
如果您正在尋找不受支持的特定提供程序,您可以創建自己的提供程序。?


?
next Image將自動優化<NuxtImg>或<NuxtPicture>源,并接受指定目標的所有選項,除了特定于其他提供程序的修飾符。


默認提供者?


?
nuxt Image的默認優化器和提供程序是ipx。任何一個選項都可以在沒有任何配置的情況下使用。

本地圖片?


?
圖像應該存儲在項目的public/目錄中。?
?
例如,當使用 <NuxtImg src="/nuxt-icon.png" /> 時,它應該放在public/文件夾下的 public/nuxt-icon.png 路徑下。?
?
?

注意:存儲在assets/目錄中的圖像不會被nuxt Image處理,因為這些圖像是由您的打包器(如Vite或webpack)管理的。


遠程圖像?


?
使用默認提供程序,您還可以優化外部url。為此,您需要將它們添加到 domains 選項中。?
?


還可以通過將 NUXT_IMAGE_DOMAINS 環境變量設置為逗號分隔的域列表來為遠程映像添加域。

示例?

NUXT_IMAGE_DOMAINS="example.com,yourdomain.com"


環境檢測?


?
您可以使用 NUXT_IMAGE_PROVIDER 環境變量設置默認提供程序。?
?
自動檢測到的提供者:

Vercel -?優化圖像在Vercel的邊緣網絡,下文單獨介紹


自定義服務提供方程序?


?
可以定義自己的提供程序,詳細了解如何創建自定義提供程序。

下文單獨介紹


?NuxtImg

了解如何使用和配置next Image組件。

簡介

<NuxtImg>是本機<img>標記的臨時替代品。?


?
使用內置提供程序來優化本地和遠程映像?


將src轉換為提供程序優化的url?


根據寬度和高度自動調整圖像大小?


提供大小選項時生成響應大小?


支持本機延遲加載以及其他<img>屬性


用法?


?
<NuxtImg>直接輸出原生img標記(沒有任何包裝器)。像使用<img>標簽一樣使用它:

示例?

<NuxtImg src="/nuxt-icon.png" />

輸出

<img src="/nuxt-icon.png" />

使用默認的提供程序,您應該將 /nuxt-icon.png 放在 public/ 目錄中,以便讓上面的示例工作。


元素

custom

自定義道具決定了<NuxtImg>應該作為一個簡單的<img>元素呈現還是僅僅作為自定義呈現的提供者。當設置為true時,它禁用默認呈現行為,允許完全控制圖像的顯示方式。這對于實現自定義功能(如占位符)非常有用。?
?
當使用自定義道具時,<NuxtImg>將必要的數據和屬性傳遞給其默認槽。你可以通過v-slot指令訪問以下值:?
?
imgAttrs: <img>元素的屬性(例如,alt, width, height, srcset, sizes)。?


src:計算圖像源URL。?


isLoaded:一個布爾值,指示圖像是否已加載。?


示例使用

<nuxt-imgsrc="/images/nuxt.png"alt="image"width="400" height="400" :custom="true"v-slot="{ src, isLoaded, imgAttrs }"
><!-- Show the actual image when loaded --><img v-if="isLoaded" v-bind="imgAttrs" :src="src" /><!-- Show a placeholder while loading --><img v-else src="https://placehold.co/400x400" alt="placeholder" />
</nuxt-img>

這種方法確保了自定義呈現場景的靈活性,而<NuxtImg>繼續在幕后處理圖像優化和數據供應。


src?
?


鏡像文件路徑?
?
SRC應該是公共/目錄中靜態圖像的絕對路徑的形式。否則,提供程序期望的以/或URL開頭的路徑。

示例

<NuxtImg src="/nuxt.png" />

為了在src中使用外部url進行圖像優化,我們需要使用domains選項將它們列入白名單。


width / height

指定圖像的寬度/高度。?
?
使用所需的寬度/高度的靜態大小的圖像,如圖標或頭像?


響應式圖像使用原始圖像的寬度/高度(當使用大小時)


alt

盡管next Image沒有應用任何特殊處理,但值得一提的是alt屬性。它是一個本地全局屬性,如果不能顯示圖像,則為圖像指定替代文本。?


?
它應該總是被提供。?


?
如果圖像包含信息,則文本應該描述圖像?


如果圖像位于<a>元素中,文本應該解釋鏈接的位置?


如果圖像僅用于裝飾,則使用alt=“”

eg

<NuxtImg src="/nuxt.png" alt="My image file description" />


sizes

指定響應大小。?
?
這是一個以空格分隔的屏幕大小/寬度對列表。在上文nuxt.config.ts文件默認配置可以參看默認大小。?
?
默認情況下,next生成響應優先大小。?
?
如果你省略了屏幕尺寸前綴(比如sm:),那么這個尺寸就是圖像的“默認”尺寸。否則,next將選擇最小的大小作為圖像的默認大小。?


這個默認大小一直使用到下一個指定的屏幕寬度,依此類推。每個指定的尺寸對都適用-所以md:400px意味著圖像將在md屏幕上的大小為400px。?


例子:

<NuxtImgsrc="/logos/nuxt.png"sizes="100vw sm:50vw md:400px"
/>


densities

為增加像素密度的屏幕生成特殊版本的圖像。?
?
例子:

<NuxtImgsrc="/logos/nuxt.png"height="50"densities="x1 x2"
/>
<!--
<imgsrc="/_ipx/w_50/logos/nuxt.png" srcset="/_ipx/w_100/logos/nuxt.png x2"
/>
-->


placeholder

在實際圖像完全加載之前顯示占位符圖像。?


?
您還可以使用自定義道具制作任何您想要的占位符。?


?
占位符道具可以是字符串、布爾值、數字或數組。每種情況的用法如下所示。

<!-- 自動生成一個基于原始圖像的占位符 -->
<NuxtImg src="/nuxt.png" placeholder /><!-- 為自動生成的占位符 設置寬度、高度  -->
<NuxtImg src="/nuxt.png" :placeholder="[50, 25]" /><!-- 為自動生成的占位符 設置寬度、高度、質量和模糊  -->
<NuxtImg src="/nuxt.png" :placeholder="[50, 25, 75, 5]" /><!-- 設置自動生成占位符的寬度和高度,圖像將是一個正方形 -->
<NuxtImg src="/nuxt.png" :placeholder="15" /><!-- 提供你自己的圖片 -->
<NuxtImg src="/nuxt.png" placeholder="./placeholder.png" />

你也可以利用useImage()來生成一個基于原始圖像的占位符圖像,如果源是SVG或者你想更好地控制修飾符,這是有用的:

<script setup>
const img = useImage()
</script><template><NuxtImg :placeholder="img(`/nuxt.svg`, { h: 10, f: 'png', blur: 2, q: 50 })" src="/nuxt.svg`" />
</template>


placeholder-class

在使用占位符時,可以使用占位符類將類應用于原始的底層<img>元素(在呈現占位符時)。

<!-- 對原始圖像應用靜態類 -->
<NuxtImg src="/nuxt.png" placeholder placeholder-class="custom" /><!-- 對原始圖像應用動態類 -->
<NuxtImg src="/nuxt.png" placeholder :placeholder-class="custom" />

如果你只需要對加載的圖像應用一些CSS,你可以這樣做:

img:not(.my-placeholder-class) {/* styles here */
}


provider

使用其他提供商,而不是在nuxt .config中指定的默認提供商選項?


?
示例 nuxt.config.ts

export default defineNuxtConfig({image: {cloudinary: {baseURL: 'https://res.cloudinary.com/nuxt/image/upload/',},},
})

index.vue

<template><NuxtImgprovider="cloudinary"src="/remote/nuxt-org/blog/going-full-static/main.png"width="300"height="169"/>
</template>


preset

預設是預定義的圖像修改器集,可用于在項目中創建統一形式的圖像。

我們可以使用next .config中的預置選項來定義預置

示例 nuxt.config.ts

export default defineNuxtConfig({image: {presets: {cover: {modifiers: {fit: 'cover',format: 'jpg',width: 300,height: 300,},},},},
})

index.vue

<template><NuxtImg preset="cover" src="/nuxt-icon.png" />
</template>


format

如果您想以特定格式提供圖像,請使用此道具。

示例

<NuxtImg format="webp" src="/nuxt-icon.png" ... />

可用的格式是webp, avif, jpeg, jpg, png, gif和svg。如果沒有指定格式,它將遵循默認的圖像格式。


quality

生成圖像的質量。

<NuxtImg src="/nuxt.jpg" quality="80" width="200" height="100" />


fit

fit屬性指定圖像的大小。此屬性可以使用五個標準值。

cover: (默認)保留寬高比,確保圖像覆蓋兩個提供的尺寸裁剪/剪輯以適應。


contain:保留長寬比,在必要時使用“letterboxing”包含在兩個提供的維度中。


fill: 忽略輸入的寬高比,并拉伸到兩個提供的尺寸。


inside: 保留寬高比,將圖像調整為盡可能大,同時確保其尺寸小于或等于指定的兩個。


outside: 保留寬高比,將圖像調整為盡可能小,同時確保其尺寸大于或等于指定的尺寸。

示例

<NuxtImg fit="cover" src="/nuxt-icon.png" width="200" height="100" />

一些提供程序支持其他值。


modifiers

除了標準修飾符之外,每個提供程序可能還有自己的附加修飾符。由于這些修飾符依賴于提供程序,因此請參閱其文檔以了解可以使用哪些修飾符。?
?
使用modifiers道具可以使用這些轉換中的任何一種。

示例

<NuxtImgprovider="cloudinary"src="/remote/nuxt-org/blog/going-full-static/main.png"width="300"height="169":modifiers="{ roundCorner: '0:100' }"
/>


preload

如果您想預加載圖像,請使用此道具。這將在頁面頭部放置一個相應的 link 鏈接標記。

<NuxtImg preload src="/nuxt-icon.png" />


loading

這是一個原生屬性,它向瀏覽器提供了一個提示,告訴瀏覽器如何處理視圖外的圖像加載。自2022年3月起,所有主流瀏覽器的最新版本都支持它。?
?
設置loading="lazy"來延遲圖像的加載,直到它出現在視窗中。

示例

<NuxtImg src="/nuxt-icon.png" loading="lazy" />


nonce

這是一個本地全局屬性,它定義了一個加密nonce(一次使用的數字),內容安全策略可以使用它來確定是否允許對給定元素進行給定的獲取。提供nonce允許您避免使用CSP不安全的內聯指令,該指令將允許列出所有內聯腳本或樣式。

示例

<NuxtImg src="/nuxt-icon.png" :nonce="nonce" /><script lang="ts" setup>
// useNonce不是由next /image提供的,但可能是
// 由另一個模塊提供,例如nuxt-security
const nonce = useNonce()
</script>


Events

由<NuxtImg>和<NuxtPicture>組件包含的<img>元素發出的本地事件被重新發出,并且可以被監聽。?
?
示例:監聽來自<NuxtImg>的本機onLoad事件

<NuxtImgsrc="/images/colors.jpg"width="500"height="500"@load="doSomethingOnLoad"
/>


晚點再更新

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/72124.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72124.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72124.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

智能圖像處理平臺:圖片管理

接著我們講圖片管理&#xff0c;先實現圖片基礎的增刪改查&#xff0c;再去考慮圖像處理。 主要是&#xff0c;我們需要完成查詢時&#xff0c;查詢的圖片的上傳者的角色等級小于等于我們當前登陸賬號。 后端controller&#xff1a; package com.llpp.controller;import cn.…

大模型知識蒸餾技術(8)——知識蒸餾應用場景

版權聲明 本文原創作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl1. 知識蒸餾概述 知識蒸餾是一種將大型復雜模型(教師模型)的知識遷移到小型簡單模型(學生模型)的技術。其核心原理是通過教師模型的輸出(通常是softmax后的概率分布)來指導學生模型的訓練,…

LeetCode:131. 分割回文串(DP Java)

目錄 131. 分割回文串 題目描述&#xff1a; 實現代碼與解析&#xff1a; 動態規劃 原理思路&#xff1a; 131. 分割回文串 題目描述&#xff1a; 給你一個字符串 s&#xff0c;請你將 s 分割成一些子串&#xff0c;使每個子串都是 回文串 。返回 s 所有可能的分割方案。…

INT202 Complexity of Algroithms 算法的復雜度

文章目錄 1. 前言1.1 算法&#xff08;Algorithms&#xff09;和數據結構&#xff08;Data Structure&#xff09;1.2 什么是好的算法&#xff1f;1.3 算法分析1.3.1 實驗分析&#xff08;Experimental Analysis&#xff09;1.3.2 理論分析1.3.2.1 偽代碼&#xff08;Pseudo-co…

BDF報告翻譯簡介后:關于A φ方法criterion引理1如何由范數導出內積

關于A φ方法criterion 引理1 如何由范數導出內積 在數學中&#xff0c;特別是在泛函分析中&#xff0c;給定一個范數&#xff0c;可以定義一個與之相關的內積。這個過程不是總是可能的&#xff0c;但當一個賦范向量空間是完備的且滿足平行四邊形恒等式時&#xff0c;可以導出…

初識uniApp

詳細思考一下uniApp這個跨平臺開發框架。首先&#xff0c;我對uniApp還不是很了解&#xff0c;所以需要從基本概念開始&#xff0c;逐步深入。 什么是uniApp&#xff1f; 我記得uniApp是基于Vue.js的&#xff0c;可能是一個用來開發多個平臺的應用的框架。用戶可能想了解它是什…

olmOCR:使用VLM解析PDF

在PDF解析中&#xff0c;目前主流的開源工具包括Minuer、GOT OCR等。主要都是通過飛槳等OCR套件組裝的一套pipeline&#xff0c;或者直接通過VLM解析圖像。 #一、 olmOCR是使用VLM進行的端到端的PDF文檔解析 二、document-anchoring 與上述的不同在于&#xff0c;olmOCR使用…

Nginx 代理配置導致瀏覽器應用網頁頁面加載失敗的分析與解決

Nginx 代理配置導致應用頁面加載失敗的分析與解決 前期部署信息&#xff1a; 部署DM數據庫DEM時&#xff0c;配置了nginx代理&#xff0c;conf配置內容如下&#xff1a; charset utf-8;client_max_body_size 128M;listen 4567;server_name 192.168.1.156;root /opt/h5/;index…

Windows 11【1001問】查看Windows 11 版本的18種方法

隨著技術的飛速發展&#xff0c;操作系統作為連接硬件與軟件的核心橋梁&#xff0c;其版本管理和更新變得尤為重要。對于用戶而言&#xff0c;了解自己設備上運行的具體Windows 11版本不僅有助于優化系統性能&#xff0c;還能確保安全性和兼容性。然而&#xff0c;不同場景和需…

企業jsapi_ticket,java舉例

在企業微信開發中&#xff0c;使用 Java 獲取 jsapi_ticket 并生成簽名的步驟如下。以下是完整的 Java 示例代碼。 1. 獲取 jsapi_ticket 的流程 獲取 access_token。 使用 access_token 獲取 jsapi_ticket。 使用 jsapi_ticket 生成簽名&#xff08;signature&#xff09;。…

【Godot4.3】自定義簡易菜單欄節點ETDMenuBar

概述 Godot中的菜單創建是一個復雜的災難性工作&#xff0c;往往無從下手&#xff0c;我也是不止一次嘗試簡化菜單的創建。 從自己去年的發明“簡易樹形數據”用于簡化Tree控件獲得靈感&#xff0c;于是嘗試編寫了用于表示菜單數據的EasyMenuData類&#xff0c;以及對應的純文…

大數據與金融科技:革新金融行業的動力引擎

大數據與金融科技&#xff1a;革新金融行業的動力引擎 在今天的金融行業&#xff0c;大數據與金融科技的結合正在以驚人的速度推動著金融服務的創新與變革。通過精準的數據分析與智能化決策&#xff0c;金融機構能夠更高效地進行風險管理、客戶服務、資產管理等一系列關鍵操作…

二、IDE集成DeepSeek保姆級教學(使用篇)

各位看官老爺好&#xff0c;如果還沒有安裝DeepSeek請查閱前一篇 一、IDE集成DeepSeek保姆級教學(安裝篇) 一、DeepSeek在CodeGPT中使用教學 1.1、Edit Code 編輯代碼 選中代碼片段 —> 右鍵 —> CodeGPT —> Edit Code, 輸入自然語言可編輯代碼&#xff0c;點擊S…

Rohm發布TOLL封裝650V GaN HEMT,引領汽車用GaN器件大規模生產新浪潮

Rohm震撼發布TOLL封裝650V GaN HEMT&#xff0c;引領汽車用GaN器件大規模生產新浪潮。在創新的TOLL&#xff08;TO LeadLess&#xff09;封裝技術的懷抱中&#xff0c;Rohm精心孕育出650V GaN HEMT這一瑰寶&#xff0c;此技術正如一股強勁東風&#xff0c;日益吹拂于高功率處理…

Spring Boot 3.x 基于 Redis 實現郵箱驗證碼認證

文章目錄 依賴配置開啟 QQ 郵箱 SMTP 服務配置文件代碼實現驗證碼服務郵件服務接口實現執行流程 依賴配置 <dependencies> <!-- Spring Boot Starter Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spr…

PHP的學習

PHP的基礎前提【HTML、CSS】 第一步先進行VS cood的下載&#xff1a;Visual Studio Code - Code Editing. Redefined 【選擇適合自己的電腦的版本eg:我就是64位的win】

XML 編輯器:全面指南與最佳實踐

XML 編輯器:全面指南與最佳實踐 引言 XML(可擴展標記語言)編輯器是處理XML文件的關鍵工具,對于開發人員、系統管理員以及任何需要處理XML數據的人來說至關重要。本文將全面介紹XML編輯器的概念、功能、選擇標準以及最佳實踐,旨在幫助讀者了解如何選擇和使用合適的XML編輯…

《Effective Objective-C》閱讀筆記(下)

目錄 內存管理 理解引用計數 引用計數工作原理 自動釋放池 保留環 以ARC簡化引用計數 使用ARC時必須遵循的方法命名規則 變量的內存管理語義 ARC如何清理實例變量 在dealloc方法中只釋放引用并解除監聽 編寫“異常安全代碼”時留意內存管理問題 以弱引用避免保留環 …

ORM Bee V2.5.2.x 發布,支持 CQRS; sql 性能分析;更新 MongoDB ORM分片

Bee, 一個具有分片功能的 ORM 框架. Bee Hibernate/MyBatis plus Sharding JDBC Jpa Spring data GraphQL App ORM (Android, 鴻蒙) 小巧玲瓏&#xff01;僅 940K, 還不到 1M, 但卻是功能強大&#xff01; V2.5.2 (2025?LTS 版) 開發中... **2.5.2.1 新年 ** 支持 Mong…

springboot之HTML與圖片生成

背景 后臺需要根據字段動態生成HTML&#xff0c;并生成圖片&#xff0c;發送郵件到給定郵箱 依賴 <!-- freemarker模板引擎--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifa…