Nuxt.js 框架实战:错误处理、字典翻译与布局配置
本文总结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。

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

第六部分介绍Iconfont图标的集成使用。
首先,前往iconfont官网下载iconfont.js,选择symbol模式并下载至本地。
其次,在assets目录中新建font文件夹及iconfont子文件夹,并将下载的文件放入其中。

接着,在assets目录的base.css文件中引入:@import '../fonts/iconfont/iconfont.css';
最后,在页面中直接使用图标。
<i class="iconfont icon-caidanshouqi"></i>至此,关于Nuxt.js框架的使用小结介绍完毕,更多相关内容可搜索本站历史文章或继续浏览后续文章,感谢支持。
Vue 3 核心变化解析:Composition API 与响应式系统详解
2026-11-03 21:33:38
viewer.js v1 升级到 v2 需要注意哪些 API 变更
2026-11-03 20:42:00
Vue3 与 React 中怎么封装 hls.js 播放器组件
2026-11-03 11:13:51
Vue.js官网访问慢或打不开怎么办?国内镜像与GitHub备用方案
2026-11-02 09:19:09
利用Axios实现无感知双Token刷新的详细教程
2026-11-01 03:11:12
相关标签:
