refactor: 迁移 sass 模块语法

This commit is contained in:
2026-03-11 14:27:01 +08:00
parent b050c01a24
commit b4c36923ea
50 changed files with 71 additions and 70 deletions

View File

@@ -35,7 +35,7 @@
- 静态样式禁止直接写在模板的 `style=""` 上;改成语义类名并落到 `scss` 文件。
## Vue 文件拆分规范
- 页面入口固定为 `src/pages/**/index.vue`,只保留模板、薄胶水脚本和 `@import './styles/index.scss'`;业务加载、计算、提交流程统一下沉到 `composables/useXxxPage.ts`
- 页面入口固定为 `src/pages/**/index.vue`,只保留模板、薄胶水脚本和 `@use './styles/index.scss'`;业务加载、计算、提交流程统一下沉到 `composables/useXxxPage.ts`
- 复杂页面必须继续二级拆分到 `src/pages/**/composables/<page-key>/`,至少按 `helpers.ts``*actions.ts``constants.ts` 这类职责拆开,不要把大段流程重新塞回 `useXxxPage.ts`
- 页面样式固定放在 `src/pages/**/styles/``styles/index.scss` 只负责聚合;当样式超过 150 行或已经出现多个视觉域时,必须拆成 `base.scss``card.scss``submit.scss` 这类分片。
- 根组件固定使用目录入口:`src/components/<kebab-name>/index.vue`,并通过 `@/components/<kebab-name>/index.vue` 引用,不再新增平铺的 `src/components/*.vue`

View File

