vue2使用scss,并且全局引入公共scss样式变量

文章讲述了如何在Vue项目中安装和配置node-sass、sass-loader、style-loader和sass-resources-loader。通过npm安装这些依赖后,在vue.config.js中配置sass-resources-loader,设置公共scss文件路径,以便全局使用变量。此外,还提及了devServer的代理配置以及在组件内部如何使用定义的样式变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装node-sass、sass-loader、style-loader、sass-resources-loader

npm install node-sass --save-dev
npm install sass-loader --save-dev
npm install style-loader --save-dev  
npm install sass-resources-loader --save-dev

配置sass-resources-loader入口文件

在vue.config.js中

const {
  defineConfig
} = require('@vue/cli-service');

module.exports = defineConfig({
  transpileDependencies: true,
  devServer: {
    proxy: { //代理配置
      //...
  },
  chainWebpack: config => {
    // sass-resources-loader 公共样式文件配置,可全局使用变量
    const oneOfsMap = config.module.rule('scss').oneOfs.store
    oneOfsMap.forEach(item => {
      item
        .use('sass-resources-loader')
        .loader('sass-resources-loader')
        .options({
          // 写入定义基础样式的scss文件路径
          resources: [
            './src/assets/styles/common.scss',
            
          ]
        })
        .end()
    })
  },

});

在assets下新建style文件,并新建common.scss样式文件。

//./src/assets/styles/common.scss ----公共样式文件

$price-color:#8B0000;

组件内使用:

style标签添加 lang="scss"

//组件内使用
<style lang="scss" scoped>

//样式变量使用
.price {
  color: $price-color;
}
</style>
### 创建可复用的 ECharts 组件 为了在 Vue 2 中创建一个可复用的 ECharts 组件,可以通过定义一个通用的基础组件来实现。这个基础组件能够接收配置项并通过 props 来传递给 ECharts 实例化对象。 #### 安装依赖包 首先安装 echarts 和 vue-echarts: ```bash npm install echarts vue-echarts --save ``` #### 基础组件结构设计 构建名为 `BaseEcharts` 的基础组件文件如下所示: ```vue <template> <v-chart :options="chartOptions"/> </template> <script> import ECharts from 'vue-echarts' import 'echarts' export default { name: "BaseEcharts", components: { 'v-chart': ECharts }, props: ['chartData'], data() { return {}; }, computed: { chartOptions() { let options = this.chartData; return options; } }, mounted(){ // 初始化图表大小适应容器宽度高度自适应 window.addEventListener('resize',this.resizeHandler); }, beforeDestroy(){ window.removeEventListener('resize',this.resizeHandler); }, methods:{ resizeHandler(){ this.$refs.echartsChart && this.$refs.echartsChart.resize(); } } } </script> <style scoped> .v-chart { width: 100%; height: 400px; } </style> ``` 此代码片段展示了如何设置一个基本的 ECharts 组件[^2]。通过这种方式,任何想要使用的父级组件都可以向 BaseEcharts 发送特定的数据集和样式选项,从而轻松地重用该组件并展示不同类型的图表。 #### 使用示例 假设有一个页面需要同时显示柱状图和饼图,则可以在相应视图中这样调用上述封装好的组件: ```html <div id="app"> <!-- 柱状图 --> <base-echarts :chart-data="barChartData"></base-echarts> <!-- 饼图 --> <base-echarts :chart-data="pieChartData"></base-echarts> </div> ``` 其中 barChartData 和 pieChartData 是预先准备好的两组不同的 ECharts 图表配置参数,它们分别描述了各自要呈现的内容特性[^3]。 #### 处理多实例问题 当尝试在同一页面上多次使用相同的 ECharts 组件时可能会遇到仅渲染第一个图表的情况。为了避免这种情况发生,确保每次初始化新的 ECharts 实例之前都销毁之前的实例,并且为每个图表分配唯一的 DOM 节点 ID 或者利用 ref 属性区分各个图表实例[^5]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值