5 Star 1 Fork 0

View、 / vue-guide

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
vue-template.md 2.47 KB
一键复制 编辑 原始数据 按行查看 历史
View、 提交于 2020-02-06 17:44 . first commit

Vue Template 规范

命名

命名规则

  • 缩进使用 4 个空格
  • 嵌套的节点应该缩进
  • 写标签时,提供语义化的 class 或者标签名
  • 尽量使用 ref 选择器,不要使用 id 选择器,或者 class 选择器
  • 在标签属性上,统一双引号
  • 所有标签名称,属性,属性值都应使用小写+横杠

命名带有实际意义

<template>
    <div class="layout">
        <layout-side @change="handleChange" :menuList="menuList" />
        <div class="layout-container" v-if="status === 'pass'">
            <layout-header v-if="status === 'pass'" />
            <layout-chrome-nav ref="nav" v-if="isChrome" />
            <layout-nav ref="nav" v-else />
        </div>
    </div>
</template>

标签属性过多应换行写

如下面这段代码的 div,以及 yt-icon 的写法。 3 个以及 3 个以上属性应手动换行。

<div class="nav-list" ref="list" :style="navListStyle">
    <div class="nav-item"
        v-for="(nav, index) in navList"
        :key="nav.path"
        ref="nav"
        :class="{ active: index === activeIndex }"
        :title="nav | navName"
        @click="handleSelect(nav, index)"
        @contextmenu.prevent="handleContextmenu(nav, index, $event)"
        :draggable="nav.meta.draggable === false ? false : true"
        @dragstart="(e) => handleDragStart(e, nav, index)"
        @dragenter="(e) => handleDragEnter(e, nav, index)"
        @dragend.prevent="handleDragEnd"
        @dragover.prevent
        @dragleave.prevent
    >
        <span>{{ nav | navName }}</span>
        <yt-icon
            v-if="nav.meta.closable !== false"
            class="nav-close"
            icon="el-icon-close"
            @click.stop="handleClose(nav, index)"
        />
    </div>
</div>

template 内容过多,应考虑拆分组件

文件目录组织方式

├─layout
│      layout-chrome-nav.vue
│      layout-header.vue
│      layout-loading.vue
│      layout-nav.vue
│      layout-side-menu.js
│      layout-side.vue
│      layout.vue

主文件代码

<template>
    <div class="layout">
        <layout-side @change="handleChange" :menuList="menuList" />
        <div class="layout-container" v-if="status === 'pass'">
            <layout-header v-if="status === 'pass'" />
            <layout-chrome-nav ref="nav" v-if="isChrome" />
            <layout-nav ref="nav" v-else />
        </div>
    </div>
</template>
1
https://gitee.com/viewweiwu/vue-guide.git
git@gitee.com:viewweiwu/vue-guide.git
viewweiwu
vue-guide
vue-guide
master

搜索帮助