Nuxt 项目总结

渲染方式

ssr: 服务端渲染

返回的html有内容:
image
再看下返回的element:
image

客户端渲染

配置下,更改为客户端渲染
image
看下返回的内容:
image
再看下返回的element:
image

请求数据

useFetch

初始化数据时:

有些页面,初始化的数据是从接口查出来的。我们就需要用到useFetch()了
看下产品页:
image
产品页初始化的时候需要两个接口组装数据:

  • 分类接口
  • 产品列表接口
    所以在server底下我写了两个js:
    image
    在product.vue页面使用很简单:
    image
    image
    这样产品页的html中就有了分类和产品列表返回内容

重复使用数据时:

比如分类数据

  1. 对于后台管理页来说:
    使用的是useLazyFetch,这样返回html页面中是不会包含分类的数据,在导航之前就会请求数据,不会阻塞导航
    image
  2. 官网页
    还是使用的useFetch,会阻塞导航,拼装上数据之后返回完整的html页面
  • 在产品新增页使用到了分类
  • 在产品列表页按分类查询也用到了分类数据
  1. 哪些地方使用了?
    分类数据可以使用useFetch请求,这样请求的分类列表会存放到useNuxtData中,不需要每个使用分类数据的地方都查询下数据库
    但是在改变分类时,需要调用下刷新接口,缓存时间我再看看。。。。。
    image

$fetch

其他地方我好像都使用了$fetch

客户端调用接口跨域配置:

注: 跨域是浏览器产生的,接口放在server中是不会有跨域问题的

  nitro: {
    devProxy: {
      '/proxy': {
        target: process.env.DOMIN_NAME,
        changeOrigin: true,
        rewrite: (path: string) => path.replace(new RegExp('/proxy'), '') //这个就算不写替换,好像也自动去掉了,把这句话注释,也没有问题
      },
      '/file': {
        target: 'http://prexcgzjy.yzxsaas.com/file/', changeOrigin: true,
      }
    }
  },

组件

用到了element和swiper

element默认字体变为中文

 elementPlus: {
    importStyle: 'scss',
    defaultLocale: 'zh-cn'
  },

element自定义上传图片

上传图片时不要加content-type:''要不然上传不成功!!!
不会生成红框圈出的内容
image

return $fetch(url, {
    baseURL,
    method: 'POST',
    body: formData,
    headers: {
      token
    },
  })

swiper 怎么更改分页、上一页、下一页的样式

swiper-container::part(button-next) {}
swiper-container::part(button-prev) {}
swiper-container::part(pagination) {}

image

运行生产包

一定要加--dotenv这个参数哦,要不然读取不到参数
linux可以使用以下start.sh

#!/bin/bash
nohup node ./output/server/index.mjs --dotenv .env &
posted @ 2024-11-22 17:57  躺尸的大笨鸟  阅读(32)  评论(0)    收藏  举报