1.0.0 • Published 1 year ago

@dragonfly-js/seed v1.0.0

Weekly downloads
-
License
ISC
Repository
github
Last release
1 year ago

Dragonfly 种子工程

使用方法

开始调试

进入项目根目录,运行 npm run start 命令,启动开发服务器。

在浏览器中访问 http://localhost:5173/,可以看到 dragonfly 应用已经正常启动。

构建生产包

运行 npm run build 执行项目编译,默认在 dist 目录下输出构建生产包。

代码检查

进入项目根目录,可执行以下命令进行多种文件格式的代码检查,默认检查 src 目录下的文件

# typescript 文件
npm run check-ts
npm run fix-ts

# scss,css 文件
npm run check-css
npm run fix-css

# html 文件
npm run check-html
npm run fix-html

通过执行 npm run format 对代码做代码风格格式化。

单元测试

Dragonfly 内置 Jest 和 @vue/test-utils 测试库,提供单元测试、组件/页面集成测试等功能。

src/__tests__ 目录下编写测试用例。

执行 npm run test:unit,会运行项目下所有的测试用例。

目录结构

|-- dist // 生产构建输出目录
|-- node_modules // 第三方依赖安装目录
|-- public // 第三方静态资源文件存放目录
|-- scripts // 定制化执行脚本
   |-- postBuild.js
|-- src // 源代码存放目录
   |-- __tests__ // 单元测试用例
   |-- assets // 静态资源文件
   |-- components // 公共组件
   |-- frameworks // 整体框架文件
   |-- i18n // 国际化文件
   |-- models // 常量类或数据类型文件
   |-- router // 路由定义文件
   |-- services // 公用逻辑处理或utils类文件
   |-- store // 数据存储操作文件
   |-- views // 页面层级组件
   |-- App.vue
   |-- main.ts
   |-- style.scss
   |-- typing.d.ts
   |-- vite-env.d.ts

国际化

Dragonfly 应用支持多语言切换即国际化功能,国际化资源文件存放在 src/i18n 目录下。

按照地域标识码规范,一个 json 文件对应一种语言,如 zh-CN 对应中文,en-US 对应英文。

src/frameworks/Framework.vue 下有一个基于 piniavue-i18n 实现国际化动态切换的示例:

<script setup lang="ts">
import { useI18n } from 'vue-i18n';
import pinia from '@/store/store';
import { useDataChangeStore } from '@/store/data-change';
import ProjectHeader from '@/components/ProjectHeader.vue';
const $i18n = useI18n();

const dataStore = useDataChangeStore(pinia);

dataStore.$subscribe((mutation) => {
  const data = mutation.events as any;
  if (data.key === 'lang') {
    const langMap = {
      'zh': 'zh-cn',
      'en': 'en-us',
    }
    const newLang = langMap[data.newValue as 'zh' | 'en'];
    if (newLang) {
      localStorage.setItem('lang', newLang);
      $i18n.locale = newLang as any;
      window.location.reload();
    }
  }
});

$i18n.locale = 'zh-cn' as any;
setTimeout(() => {
  $i18n.locale = 'en-us' as any;
}, 3000);

</script>

使用国际化文件只需要用 $t(key) 方法即可,如:

<template>
   <p>{{ $t('home.title') }}</p>
</template>

主题切换

Dragonfly 应用基于 DevUI Theme 提供的强大的主题定制方案能力,封装了多主题切换的功能:

// main.ts

// ...
import { ThemeServiceInit, devuiLightTheme, devuiDarkTheme, devuiGreenTheme, devuiGreenDarkTheme, ThemeService } from 'devui-theme';

const themeService = ThemeServiceInit(
  {
    'light-theme': devuiLightTheme,
    'dark-theme': devuiDarkTheme,
    'green-theme': devuiGreenTheme,
    'green-dark-theme': devuiGreenDarkTheme,
  },
  'light-theme'
) as ThemeService;
themeService.applyTheme(devuiLightTheme);

dataStore.$subscribe((mutation) => {
  const data = mutation.events as any;
  if (data.key === 'theme') {
    const themeMap = {
      light: devuiLightTheme,
      dark: devuiDarkTheme,
    };
    const newTheme = themeMap[data.newValue as 'light' | 'dark'];
    if (newTheme) {
      themeService.applyTheme(newTheme);
    }
  }
});

更多使用方法请参看:

参考链接

DevUI:

Vue: