Skip to content
鼓励作者:欢迎打赏犒劳

nuxt3Js初体验

中文文档:https://nuxt.com.cn/

安装启动

官方方法:

shell
# npx
npx nuxi init nuxt-app
# pnpm
pnpm dlx nuxi init nuxt-app

国内拉取不了官网的示例脚手架,可以采用手动克隆模板仓库的方法。

shell
git clone -b v3 https://github.com/nuxt/starter.git nuxt3-demo

-b 是指定分支,现在最新的 nuxt 3 是在 v3 的分支上

拉取下来之后,yarn 一下安装依赖,然后启动即可。

遇到的坑

渲染方式

nuxt是ssr框架,所以js充当了服务端也充当了客户端,先渲染服务端再渲染客户端。所以在vue中写的js代码,会执行2遍。

配置文件

nuxt.config.ts文件可以配置

js
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
  compatibilityDate: '2024-11-01',
  devtools: { enabled: true },

  //运行时的一些全局变量
  runtimeConfig:{
    count:1, // 服务端才可以获取到
    public:{ // public下的配置客户端和服务端都可以获取
      baseURL:'http://127.0.0.1:8080',
    }
  }
})

vue

vue
<template>
  <div>
   1
  </div>
</template>
<script setup>
  const config = useRuntimeConfig()
  console.log(config.count)
  console.log(config.public.baseURL)
  // 另外的写法,直接用import.meta.server 来判断是否是服务端,更加方便
  if (import.meta.server) {
    console.log('server')
  }else{
    console.log('client')
  }
</script>

css配置

整合sass

shell
yarn add -D sass

新建文件 /assets/css/base.scss

shell
$myColor:green;

h1{
  color: red;
}

修改配置

js
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
    compatibilityDate: '2024-11-01',
    devtools: { enabled: true },

    /*引入css的两种写法,建议第二种,因为可以支持变量*/
    // css:["~/assets/css/base.scss"],
    vite:{
        css:{
            preprocessorOptions:{
                scss:{
                    additionalData: '@use "~/assets/css/base.scss" as *;'
                }
            }
        }
    },

    //运行时的一些全局变量
    runtimeConfig:{
        count:1,
        public:{
            baseURL:'http://127.0.0.1:8080',
        }
    }
})

app.vue

vue
<template>
  <div>
   1
    <h1>xx</h1>
  </div>
</template>
<script setup>
  const config = useRuntimeConfig()
  console.log(config.count)
  console.log(config.public.baseURL)
</script>
<style scoped lang="scss">
    div{
      background: $myColor;
    }
</style>

引入element-ui plus

shell
yarn add element-plus

全局引入

创建一个插件文件,例如 plugins/element-plus.js

js
import { defineNuxtPlugin } from '#app'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'

export default defineNuxtPlugin((nuxtApp) => {
  nuxtApp.vueApp.use(ElementPlus)
})

在 nuxt.config.ts 中注册该插件:

js
export default defineNuxtConfig({
  // ...
  plugins: [
    '~/plugins/element-plus.js',
  ],
  // ...
})

使用 Element Plus 组件

js
<template>
  <el-button type="primary">Primary Button</el-button>
</template>

如有转载或 CV 的请标注本站原文地址