[绍棠] nuxt中scss使用并可全局使用变量

1.插件安装:

npm install css-loader node-sass postcss-loader sass-loader style-loader --save -dev


2.在项目的assets目录下新建一个css目录,然后在该目录下新建一个index.scss文件,用这个文件作为scss的入口文件,在这个文件里引入其他的scss即可,例如:

  

3.nuxt.config.js中配置:

module.exports {
	css: [
	    {src: '~static/css/index.scss', lang: 'scss'} // 指定
	  ],
}


经过以上配置发现,index.scss中的样式可以在项目中使用了,但遇到了一个问题:
index.scss中的变量不能再页面中直接使用,需要在页面中单独引入才能使用,很麻烦。

4.scss变量全局使用:
参考文档:官网

npm install @nuxtjs/style-resources


nuxt.config.js

module.exports {
	css: [
	    {src: '~static/css/index.scss', lang: 'scss'} // 指定
	  ],
	modules: [
	    // Doc: https://axios.nuxtjs.org/usage
	    '@nuxtjs/axios',
	    '@nuxtjs/style-resources'
	  ],
	  styleResources: {
	    scss: './static/css/index.scss'
	  },
}



然后页面中就可以直接使用啦:

<template>
  <div class="login">
    <div class="login-top">
      
    </div>
  </div>
</template>
<script>
  
</script>
<style lang="scss" scoped>
.login-top {
  height: 3.2rem;
  background: $tmColor;
}
</style>

### 如何在 Nuxt.js 中配置和使用 SCSS 样式文件 要在 Nuxt.js 项目中使用 SCSS 样式文件,可以通过以下几个方面来完成配置: #### 1. 安装必要的依赖 为了支持 SCSS 文件的编译,需要安装 `sass` 和 `sass-loader` 工具。此外,还需要安装 `@nuxtjs/style-resources` 插件以便于管理全局样式资源。 运行以下命令以安装所需依赖: ```bash npm install --save-dev sass sass-loader @nuxtjs/style-resources ``` 此步骤确保了项目的构建工具能够解析处理 SCSS 文件[^3]。 --- #### 2. 修改 `nuxt.config.js` 配置文件 在 `nuxt.config.js` 文件中添加 `modules` 和 `styleResources` 的相关内容。以下是完整的配置示例: ```javascript export default { modules: [ '@nuxtjs/axios', '@nuxtjs/proxy', '@nuxtjs/style-resources' // 添加 style-resources 模块 ], styleResources: { scss: [ '@/assets/scss/variables.scss', // 全局变量文件路径 '@/assets/scss/mixins.scss' // 全局混入文件路径 ] } } ``` 通过上述配置,可以将指定的 SCSS 文件作为全局资源加载到整个项目中,从而无需在每个组件中单独引入这些文件。 --- #### 3. 创建全局 SCSS 资源文件 通常会创建一个专门用于存储全局样式的目录(如 `assets/scss`),将常用的 SCSS 变量、函数或混入选项放入其中。例如,在 `assets/scss` 下分别创建两个文件: - **`variables.scss`**: 存储全局使用的颜色、字体大小等变量。 ```scss $primary-color: #4CAF50; $text-color: #333; // 更多变量... ``` - **`mixins.scss`**: 定义可重用的功能性代码片段。 ```scss @mixin flex-center() { display: flex; justify-content: center; align-items: center; } // 更多混入... ``` 这样设置后,所有的 Vue 组件都可以直接访问定义好的变量和混入选项而不需要额外声明[^5]。 --- #### 4. 使用 SCSS 在单个组件中 即使设置了全局资源,仍然可以在特定组件内部编写局部作用域内的 SCSS 规则。只需在 `<style>` 标签上加上 `lang="scss"` 属性即可启用 SCSS 支持。如下所示: ```vue <template> <div class="example">这是一个例子</div> </template> <style lang="scss"> .example { color: $text-color; // 利用了全局变量 font-size: 18px; &:hover { background-color: lighten($color: $primary-color, $amount: 20%); } } </style> ``` 注意这里的 `$text-color` 是之前定义过的全局变量,因此可以直接调用它而不需重新导入任何东西[^1]。 --- ### 总结 以上方法展示了如何顺利地集成 SCSSNuxt.js 应用程序当中,利用插件简化了维护工作流程的过程。最终目的是让开发者更方便快捷地管理和应用一致性的视觉设计风格。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值