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 分页获取数据(及更新子组件数据)


相关文章
|
5天前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
59 1
|
9天前
|
JavaScript 前端开发 安全
TypeScript的优势与实践:提升JavaScript开发效率
【10月更文挑战第8天】TypeScript的优势与实践:提升JavaScript开发效率
|
9天前
|
JavaScript 前端开发 IDE
深入理解TypeScript:提升JavaScript开发的利器
【10月更文挑战第8天】 深入理解TypeScript:提升JavaScript开发的利器
20 0
|
2天前
|
JavaScript 前端开发 测试技术
JavaScript与TypeScript:为何TypeScript成为大型项目的首选
JavaScript与TypeScript:为何TypeScript成为大型项目的首选
7 1
|
3天前
|
人工智能 JavaScript 网络安全
ToB项目身份认证AD集成(三完):利用ldap.js实现与windows AD对接实现用户搜索、认证、密码修改等功能 - 以及针对中文转义问题的补丁方法
本文详细介绍了如何使用 `ldapjs` 库在 Node.js 中实现与 Windows AD 的交互,包括用户搜索、身份验证、密码修改和重置等功能。通过创建 `LdapService` 类,提供了与 AD 服务器通信的完整解决方案,同时解决了中文字段在 LDAP 操作中被转义的问题。
|
5天前
|
存储 JSON JavaScript
Vue.js开发中基于localStorage与sessionStorage的本地存储利器:Vue-ls插件使用详解
Vue.js开发中基于localStorage与sessionStorage的本地存储利器:Vue-ls插件使用详解
15 0
|
5天前
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
38 0
|
5天前
|
JavaScript
深入解析:JS与Vue中事件委托(事件代理)的高效实现方法
深入解析:JS与Vue中事件委托(事件代理)的高效实现方法
14 0
|
5天前
|
存储 JavaScript 前端开发
Vue.js项目中全面解析定义全局变量的常用方法与技巧
Vue.js项目中全面解析定义全局变量的常用方法与技巧
9 0
|
6天前
|
JavaScript 前端开发
前端js,vue系统使用iframe嵌入第三方系统的父子系统的通信
前端js,vue系统使用iframe嵌入第三方系统的父子系统的通信