Nuxt.js(Vue SSR)项目配置以及开发细节

简介: Nuxt.js(Vue SSR)项目配置以及开发细节

一、项目中不要使用 v-if

  • 使用 v-if 会在查看源码的时候无法显示标签,需要换成 v-show

二、项目中跳转页面尽量使用 a 标签

  • 无论使用 vue router 还是使用 nuxt-link 都不如使用 a 标签,而且前两者在服务器渲染中有时候还会有别的问题发生,所以可以直接使用 a 标签省事,避免了坑。

三、项目中更换 favicon.ico 不生效,可以编译一下,启动正式环境,就生效了。

四、项目中 请求接口数据,并服务器渲染asyncData() 多接口请求的使用:

// asyncData 函数是 Nuxt.js 的生命周期函数,每个页面只能实现一次
// 多接口请求
async asyncData () {
  let [request1Data, request2Data, request3Data] = await Promise.all([
    getCreator(),
    getIndustryList()
    axios.get('http://localhost:3000/api/api/h5/creator/2795')
  ])
  return {
    creator: request1Data.data.data.channelCreator,
    videoList: request1Data.data.data.videoList,
    data2: request2Data.data
    data3: request3Data.data
  }
}
// 单个接口请求
asyncData () {
  return getCreator().then(res => {
    const { code, data } = res.data
    if (code === 0) {
      return {
        creator: data.channelCreator,
        videoList: data.videoList
      }
    }
  })
}

五、项目中 如何获取链接中带的参数,并使用:

// 这种方式获得的只能当前页面使用,但是无法参与服务器渲染使用,所以需要参与服务器渲染的还是得在 asyncData() 中获取 。
created () {
  // 初始化标签选中
  this.industry = this.$route.params.tag || 0
  // console.log(this.$route);
}
// asyncData() 函数里面会带回来一个上下文,这个对象里面有所有需要的对象集合
// https://www.nuxtjs.cn/api/context
asyncData (context) {
  ....
}
// 获取链接中带的参数
async asyncData ({ query, params }) {
  ....
}

六、项目中 自定义路由,类似 Vue 一样,找到 nuxt.config.js ,加上下面配置:

// 自定义路由,以及页面参数
router: {
  extendRoutes(routes, resolve) {
    routes.push(
      {
        name: 'creator',
        path: '/creator/:id?/:tag?',
        component: resolve(__dirname, 'pages/creator-view.vue')
      },
      {
        name: 'video',
        path: '/video/:id?',
        component: resolve(__dirname, 'pages/video-view.vue')
      }
    )
  }
},

七、项目中 添加代理,类似 Vue 一样,找到 nuxt.config.js,加上下面配置:

但是如果是 ssr 开发,就不存在跨域一说了,都是服务器直接组装好直接返回整个页面显示,因此也不需要配置。

axios: {
  proxy: true
},
proxy: {
  '/api': {
    target: 'http://10.0.90.164:8081/',
    changeOrigin: true,
    pathRewrite: {
      '^/api': ''
    }
  },
},

八、项目中添加 全局样式iconfont 等等,找到 nuxt.config.js,加上下面配置:

css: [
  'ant-design-vue/dist/antd.css',
  '~/assets/css/reset.css',
  '~/assets/iconfont/iconfont.css'
],
  • 如果需要重写路由拦截也可以添加到这里面
plugins: [
  '@/plugins/antd-ui',
  // '@/plugins/router', // 路由守卫
],

九、组件新建到自带的 components 文件夹中,可以直接使用,不需要在单个页面导入

十、组件中不能通过 asyncData 获取数据,虽然支持异步请求,但是不支持服务器渲染,如果组件需要支持服务器渲染,那还是得通过路由页面一块获取数据在传给组件使用。

十一、Nuxt.js 分页获取数据(及更新子组件数据)


相关文章
|
9月前
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
525 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
6月前
|
JavaScript 前端开发 UED
Vue 项目中如何自定义实用的进度条组件
本文介绍了如何使用Vue.js创建一个灵活多样的自定义进度条组件。该组件可接受进度段数据数组作为输入,动态渲染进度段,支持动画效果和内容展示。当进度超出总长时,超出部分将以红色填充。文章详细描述了组件的设计目标、实现步骤(包括props定义、宽度计算、模板渲染、动画处理及超出部分的显示),并提供了使用示例。通过此组件,开发者可根据项目需求灵活展示进度情况,优化用户体验。资源地址:[https://pan.quark.cn/s/35324205c62b](https://pan.quark.cn/s/35324205c62b)。
308 0
|
7月前
|
人工智能 监控 前端开发
基于 Next.js 的书法字体生成工具架构设计与 SSR 优化实践
本项目是一款书法字体生成工具,采用 Next.js 14(App Router)与 Tailwind CSS 构建前端,阿里云 Serverless 部署后端。通过混合渲染策略(SSG/SSR/CSR)、Web Worker 异步计算及 CDN 字体分片加载优化性能。服务端借助阿里云函数计算处理计算密集型任务,将平均耗时从 1200ms 降至 280ms,支持 1000+ QPS。动态路由与 ARMS 监控提升工程化水平,未来计划引入 WebGPU 和 AI 字体风格迁移技术,进一步优化用户体验。
|
8月前
|
JavaScript 安全 前端开发
关于Node.js,一定要学这个10+万Star项目 !!
一篇关于Node.js的宝藏项目——Node.js Best Practices。该项目在GitHub上已有102k Star,汇集了100+条最佳实践,涵盖架构、安全、性能等多方面。每条实践不仅有简明说明和详细解释,还附带代码示例及资源链接。文中通过三个实战案例(利用CPU多核、避免阻塞事件循环、使用中间件处理错误)展示了其实际应用价值,并推荐了几条对前端转Node.js开发者特别有用的最佳实践。强烈建议每位Node.js开发者学习此项目,理解“怎么做”与“为什么要这么做”,以提升开发能力。
325 3
|
10月前
|
前端开发 JavaScript Java
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
558 13
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
|
10月前
|
SQL JavaScript 安全
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
484 11
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
|
10月前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
505 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
9月前
|
资源调度 JavaScript 前端开发
Pinia 如何在 Vue 3 项目中进行安装和配置?
Pinia 如何在 Vue 3 项目中进行安装和配置?
788 4
|
JSON 监控 前端开发
配置Tree Shaking来减少JavaScript的打包体积
屏幕快照 2018-08-15 上午9.12.36.png 译者按: 用Tree Shaking技术来减少JavaScript的Payload大小 原文: Reduce JavaScript Payloads with Tree Shaking 译者: Fundebug 为了保证可读性,本文采用意译而非直译。
1362 0
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
305 2