Nuxt.js 框架实战:错误处理、字典翻译与布局配置

作者:青山有信时间:2026-10-30 22:49:30浏览:256

本文总结Nuxt.js框架开发中的常见问题与解决方案,包括表单字段不一致导致的404错误处理、通过plugins/methods.js实现字典翻译、侧边栏菜单路由配置、Layout布局中高亮菜单保持以及TDK的局部与全局设置方法。

在使用该框架时,若页面中任意一处出现错误,均可能导致404页面或显示令人困惑的报错界面。

例如,当表单的prop属性在data函数return的对象中找不到对应字段或字段不一致时,系统会抛出404错误。

其次,关于字典数据的处理,需要对字典内容进行翻译转换。

具体操作是在plugins/methods.js文件中添加相关代码逻辑。

        // 字典翻译
      selectDictLabel(datas, value, k = 'value', v = 'name') {
        var actions = []
        Object.keys(datas).some(key => {
          if (datas[key][k] == '' + value) {
            actions.push(datas[key][v])
            return true
          }
        })
        return actions.join('')
      },

随后在Vue页面中引用该方法。

           <el-table-column label="信息" min-width="170">
              <template slot-scope="{ row }">
                <el-popover
                  placement="top-start"
                  width="100"
                  trigger="hover"
                >
                  <div v-for="item in row.batteryList" :key="item.id">
                    {{ dictArrStr.BATTERY_TYPE_str }}
                      {{ item.num }}
                 </div>
                <el-button size="small" type="text" slot="reference">{{ row.num || '-' }}</el-button>
                </el-popover>
              </template>
            </el-table-column>
data() {
    return {
      dictArr: {
        BATTERY_TYPE: [], // 类型
        TRADE_STATUS_RECOVERY:[],
      },
      dictArrStr: {
        BATTERY_TYPE_str: '', // 类型翻译
        TRADE_STATUS_RECOVERY_str: '',
      }
    }
  },

在methods函数内部调用相关逻辑。

    _loadData() {
      // 调用字典列表接口
      this.getDictData('TRADE_STATUS_RECOVERY,BATTERY_TYPE')
    },
    getDictData(discts) {
      // 获取字典列表接口
      Portal.dictTypes(discts).then((resp) => {
        this.dictArr = resp.data
        this.dictArrStr.BATTERY_TYPE_str = this.methods.selectDictLabel(this.dictArr.BATTERY_TYPE, row.batteryType)
      })
    },

第三点涉及侧边栏菜单的添加配置。

首先,在pages目录下新建文件夹A,并在其中创建相关的子文件,命名为A1、A2等。

接着,在assets/js/centerMenu.js文件中添加路由配置。

evalbuy: [
    {
      "entity": {
        "id": 1,
        "parentMenuId": 0,
        "name": "/A/A1", // 路由地址
        "icon": "el-icon-rank",
        "alias": "菜单名称",
        "state": "ENABLE",
        "sort": 2,
        "value": null,
        "type": "NONE",
        "discription": "",
        "createUserId": 1
      },
      "childs": null
    },
}

第四部分讲解Layout(布局)的使用方式。

在layouts文件夹中创建一个布局文件,文件名可自定义,例如ALayout.vue。

在该文件中找到data方法,并在该位置进行修改配置。

data() {
    return {
      modulesName: "名字",
      moduleMenu: "evalbuy"     // centerMenu.js文件里面找到这个关键字段,渲染菜单
    }
  }

此外,若点击菜单后需在当前页面打开新页面且保持当前菜单高亮,需在layout/center/siderbar.vue页面中进行设置。

activeMenu() {
        // 其他不在左侧显示的路由菜单,但是跳转后的页面,在左侧想要有一个对应菜单高亮选中显示。
     if (this.$route.path.includes('/center/evalsell/initiateRecyclepic')) {
        this.active = '/center/evalsell/initiateRecycle' // 高亮菜单
      } else if (this.$route.path.includes('/center/evalsell/initiateTradepic')) {
        this.active = '/center/evalsell/initiateTrade' // 高亮菜单
      } else {
        this.active = this.$route.path // 刷新页面显示高光选中
      }
    },

TDK是网站标题(title)、描述(description)和关键词(keyword)的英文缩写。

设置TDK有助于页面SEO优化,因为搜索引擎蜘蛛爬取网站时最先获取的信息即为TDK。

设置TDK主要有两种方式。

第一种方式是在nuxt.config.js中设置全局的head TKD。

在使用该框架时,若页面中任意一处出现错误,均可能导致404页面或显示令人困惑的报错界面。

第二种方式是在单独页面中设置head的TKD:在xxx.vue文件中设置hid: 'name'表示唯一标识。若设置了局部页面的hid: 'name',它将自动覆盖全局的hid: 'name'。

在使用该框架时,若页面中任意一处出现错误,均可能导致404页面或显示令人困惑的报错界面。

第六部分介绍Iconfont图标的集成使用。

首先,前往iconfont官网下载iconfont.js,选择symbol模式并下载至本地。

其次,在assets目录中新建font文件夹及iconfont子文件夹,并将下载的文件放入其中。

在使用该框架时,若页面中任意一处出现错误,均可能导致404页面或显示令人困惑的报错界面。

接着,在assets目录的base.css文件中引入:@import '../fonts/iconfont/iconfont.css';

最后,在页面中直接使用图标。

<i class="iconfont icon-caidanshouqi"></i>

至此,关于Nuxt.js框架的使用小结介绍完毕,更多相关内容可搜索本站历史文章或继续浏览后续文章,感谢支持。

作者最新文章