网页 - 创建页面/组件
Prerequisite Reading
目录结构
根据 Nuxt 的目录结构,页面会出现在它们预期的位置。 [网站]/components
而另一方面,组件目前分布在两个地方:
- 如果组件只用于一个站点,那么它将会在
[网站]/components
文件夹(该网站文件夹)里。 - 如果组件被用于多个站点,那么它将会在
Assets/components
。
页面/组件剖析
Corsace 使用 SASS/SCSS 来设计所有样式,并使用 ts 来编写任何脚本。
针对 vue 文件,vue-property-decorator
装饰器被用于创建页面和组件。
当你创建 vue 文件时,应遵循以下基本模板:
<template>
...
</template>
<script lang="ts">
import { Vue, Component } from "vue-property-decorator";
@Component({
...
})
export default class [PAGE/COMPONENT CAMELCASE NAME] extends Vue {
...
}
</script>
<style lang="scss">
@import '@s-sass/[FILENAME FROM Assets/sass]';
</style>
什么时候制作组件
对于这个仓库,你想把代码拆分成组件的主要情况是:
- 您正在编写的 HTML 部分可能/将在其他地方重复使用
- 组件可能会在其父组件(独立组件)之外单独考虑/使用
- 在不会增加总仓库的复杂性时当前页面/组件的复杂性可以被大大降低
强烈建议尽可能地拆分部分代码以便于理解和使用,并避免 DRY(不要重复自己)。
访问数据仓库
访问主数据仓库
主数据仓库位于Assets/store/index.ts
。 要从它的状态中访问任何变量,你只需在script
部分添加以下内容:
<script lang="ts">
import { State } from "vuex-class";
...
export default class [PAGE/COMPONENT CAMELCASE NAME] extends Vue {
...
@State [VARIABLE'S NAME FROM STORE]!: [VARIABLE'S TYPES];
...
}
</script>
访问特定的数据仓库
要想访问一个特定的数据仓库,过程与访问主数据仓库相似只是要想创建namespace
。
例如你想访问一个位于Assets/store/mca-ayim.ts
数据仓库状态的变量,你可以这样做:
<script lang="ts">
import { namespace } from "vuex-class";
...
const mcaAyimModule = namespace("mca-ayim");
...
export default class [PAGE/COMPONENT CAMELCASE NAME] extends Vue {
...
@mcaAyimModule.State [VARIABLE'S NAME FROM STORE]!: [VARIABLE'S TYPES];
...
}
</script>
SASS/SCSS和样式协议
由于 vue 模板通常只允许 1 个子元素,并且样式命名法遵循 BEM,因此通常只有 1 个块,其中有多个元素和修饰符分支。
例如:
<template>
<tag class="block">
<tag class="block__elem1">
<tag class="block__elem1--mod1">
...
</tag>
...
</tag>
...
</tag>
</template>
...
<style lang="scss">
...
.block {
&__elem1 {
&--mod1 {
...
}
...
}
...
}
</style>
所有样式的命名应采用snake-case
而不是camelCase
。
例如:mainPage
应该改为main-page
。