如何引入全局样式文件?

背景

在编写样式时,为了提高样式的复用性和可维护性,通常我们会把常用的常量、颜色、字体等信息封装到一个单独的公共样式变量文件中,然后全局引入到项目中。进而在任何组件中不需要再单独引用,直接使用变量即可。

通过定义全局变量可以减少我们项目中的重复代码,并且在需要修改某个常量或样式时,只需修改全局变量的值,而不需要逐个修改每个使用该值的地方。

那么就有了今天我们要讨论的问题,当我们使用lesssass预处理器定义样式变量时,该如何在全局中使用其变量呢?

如何在項目中引入针对全局的lesssass文件

第一步:创建全局样式文件

首先,你需要创建一个全局样式文件,用于包含项目中的全局样式规则。

第二步:定义全局样式

在全局样式文件中,你可以定义一些适用于整个项目的样式规则,比如重置样式、基本样式设置等。

第二步:配置项目中的引入配置文件

  • vue-cli2

在项目根目录/build/utils.js

js 复制代码
function lessResourceLoader() {
    // 定义加载器数组
    var loaders = [
      cssLoader, // 加载 CSS 文件的加载器
      'less-loader', // 加载 Less 文件的加载器
      {
        loader: 'sass-resources-loader', // 使用 sass-resources-loader 加载器
        options: {
          resources: [ // 资源文件路径数组
            // 导入公共 Less 文件路径
            path.resolve(__dirname, '../src/assets/css/common.less'),//注意这里的路径要改成你自己的全局样式文件的相对路径
          ]
        }
      }
    ];
    // 如果设置了提取选项
    if (options.extract) {
      // 返回使用 ExtractTextPlugin 插件提取样式文件的配置
      return ExtractTextPlugin.extract({
        use: loaders, // 使用加载器数组
        fallback: 'vue-style-loader' // 使用 vue-style-loader 作为回退加载器
      })
    } else {
      // 返回加载器数组,以 vue-style-loader 作为首个加载器
      return ['vue-style-loader'].concat(loaders)
    }
}

// 返回不同类型样式文件的加载器配置对象
return {
  // CSS 文件加载器配置
  css: generateLoaders(),
  // PostCSS 加载器配置
  postcss: generateLoaders(),
  // Less 文件加载器配置
  less: lessResourceLoader(), // 调用 lessResourceLoader 函数获取 Less 文件加载器配置
  // Sass 文件加载器配置
  sass: generateLoaders('sass', { indentedSyntax: true }), // 使用缩进语法
  // SCSS 文件加载器配置
  scss: generateLoaders('sass'),
  // Stylus 文件加载器配置
  stylus: generateLoaders('stylus'),
  // Styl 文件加载器配置
  styl: generateLoaders('stylus')
}
  • vue-cli3
  1. 安装Webpack插件style-resources-loader

安装时,我们要选择less预处理器对应的版本。

csharp 复制代码
vue add style-resources-loader
  1. 配置vue.config.js文件:

这里我们使用的是 Node.js 中的路径解析表达式,目的是获取特定全局样式文件的绝对路径。但是要注意的是,这里不可使用别名路径,否则会导致错误。

javascript 复制代码
const { defineConfig } = require('@vue/cli-service') // 引入 defineConfig 方法
const path = require('node:path') // 引入 Node.js 中的 path 模块

module.exports = defineConfig({
  // 全局配置使用less变量
  pluginOptions: {
    'style-resources-loader': { // 使用 style-resources-loader 插件配置全局样式资源
      preProcessor: 'less', // 预处理器为 Less
      patterns: [ // 匹配的资源文件路径数组
        path.resolve(__dirname, "./src/assets/css/lessGlobalVars.less") // Less 全局变量文件路径
      ]
    }
  }
})
  • vite

vite.config.js文件中

js 复制代码
return{
    css: {
            preprocessorOptions: {
                less: {
                    additionalData: `@import "${path.resolve(__dirname, `src/assets/styles/globalVar.less`)}";` // 引入全局变量文件路径

                }
            }
       },
}
相关推荐
m0_7482309423 分钟前
Redis 通用命令
前端·redis·bootstrap
YaHuiLiang1 小时前
一切的根本都是前端“娱乐圈化”
前端·javascript·代码规范
ObjectX前端实验室2 小时前
个人网站开发记录-引流公众号 & 谷歌分析 & 谷歌广告 & GTM
前端·程序员·开源
CL_IN2 小时前
企业数据集成:实现高效调拨出库自动化
java·前端·自动化
浪九天3 小时前
Vue 不同大版本与 Node.js 版本匹配的详细参数
前端·vue.js·node.js
qianmoQ4 小时前
第五章:工程化实践 - 第三节 - Tailwind CSS 大型项目最佳实践
前端·css
椰果uu4 小时前
前端八股万文总结——JS+ES6
前端·javascript·es6
微wx笑5 小时前
chrome扩展程序如何实现国际化
前端·chrome
~废弃回忆 �༄5 小时前
CSS中伪类选择器
前端·javascript·css·css中伪类选择器
CUIYD_19895 小时前
Chrome 浏览器(版本号49之后)‌解决跨域问题
前端·chrome