安装sass

  1. npm install sass -D
  2. npm install sass-loader -D
  3. npm install node-sass -D

安装normalize.css初始化样式

npm install --save normalize.css

新建style目录保存各种样式

image.png

index.scss中组织这些样式,并编写全局样式

  1. @import "./normalize.css";
  2. @import "./element-ui.scss";
  3. @import "./transition.scss";
  4. @import "./variable.scss";
  5. @import "./theme.scss";
  6. body {
  7. margin: 0;
  8. padding: 0;
  9. box-sizing: border-box;
  10. background-color: $color-background-base;
  11. }

main.js中引入index.scss

  1. import {createApp} from 'vue'
  2. import App from './App.vue'
  3. import router from '@/router';
  4. import store from '@/store';
  5. import '@/assets/style/index.scss'
  6. const app = createApp(App)
  7. app.use(router)
  8. app.use(store)
  9. app.mount('#app')

vite.config.js添加全局scss变量文件

  1. import {defineConfig} from 'vite'
  2. import vue from '@vitejs/plugin-vue'
  3. import path from 'path';
  4. // https://vitejs.dev/config/
  5. export default defineConfig({
  6. alias: {
  7. '@': path.resolve(__dirname, 'src')
  8. },
  9. plugins: [vue()],
  10. css: {
  11. preprocessorOptions: {
  12. scss: {
  13. additionalData: `@import "@/assets/style/variable.scss";`
  14. }
  15. }
  16. }
  17. })

Home.vue使用全局变量

  1. <template>
  2. <h1>这是首页</h1>
  3. <button @click="valueAdd">{{ value }}</button>
  4. </template>
  5. <script setup>
  6. import store from '@/store/index'
  7. import {computed} from "vue";
  8. const value = computed(() => store.state.count)
  9. const valueAdd = () => {
  10. store.commit('add')
  11. }
  12. </script>
  13. <style scoped lang="scss">
  14. h1 {
  15. color: $color-primary;
  16. }
  17. </style>