001 🍇项目搭建(一)——创建Nuxt项目和建立约定目录

519 阅读2分钟
  • Nodejs >= 20.0.0
  • pnpm >= 7.x

1.初始化

npx nuxi init <project-name>
# 安装依赖:
npm i
# 运行项目:
npm run dev

2.安装依赖

二、新建约定目录

1. app(src) 项目目录

  1. 根目录新建文件夹 appsrc
  2. 把 app.vue 文件移入到 src 目录下
  3. 修改配置文件 nuxt.config.ts
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
  srcDir: 'src/',
})

2. pages 页面路由

  1. 新建 src/pages 目录:
  2. 新建 src/pages/index.vue 首页
  3. 修改 src/app.vue 入口
<template>
  <div>
    <!-- 路由出口 -->
    <NuxtPage></NuxtPage>
  </div>
</template>

3. 新增 layouts 模板

放入 如header,footer等 通用模板

  1. 新建 src/layouts 目录
  2. 新建 src/layouts/default.vue 默认模板文件
<template>
 <div>
   <h1>这里是默认模板,可以添加在所有页面,也可单独添加</h1>
   <slot />
 </div>
</template>
  1. 在全局页面中配置: src/app.vue(也就是每个页面中都会有该模板)
<template>
  <div>
    <!-- 路由出口 -->
    <NuxtLayout>
      <NuxtPage></NuxtPage>
    </NuxtLayout>
  </div>
</template>
  1. 自定义模板(类似 header、footer)
<template>
  <header class="header">
    <h1>默认模板 header</h1>
  </header>
</template>	
  1. 使用自定义模板
<template>
  <div>
    <NuxtLayout name="header"/>
    <NuxtLink to="/list">进入列表页</NuxtLink>
  </div>
</template>

4. 配置组件 components

  1. 新建 src/components 目录**
  2. 新建 src/components/[classname].vue 文件

nuxt可以自己导入 components 嵌套目录组件使用

 components/
 --| list/
 ----| detail/
 ------| Button.vue
那么我们可以直接在其它地方使用:
<ListDetailButton />

5. 配置静态资源 assets 和 全局css

css 的集成有多种方式,有使用原生 css 的,也有使用 less 和 scss 的,也有使用 stylus 的; 下面主要以 scss 为例; 1. 安装:

pnpm install sass --save-dev

2. 新建 src/assets/styles 目录添加默认 default.scss

$bgColor: rgb(125, 159, 172);
$theme: red;

3. 在 nuxt.config.ts 中添加 scss 的配置

export default defineNuxtConfig({
    vite: {
        css: {
            preprocessorOptions: {
                scss: {
                    additionalData: '@import "@/assets/styles/default.scss";'	
                }
            }
        }
    }
})

4. 使用

<style lang="scss">
body {
  background-color: $bgColor;
  color: $theme;
}
</style>

6. 配置插件 plugins

Nuxt 会自动读取 plugins 目录中的文件并在创建 Vue 应用程序时加载它们;

你可以在文件名中使用 .server 或 .client 后缀来让插件在 服务器端 或 客户端 加载插件; 1. 新建 src/plugins 目录

2. 以 vue 指令为例:新建 src/plugins/directives.ts 文件

export default defineNuxtPlugin((nuxtApp) => {
  nuxtApp.vueApp.directive('focus', {
    mounted (el) {
      el.focus()
    },
    getSSRProps (binding, vnode) {
      // you can provide SSR-specific props here
      return {}
    }
  })
})

7. 用 composables 灵活配置 hooks

可参考[[useState - Nuxt3中的全局状态管理]]

1. 新建 src/composables 目录 2. 新建 src/composables/useFoo.ts 文件

export const useFoo = () => {
  return useState('foo', () => 'bar')
}

3. 在 src/pages/index.vue 中使用

<template>
  <div>
    <h1>欢迎来到第一个页面</h1>
    <NuxtLink to="/list">进入列表页</NuxtLink>
  </div>
</template>

<script setup>
  const foo = useFoo()
</script>

8. server 目录下的api路由

9. middleware 路由中间件

10. nuxt.config.ts 配置

css

你可以定义你想要全局设置的CSS文件/模块/库(包含在每个页面中)。 next将根据扩展名自动猜测文件类型,并使用适当的预处理器。 如果需要使用所需的加载程序,您仍然需要安装它们。

// nuxt.config.js
export default defineNuxtConfig({
css: [
  // Load a Node.js module directly (here it's a Sass file).
  'bulma',
  // CSS file in the project
  '~/assets/css/main.css',
  // SCSS file in the project
  '~/assets/css/main.scss'
]
})