yuncishuzi / iui-design

A uniapp UI compoents library
https://iyunci.cn/design/uni
Apache License 2.0
41 stars 6 forks source link

[H5打包] 打包后的样式很多都是重复的 #19

Open github-lxb opened 1 year ago

github-lxb commented 1 year ago

iui-design 版本

1.0.0-alpha.5

重现步骤

按照文档中所提示的步骤

  1. 使用 cli 方式创建项目
  2. 在 uni.scss 中引入主题样式和变量 @import "iui-design/style/theme.scss";
  3. 在 App.vue 中引入全局样式 @import "iui-design/style/index.scss";
  4. 配置 easycom 模式 "^iui-(.*)": "iui-design/components/iui-$1/iui-$1.vue"

在首页中使用使用常用的一些组件

<template>
  <iui-divider />

  <iui-space>
    <iui-button
      type="primary"
      @click="handleClick"
    >
      主要按钮
    </iui-button>
    <iui-button
      type="secondary"
      @click="to"
    >
      次要按钮
    </iui-button>
    <iui-button type="outline">线框按钮</iui-button>
  </iui-space>

  <iui-popup
    v-model="popupVisible"
    title="Title"
    slide
  >
    <view> Content area, click mask to close</view>
  </iui-popup>
</template>

<script setup>
const popupVisible = ref(false)

function handleClick() {
  popupVisible.value = true
}

function to() {
  uni.navigateTo({
    url: '../example/index'
  })
}
</script>

期望结果

  1. 期望把 ui 组件库中的全局(css变量、申明动画)只被引用一次
  2. 由于 uni.scss 是会插入到每一个组件的样式中,按照文档中提示,在 uni.scss 中引入主题样式和变量,翻看源码的时候,发现 iui-design/style/theme.scss 这个文件中还写了部分样式,样式如下,这就导致在每一个组件中重复这样的样式
    
    page {
    line-height: 1.5;
    }

// H5特有样式 .dark { :deep(.uni-picker-view-mask) { background-image: linear-gradient(180deg, $color-bg-secondary), linear-gradient(0deg, $color-bg, $color-bg); } }

@media (prefers-color-scheme: dark) { :deep(.uni-picker-view-mask) { background-image: linear-gradient(180deg, $color-bg-secondary), linear-gradient(0deg, $color-bg, $color-bg); } }



### 实际结果

ui 组件库中的 全局(css变量、申明动画)出现了4次

![image](https://github.com/yuncishuzi/iui-design/assets/51040135/11b66522-6db9-475b-88fe-de8f33bf2268)

### 框架版本

uni-app(3.8.12.20230817)

### 浏览器版本

_No response_

### 系统版本

_No response_

### 运行平台

H5

### 补充说明

_No response_