nuxtjs + scss + unocss + pinia + i18n + 引入本地化字体 新建项目

1、通过命令行报错的,直接下载压缩包

pnpm dlx nuxi init <project-name>

压缩包地址:https://codeload.github.com/nuxt/starter/tar.gz/refs/heads/v3

2、安装插件

1、安装unocss

pnpm install --save-dev @unocss/nuxt unocss

# nuxt.config.js

  modules: [
    '@unocss/nuxt'
  ],

根目录下unocss.config.ts

import type { UserShortcuts } from 'unocss'
import {
  defineConfig,
  presetAttributify,
  presetIcons,
  presetTypography,
  presetUno,
  presetWebFonts,
  transformerDirectives,
  transformerVariantGroup,
} from 'unocss'
import { SHORTCUTS, THEME } from './constants/unocss'

export default defineConfig({
  shortcuts: SHORTCUTS as UserShortcuts<any>,
  presets: [
    presetUno(),
    presetAttributify(),
    presetIcons({
      scale: 1.2,
    }),
    presetTypography(),
    presetWebFonts({
      fonts: {
        sans: 'DM Sans',
        serif: 'DM Serif Display',
        mono: 'DM Mono',
      },
    }),
  ],
  transformers: [
    transformerDirectives(),
    transformerVariantGroup(),
  ],
  theme: {
    colors: {
      primary: THEME.PRIMARY,
    },
  },
})

根目录下新建constants/unocss.ts

export const SHORTCUTS = [
  ['btn', 'px-4 py-1 rounded inline-block bg-teal-600 text-white cursor-pointer hover:bg-teal-700 disabled:cursor-default disabled:bg-gray-600 disabled:opacity-50'],
  ['icon-btn', 'inline-block cursor-pointer select-none opacity-75 transition duration-200 ease-in-out hover:opacity-100 hover:text-teal-600'],
  ['full', 'h-screen w-screen overflow-hidden bg-cover bg-center'],
  ['position-center', 'absolute left-1/2 top-1/2 text-white -translate-x-1/2 -translate-y-1/2'],
]

export const THEME = {
  PRIMARY: '#00dfb9',
}

2、自动引入ref标签等

pnpm i unplugin-auto-import
# nuxt.config.ts
import AutoImport from 'unplugin-auto-import/vite'

  vite: {
    plugins: [
      AutoImport({
        // 可以自定义文件生成的位置,默认是根目录下,使用 ts 的建议放 src 目录下
        dts: 'src/auto-imports.d.ts',
        imports: ['vue'],
        // 解决 eslint 报错问题
        eslintrc: {
          enabled: true
        }
      })
    ]
  },

3、安装i18n插件

pnpm install @nuxtjs/i18n
// nuxt.config.ts 配置
  // 模块配置
  modules: [
    '@nuxtjs/i18n',
    '@unocss/nuxt',
    '@pinia/nuxt',
  ],

  // 国际化配置
  i18n: {
    // Module Options
    lazy: true,
    langDir: 'locales',

    strategy: 'prefix_except_default',
    locales: [
      {
        code: 'en',
        iso: 'en',
        name: 'English',
        file: 'en.yml'
      },
      {
        code: 'zh',
        iso: 'zh',
        name: 'Chinese',
        file: 'zh.yml'
      }
    ],
    defaultLocale: 'zh'
  },

根目录新建 i18n/locales 文件夹,里面放入对应的en.yml,zh.yml文件

4、引入本地化字体,需要修改这几个文件

# font.css
/* 定义 HarmonyOS Sans SC Black */
@font-face {
  font-family: 'HarmonyOS Sans SC';
  src: url('/fonts/HarmonyOS_Sans_SC_Black.ttf') format('truetype');
  font-weight: 900; /* Black 对应的权重 */
  font-style: normal;
  font-display: swap;
}

/* 定义 HarmonyOS Sans SC Bold */
@font-face {
  font-family: 'HarmonyOS Sans SC';
  src: url('/fonts/HarmonyOS_Sans_SC_Bold.ttf') format('truetype');
  font-weight: 700; /* Bold 对应的权重 */
  font-style: normal;
  font-display: swap;
}

/* 定义 HarmonyOS Sans SC Medium */
@font-face {
  font-family: 'HarmonyOS Sans SC';
  src: url('/fonts/HarmonyOS_Sans_SC_Medium.ttf') format('truetype');
  font-weight: 500; /* Medium 对应的权重 */
  font-style: normal;
  font-display: swap;
}

/* 定义 HarmonyOS Sans SC Regular */
@font-face {
  font-family: 'HarmonyOS Sans SC';
  src: url('/fonts/HarmonyOS_Sans_SC_Regular.ttf') format('truetype');
  font-weight: 400; /* Regular 对应的权重 */
  font-style: normal;
  font-display: swap;
}

/* 定义 HarmonyOS Sans SC Light */
@font-face {
  font-family: 'HarmonyOS Sans SC';
  src: url('/fonts/HarmonyOS_Sans_SC_Light.ttf') format('truetype');
  font-weight: 300; /* Light 对应的权重 */
  font-style: normal;
  font-display: swap;
}

/* 定义 HarmonyOS Sans SC Thin */
@font-face {
  font-family: 'HarmonyOS Sans SC';
  src: url('/fonts/HarmonyOS_Sans_SC_Thin.ttf') format('truetype');
  font-weight: 100; /* Thin 对应的权重 */
  font-style: normal;
  font-display: swap;
}

  // 全局 CSS 文件配置
  css: [
    'element-plus/dist/index.css',
    '~/styles/common.scss',
    '/public/fonts.css'
  ],

// 使用
font-family: 'HarmonyOS Sans SC', 'Open Sans', sans-serif;
posted @ 2025-03-04 19:55  DL·Coder  阅读(172)  评论(0)    收藏  举报