主题
b_
bem 命名工具
安装
shell
npm install b_使用
Vue2
js
import bem from 'b_';
export default {
install(Vue) {
Vue.prototype.$bem = function (blockName) {
const b = bem(blockName);
return (element, mods) => b(element, mods);
};
},
};js
import Vue from 'vue';
import App from './App.vue';
import BemPlugin from '@/utils/useBem.js';
Vue.use(BemPlugin);
new Vue({
render: (h) => h(App),
}).$mount('#app');vue
<template>
<div :class="b()">
<div :class="b('header')">标题</div>
<div :class="b('body', { active: isActive })">内容</div>
</div>
</template>
<script>
export default {
name: 'Card',
data() {
return {
isActive: true,
};
},
created() {
// 在 created 或 beforeCreate 阶段生成 block 专属函数
this.b = this.$bem('card');
},
};
</script>html
<div class="card">
<div class="card__header">标题</div>
<div class="card__body card__body--active">内容</div>
</div>Vue3
js
import bem from '@/utils/useBem.js';
export default function useBem(blockName) {
const b = bem(blockName);
return (element, mods) => b(element, mods);
}vue
<template>
<div :class="b()">
<div :class="b('header')">标题</div>
<div :class="b('body', { active: isActive })">内容</div>
</div>
</template>
<script setup>
import useBem from '@/utils/useBem.js';
const b = useBem('card');
const isActive = true;
</script>