使用vue-meta实现动态切换浏览器标签页标题

358 阅读2分钟

使用vue-meta实现动态切换浏览器标签页标题

安装

npm i vue-meta

在根组件App.vue中

src\App.vue

    metaInfo() {
        return {
            title: this.$store.state.settings.enableDynamicTitle && this.$store.state.settings.title,
            titleTemplate: title => {
                return title ? `${title} - ${process.env.VUE_APP_TITLE}` : process.env.VUE_APP_TITLE
            }
        }
    }

在 src\store\modules\settings.js中设置

/**
 * 存放全局公用状态
 */
import setting from '@/setting'

const state = {
    ...setting,
    // 侧边栏是否收起(用于记录 pc 模式下最后的状态)
    sidebarCollapseLastStatus: setting.sidebarCollapse,
    // 显示模式,支持:mobile、pc
    mode: 'pc',
    // 页面标题
    title: ''
}

const getters = {}

const actions = {}

const mutations = {
    // 设置访问模式,页面宽度小于 992px 时切换为移动端展示
    setMode(state, width) {
        if (width < 992) {
            state.mode = 'mobile'
        } else {
            state.mode = 'pc'
        }
    },
    // 设置网页标题
    setTitle(state, title) {
        state.title = title
    },
    // 切换侧边栏导航展开/收起
    toggleSidebarCollapse(state) {
        state.sidebarCollapse = !state.sidebarCollapse
        if (state.mode == 'pc') {
            state.sidebarCollapseLastStatus = !state.sidebarCollapseLastStatus
        }
    },
    // 更新主题配置
    updateThemeSetting(state, data) {
        Object.assign(state, data)
    }
}

export default {
    namespaced: true,
    state,
    actions,
    getters,
    mutations
}

setting.js

let globalSettings = {
    /**
     * 是否开启权限功能,权限功能提供以下鉴权支持:
     * 1、路由鉴权
     * 2、鉴权组件:<Auth></Auth>、<AuthAll></AuthAll>
     * 3、鉴权指令:v-auth、v-auth-all
     * 4、鉴权函数:this.$auth()、this.$authAll()
     */
    openPermission: false,
    // 是否显示头部
    showHeader: false,
    // 是否始终显示主侧边栏,设置为 false 且主侧边栏里只有一个导航时,主侧边栏会自动隐藏
    alwaysShowMainSidebar: false,
    // 是否开启侧边栏展开收起按钮
    enableSidebarCollapse: false,
    // 侧边栏是否收起
    sidebarCollapse: false,
    // 是否显示底部版权信息,同时在路由 meta 对象里可以单独设置某个路由是否显示底部版权信息
    showCopyright: true,
    // 版权信息配置,格式为:Copyright © [dates] <company>
    copyrightDates: "2023",
    copyrightCompany: "Fantastic-admin",
    copyrightWebsite: "https://hooray.github.io/fantastic-admin",
    // 是否开启导航搜索
    enableNavSearch: true,
    // 是否开启全屏
    enableFullscreen: false,
    // 是否开启页面刷新
    enablePageReload: false,
    // 是否开启载入进度条
    enableProgress: true,
    // 是否开启动态标题
    enableDynamicTitle: false,
    // 是否开启控制台
    enableDashboard: true,
    // 是否开启扁平化路由,开启后三级以及三级以上的嵌套路由均为被处理成二级,但侧边栏导航的层级效果不变
    enableFlatRoutes: false,
    // 控制台名称
    dashboardTitle: "控制台",
    // 是否开启主题配置(建议在生产环境关闭)
    enableThemeSetting: true
};

// 演示&开发环境开启全部功能(这部分代码可删除,仅方便作者打包演示环境)
if (
    process.env.VUE_APP_TYPE == "example" ||
    process.env.NODE_ENV == "development"
) {
    globalSettings.openPermission = true;
    globalSettings.enableSidebarCollapse = true;
    globalSettings.enableFullscreen = true;
    globalSettings.enablePageReload = true;
    globalSettings.enableDynamicTitle = true;
    if (process.env.VUE_APP_TYPE == "example") {
        globalSettings.copyrightWebsite = "/fantastic-admin";
    }
}

export default globalSettings;

.env.development

# 页面标题
VUE_APP_TITLE = Fantastic-admin 基础版