在 Nuxt 中安裝 PrimeVue

在 Nuxt 專案中設定 PrimeVue。

PrimeVue 可在 npm 註冊表上下載,以及官方的 @primevue/nuxt-module


# Using npm
npm install primevue @primevue/themes
npm install --save-dev @primevue/nuxt-module

# Using yarn
yarn add primevue @primevue/themes
yarn add --dev @primevue/nuxt-module

# Using pnpm
pnpm add primevue @primevue/themes
pnpm add -D @primevue/nuxt-module

nuxt.config 檔案中,將 @primevue/nuxt-module 新增至模組區段,並定義 primevue 物件以設定模組。


export default defineNuxtConfig({
    modules: [
        '@primevue/nuxt-module'
    ],
    primevue: {
        /* Configuration */
    }
})

設定模組以使用像 Aura 這樣的主題。


import Aura from '@primevue/themes/aura';

export default defineNuxtConfig({
    modules: [
        '@primevue/nuxt-module'
    ],
    primevue: {
        options: {
            theme: {
                preset: Aura
            }
        }
    }
})

nuxt-primevue 模組會自動註冊元件,並支援 Tree-shaking,因此您可以立即開始使用它們。


<Button label="Verify" />

模組預設會安裝 PrimeVue 外掛程式。如果您偏好手動設定 PrimeVue,例如使用 Nuxt 外掛程式,請停用此選項。


primevue: {
    usePrimeVue: true | false
}

PrimeVue 的主要設定,詳細資訊請參閱設定文件。


import Aura from '@primevue/themes/aura';

export default defineNuxtConfig({
    modules: [
        '@primevue/nuxt-module'
    ],
    primevue: {
        options: {
            ripple: true,
            inputVariant: 'filled',
            theme: {
                preset: Aura,
                options: {
                    prefix: 'p',
                    darkModeSelector: 'system',
                    cssLayer: false
                }
            }
        }
    }
})

自動匯入功能會自動註冊元件,並支援 Tree-shaking。預設為 true,停用時,請使用 componentsdirectives 的 include/exclude 選項進行手動註冊。


primevue: {
    autoImport: true|false
}

componentsdirectives 中使用 prefix 來為註冊新增前綴。


primevue: {
    autoImport: true|false,
    components: {
        prefix: 'org'
    },
    directives: {
        prefix: 'org'
    }
}

設定全域 pass through 匯入路徑。


primevue: {
    importPT: { from: '@/passthrough/mycustompt.js' }
}

mycustompt.js 檔案定義設定並匯出它。


const MyCustomPT = {
    ...
    button: {
        root: 'my-button',
       ...
    },
    ...
}

export default MyCustomPT;

設定樣式模式中主題自訂的 theme 設定路徑。


primevue: {
    importTheme: { from: '@/themes/mytheme.js' },
}

mytheme.js 檔案包含主題設定。


import { definePreset } from '@primevue/themes';
import Aura from '@primevue/themes/aura';

const MyPreset = definePreset(Aura, {
    semantic: {
        primary: {
            50: '{indigo.50}',
            100: '{indigo.100}',
            200: '{indigo.200}',
            300: '{indigo.300}',
            400: '{indigo.400}',
            500: '{indigo.500}',
            600: '{indigo.600}',
            700: '{indigo.700}',
            800: '{indigo.800}',
            900: '{indigo.900}',
            950: '{indigo.950}'
        }
    }
});

export default {
    preset: MyPreset,
    options: {
        darkModeSelector: '.p-dark'
    }
};


autoImport 停用時,請使用 includeexclude 進行手動註冊。

要匯入和註冊的元件會使用字串陣列的 include 選項定義。當值被忽略或使用 * 別名設定時,會註冊所有元件。


primevue: {
    components: {
        include: ['Button', 'DataTable']
    }
}

如果匯入所有元件,仍然可以使用 exclude 選項排除特定元件。


primevue: {
    components: {
        include: '*',
        exclude: ['Galleria', 'Carousel']
    }
}

預設情況下,為了相容性原因,會排除 Chart 和 Editor 元件。若要包含它們,只需將 exclude 選項設定為空清單即可。


primevue: {
    components: {
        exclude: []
    }
}

使用 prefix 選項為已註冊的元件名稱加上前綴。


primevue: {
    components: {
        prefix: 'Prime'
        include: ['Button', 'DataTable']    /* Used as <PrimeButton /> and <PrimeDataTable /> */
    }
}

元件註冊可以透過實作 name 函式進一步自訂,該函式會取得一個代表匯入中繼資料的物件。name 是元件的標籤,as 是預設的匯出名稱,而 from 是匯入路徑。


primevue: {
    components: {
        name: ({ name, as, from }) => {
            return name === 'Button' ? `My${name}` : name;
        },
        include: ['Button', 'DataTable']    /* Used as <MyButton /> and <DataTable /> */
    }
}

autoImport 停用時,請使用 includeexclude 進行手動註冊。

要匯入和註冊的指令名稱會使用 include 屬性提供。當值被忽略或使用 * 別名設定時,會註冊所有指令。


primevue: {
    directives: {
        include: ['Ripple', 'Tooltip']
    }
}

與元件類似,可以排除某些指令,並且可以自訂名稱註冊。


primevue: {
    directives: {
        include: '*',
        exclude: ['Ripple']
    }
}


primevue: {
    directives: {
        prefix: 'p'
        include: ['Ripple', 'Tooltip']    /* Used as v-pripple and v-ptooltip */
    }
}

決定要使用的 composable,當預設值被忽略或設定為 * 時,會匯入所有 composable。


primevue: {
    composables: {
        include: ['useStyle']
    }
}

在 PrimeVue 範例儲存庫中提供了具有不同選項的 基於 Nuxt 的範例

歡迎來到 Prime UI 生態系統!一旦您啟動並執行 PrimeVue,我們建議您探索以下資源,以更深入了解該函式庫。