@@ -1,5 +1,4 @@
@import '@nutui/nutui-taro/dist/style.css';
@import './styles/variables';
@use './styles/variables' as *;
page {
min-height: 100%;

View File

@@ -1,4 +1,5 @@
import { createApp } from 'vue'
import '@nutui/nutui-taro/dist/style.css'
import './app.scss'
import { setRequestHeaderProvider } from '@/services'
import { pinia, useAppStore, useCustomerStore } from '@/stores'

View File

@@ -112,5 +112,5 @@ const emit = defineEmits<{
</script>
<style lang="scss">
@import './styles/index.scss';
@use './styles/index.scss';
</style>

View File

@@ -1,4 +1,4 @@
@import '../../../styles/variables';
@use '../../../styles/variables' as *;
.cart-drawer {
position: fixed;

View File

@@ -1,4 +1,4 @@
@import '../../../styles/variables';
@use '../../../styles/variables' as *;
.cart-drawer__empty {
display: flex;

View File

@@ -1,4 +1,4 @@
@import '../../../styles/variables';
@use '../../../styles/variables' as *;
.cart-drawer__footer {
flex-shrink: 0;

View File

@@ -1,4 +1,4 @@
@import './base.scss';
@import './list.scss';
@import './footer.scss';
@import './empty.scss';
@forward './base.scss';
@forward './list.scss';
@forward './footer.scss';
@forward './empty.scss';

View File

@@ -1,4 +1,4 @@
@import '../../../styles/variables';
@use '../../../styles/variables' as *;
.cart-drawer__list {
padding: 0 20px;

View File

@@ -26,5 +26,5 @@ const { hasExtra } = usePageHero()
</script>
<style lang="scss">
@import './styles.scss';
@use './styles.scss';
</style>

View File

@@ -62,5 +62,5 @@ const { tagClass } = useProductCard(props)
</script>
<style lang="scss">
@import './styles.scss';
@use './styles.scss';
</style>

View File

@@ -1,4 +1,4 @@
@import '../../styles/variables';
@use '../../styles/variables' as *;
.product-card {
background: $card;

View File

@@ -42,5 +42,5 @@ const { handleSelect } = useSceneSwitcher(emit)
</script>
<style lang="scss">
@import './styles.scss';
@use './styles.scss';
</style>

View File

@@ -149,5 +149,5 @@ const { tagClass } = useSpecPopup()
</script>
<style lang="scss">
@import './styles/index.scss';
@use './styles/index.scss';
</style>

View File

@@ -1,4 +1,4 @@
@import '../../../styles/variables';
@use '../../../styles/variables' as *;
.spec-popup {
position: fixed;

View File

@@ -1,4 +1,4 @@
@import '../../../styles/variables';
@use '../../../styles/variables' as *;
.spec-popup__footer {
padding: 14px 20px;

View File

@@ -1,4 +1,4 @@
@import '../../../styles/variables';
@use '../../../styles/variables' as *;
.spec-popup__header {
display: flex;

View File

@@ -1,5 +1,5 @@
@import './base.scss';
@import './header.scss';
@import './options.scss';
@import './stepper.scss';
@import './footer.scss';
@forward './base.scss';
@forward './header.scss';
@forward './options.scss';
@forward './stepper.scss';
@forward './footer.scss';

View File

@@ -1,4 +1,4 @@
@import '../../../styles/variables';
@use '../../../styles/variables' as *;
.spec-popup__group {
padding: 16px 20px;

View File

@@ -1,4 +1,4 @@
@import '../../../styles/variables';
@use '../../../styles/variables' as *;
.spec-popup__stepper-row {
display: flex;

View File

@@ -37,6 +37,6 @@ const {
</script>
<style lang="scss">
@import './styles/index.scss';
@use './styles/index.scss';
</style>

View File

@@ -21,6 +21,6 @@ const { handleInput, handleSave, tableNo } = useDineInConfirmPage()
</script>
<style lang="scss">
@import './styles/index.scss';
@use './styles/index.scss';
</style>

View File

@@ -130,5 +130,5 @@ const {
</script>
<style lang="scss">
@import './styles/index.scss';
@use './styles/index.scss';
</style>

View File

@@ -1,4 +1,4 @@
@import '../../../styles/variables';
@use '../../../styles/variables' as *;
.home-page {
min-height: 100vh;

View File

@@ -1,4 +1,4 @@
@import '../../../styles/variables';
@use '../../../styles/variables' as *;
.home-page__categories {
display: grid;

View File

@@ -1,4 +1,4 @@
@import '../../../styles/variables';
@use '../../../styles/variables' as *;
.home-page__fab {
position: fixed;

View File

@@ -1,5 +1,5 @@
@import './base.scss';
@import './banner.scss';
@import './category.scss';
@import './trust.scss';
@import './fab.scss';
@forward './base.scss';
@forward './banner.scss';
@forward './category.scss';
@forward './trust.scss';
@forward './fab.scss';

View File

@@ -1,4 +1,4 @@
@import '../../../styles/variables';
@use '../../../styles/variables' as *;
.home-page__trust {
background: $card;

View File

@@ -162,5 +162,5 @@ const {
</script>
<style lang="scss">
@import './styles/index.scss';
@use './styles/index.scss';
</style>

View File

@@ -1,4 +1,4 @@
@import '../../../styles/variables';
@use '../../../styles/variables' as *;
.menu-page {
min-height: 100vh;

View File

@@ -1,4 +1,4 @@
@import '../../../styles/variables';
@use '../../../styles/variables' as *;
.menu-page__cart-bar {
position: fixed;

View File

@@ -1,3 +1,3 @@
@import './base.scss';
@import './sections.scss';
@import './cart.scss';
@forward './base.scss';
@forward './sections.scss';
@forward './cart.scss';

View File

@@ -1,4 +1,4 @@
@import '../../../styles/variables';
@use '../../../styles/variables' as *;
.menu-page__section {
margin-top: 4px;

View File

@@ -208,5 +208,5 @@ const {
</script>
<style lang="scss">
@import './styles/index.scss';
@use './styles/index.scss';
</style>

View File

@@ -1,4 +1,4 @@
@import '../../../../styles/variables';
@use '../../../../styles/variables' as *;
.od-page {
min-height: 100vh;

View File

@@ -1,4 +1,4 @@
@import '../../../../styles/variables';
@use '../../../../styles/variables' as *;
.od-page__bottom-bar {
position: fixed;

View File

@@ -1,4 +1,4 @@
@import '../../../../styles/variables';
@use '../../../../styles/variables' as *;
.od-page__goods-section {
padding: 18px 20px;

View File

@@ -1,4 +1,4 @@
@import './base.scss';
@import './timeline.scss';
@import './goods.scss';
@import './bottom.scss';
@forward './base.scss';
@forward './timeline.scss';
@forward './goods.scss';
@forward './bottom.scss';

View File

@@ -1,4 +1,4 @@
@import '../../../../styles/variables';
@use '../../../../styles/variables' as *;
.od-page__timeline-section,
.od-page__info-section {

View File

@@ -83,6 +83,6 @@ const {
</script>
<style lang="scss">
@import './styles/index.scss';
@use './styles/index.scss';
</style>

View File

@@ -66,5 +66,5 @@ const {
</script>
<style lang="scss">
@import './styles/index.scss';
@use './styles/index.scss';
</style>

View File

@@ -56,5 +56,5 @@ const { appStore, filteredStores, handleInput, keyword, selectStore } = useStore
</script>
<style lang="scss">
@import './styles/index.scss';
@use './styles/index.scss';
</style>

View File

@@ -226,5 +226,5 @@ const {
</script>
<style lang="scss">
@import './styles/index.scss';
@use './styles/index.scss';
</style>

View File

@@ -1,4 +1,4 @@
@import '../../../../styles/variables';
@use '../../../../styles/variables' as *;
.checkout-page {
min-height: 100vh;

View File

@@ -1,4 +1,4 @@
@import '../../../../styles/variables';
@use '../../../../styles/variables' as *;
.checkout-page__dash-divider {
height: 3px;

View File

@@ -1,4 +1,4 @@
@import '../../../../styles/variables';
@use '../../../../styles/variables' as *;
.checkout-page__fees {
padding: 14px 18px;

View File

@@ -1,4 +1,4 @@
@import './base.scss';
@import './cards.scss';
@import './fees.scss';
@import './submit.scss';
@forward './base.scss';
@forward './cards.scss';
@forward './fees.scss';
@forward './submit.scss';

View File

@@ -1,4 +1,4 @@
@import '../../../../styles/variables';
@use '../../../../styles/variables' as *;
.checkout-page__submit-bar {
position: fixed;

View File

@@ -24,6 +24,6 @@ const { goMenu, goOrderDetail, goOrders, orderNo } = useTradeSuccessPage()
</script>
<style lang="scss">
@import './styles/index.scss';
@use './styles/index.scss';
</style>

View File

@@ -1,4 +1,5 @@
@import './variables';
@use 'sass:math';
@use './variables' as *;
@mixin card($radius: $r-lg) {
background: $card;
@@ -10,7 +11,7 @@
@mixin green-gradient-btn($height: 48px) {
height: $height;
border: none;
border-radius: $height / 2;
border-radius: math.div($height, 2);
font-weight: 700;
color: #fff;
background: linear-gradient(135deg, $primary 0%, $primary-dark 100%);