vue2项目如何规范整个项目的字体

写样式文件

在src/styles下新建一个font.scss文件,可以区分开发环境和生产环境写两个文件,然后里面定义不同的字体、不同的字体相关属性

可以定义一个公共路径的变量来简化url的书写

// 1. 声明字体家族
@font-face {
  font-family: 'PingFang SC';
  src: local('PingFang SC'),
       url('@/assets/fonts/PingFang-SC-Regular.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
  font-display: swap; // 优化字体加载策略
}

// 2. 定义字体变量
$font-family-base: -apple-system, BlinkMacSystemFont, 'PingFang SC', 'Microsoft YaHei', sans-serif;
$font-family-code: 'Source Code Pro', Menlo, Monaco, Consolas, monospace;

// 3. 定义字体大小变量
$font-size-base: 14px;
$font-size-lg: 16px;
$font-size-sm: 12px;
$font-size-xs: 10px;
$font-size-title: 20px;

// 4. 定义字重变量
$font-weight-normal: 400;
$font-weight-medium: 500;
$font-weight-bold: 600;

// 5. 定义行高变量
$line-height-base: 1.5;
$line-height-lg: 1.8;
$line-height-sm: 1.2;

还可以新建一些混入,写好一些字体的样式

@mixin text-primary {
  font-family: $font-family-base;
  font-size: $font-size-base;
  font-weight: $font-weight-normal;
  line-height: $line-height-base;
  color: #333333;
}

@mixin text-title {
  font-family: $font-family-base;
  font-size: $font-size-title;
  font-weight: $font-weight-bold;
  line-height: $line-height-lg;
  color: #000000;
}

@mixin text-small {
  font-family: $font-family-base;
  font-size: $font-size-sm;
  font-weight: $font-weight-normal;
  line-height: $line-height-sm;
  color: #666666;
}

还可以在src/styles/font.scss里面新建一些文本工具类

  1. 文本溢出省略处理
.text-ellipsis {
  overflow: hidden;        /* 隐藏溢出的文本 */
  text-overflow: ellipsis; /* 用省略号表示被截断的文本 */
  white-space: nowrap;     /* 文本不换行 */
}

使用场景:当文本内容超出容器宽度时显示省略号,比如:

<div class="text-ellipsis" style="width: 200px">
  这是一段很长的文本内容,超出部分会显示省略号...
</div>

  1. 多行文本省略
.text-ellipsis-2 {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;  /* 显示2行 */
  overflow: hidden;
}

使用场景:文章摘要、产品描述等需要显示固定行数的场景

  1. 文本换行处理
.text-break-word {
  word-wrap: break-word;   /* 允许在单词内换行 */
  word-break: break-all;   /* 允许在任意字符间换行 */
}

使用场景:处理长单词或URL导致的布局溢出问题

  1. 文本对齐
.text-left {
  text-align: left;
}
.text-center {
  text-align: center;
}
.text-right {
  text-align: right;
}

配置

在main.js里面配置

import '@/styles/fonts.scss'

在vue.config.j里面配置

module.exports = {
  css: {
    loaderOptions: {
      scss: {
        additionalData: `@import "@/styles/fonts.scss";`
      }
    }
  }
}

这段配置的作用和含义:

  1. additionalData: 这个选项会在每个 SCSS 文件的开头自动注入指定的内容
    • 相当于在每个使用 SCSS 的组件文件前都自动添加了 @import "@/styles/fonts.scss"
    • 这样你就可以在任何组件中直接使用 fonts.scss 中定义的变量和 mixin,而不需要手动导入
  2. 实际效果就像在每个组件的 style 标签中都自动添加了:
<style lang="scss">
@import "@/styles/fonts.scss";  // 自动注入
.your-component {
  // 这里可以直接使用 fonts.scss 中的变量和 mixin
  font-size: $font-size-base;
  @include text-primary;
}
</style>

不配置的话,你需要在每个需要使用这些变量的组件中手动导入

<!-- 不配置的话,你需要在每个需要使用这些变量的组件中手动导入 -->
<style lang="scss">
@import "@/styles/fonts.scss";  // 需要手动添加
.component { ... }
</style>

使用

这个是使用定义好的类

<template>
  <div class="article">
    <h1 class="article-title">文章标题</h1>
    <p class="article-content">文章内容</p>
    <div class="article-info text-ellipsis">附加信息</div>
  </div>
</template>

<style lang="scss" scoped>
  .article {
    &-title {
      @include text-title;
    }

    &-content {
      @include text-primary;
    }

    &-info {
      @include text-small;
    }
  }
</style>

这个就是拆出来用

<template>
  <div>
    <!-- 文本超出显示省略号 -->
    <div class="product-title text-ellipsis">
      这是一个很长的产品标题...
    </div>
    
    <!-- 使用预定义字体样式并添加省略号 -->
    <div class="description text-ellipsis">
      产品描述内容
    </div>
  </div>
</template>

<style lang="scss" scoped>
.product-title {
  @include text-title;
  width: 200px; // 限制宽度才能看到省略号效果
}

.description {
  @include text-primary;
  width: 300px;
}
</style>
<style lang="scss" scoped>
.custom-style {
  font-family: $font-family-base;
  font-size: $font-size-lg;
  font-weight: $font-weight-bold;
  line-height: $line-height-lg;
  
  // 可以添加其他样式
  color: #333;
  margin-bottom: 16px;
}
</style>
### Vue 2 项目的标准目录结构及文件组织方式 Vue.js 是一种流行的前端框架,其项目结构设计旨在提高可维护性和扩展性。以下是基于常见实践的 Vue 2 项目标准目录结构及其各部分的功能说明。 #### 1. `package.json` 文件 该文件定义了项目的元数据以及依赖项列表。它包含了构建工具所需的配置信息和脚本命令[^1]。 ```json { "name": "vue-project", "version": "1.0.0", "scripts": { "serve": "vue-cli-service serve", "build": "vue-cli-service build" }, "dependencies": { "vue": "^2.6.14" } } ``` #### 2. `node_modules` 文件夹 此文件夹存储由 npm 或 yarn 安装的所有第三方库和依赖项。通常不会被提交到版本控制系统中,而是通过运行 `npm install` 自动生成[^2]。 #### 3. `public` 文件夹 用于放置静态资源文件,这些文件会被直接复制到最终的构建输出目录下而不经过任何处理。典型的例子包括自定义图标 (`favicon.ico`) 和入口 HTML 页面 (`index.html`)[^3]。 #### 4. `src` 文件夹 (源码根目录) 这是应用程序的核心代码所在位置,具体子文件夹如下: - **assets/** 存储未编译的静态资产,比如图片、字体等。它们可以通过 Webpack 加载器进行处理并引入到组件中。 - **components/** 放置可重用的小型功能模块化组件,例如按钮、表单字段或其他 UI 元素。 - **views/** 包含页面级别的视图组件,通常是路由对应的顶层容器。 - **App.vue** 应用程序的主要模板文件,作为整个应用的外壳包裹其他组件。 - **main.js** 这是 JavaScript 的入口点,在这里初始化 Vue 实例并将根组件挂载到 DOM 上。 - **router/** 如果项目使用了 Vue Router,则在此处管理所有的路由规则和导航逻辑。 #### 5. 配置相关文件 除了上述核心组成部分外,还有一些重要的配置文件帮助开发者定制环境行为: - `.gitignore`: 列出了不需要跟踪的文件模式,防止敏感或无意义的数据进入仓库。 - `babel.config.js`: Babel 转译器的具体选项设定,支持 ES6+ 特性的兼容转换。 - `vue.config.js`: 可选配置文件,允许调整默认的 CLI 构建设置. --- ### 示例代码片段展示如何创建基本 Vue 组件 下面提供了一个简单的 Vue 组件示例来进一步理解这种分层架构的实际运用情况: ```javascript // src/components/ExampleComponent.vue <template> <div class="example"> {{ message }} </div> </template> <script> export default { name: 'ExampleComponent', data() { return { message: 'Hello from Example Component!' }; } }; </script> <style scoped> .example { color: blue; } </style> ``` --- ### 总结 以上即为典型 Vue 2 项目的标准化目录布局与相应职责划分方法论概述[^1]. 正确遵循这样的结构有助于团队协作效率提升同时也便于后期维护升级操作执行.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值