摘要:简介前端命名方法论是由团队提出的一种前端命名方法论,是一个非常有用,强大,简单的命名约定,可以让你的前端代码更容易阅读和理解,更容易协作,更容易控制,更加健壮和明确而且更加严密。
1.BEM 简介
BEM——前端命名方法论
BEM 是由 Yandex 团队提出的一种前端命名方法论,是一个非常有用,强大,简单的命名约定,可以让你的前端代码更容易阅读和理解,更容易协作,更容易控制,更加健壮和明确而且更加严密。
BEM 命名约定模式
.block{} .block__element{} .block--modifier{}
其中
.block:表示一个抽象的块,或一个独立的组件
.block__element:element是.block的子节点,表示element属于某个.block,用于形成一个完整的.block整体,__是向下降级的意思
.block--modifier:表示某个节点的状态
2.微信个人页面实战为了更清楚感受BEM的命名方式,我仿制了一下微信的个人页面,其中图标来自Iconfont矢量图标库,图标命名直接使用其原始的命名
一开始我设计的html,此时我对BEM有些认识,但是使用上还是有点问题,这时,我将整个页面看作一个模块分为三部分:page__hd,page__bd,page__ft
微信************
- ***
- ***
***- ***
************
但当一个模块内的部分多了些的时候,比如page__bd内部的元素,我觉得我的命名有些混乱,为了给它命名还得百度翻译,而且开始命名完后写css时发现自己还是不太清楚它的位置,写完css后发现还有有些没有使用上的类名比如.right
我修改了我的html命名,感觉上结构更加清晰而且观察了一下微信的页面,头部和底部是不变的,每个页面都是一样的,还有page__bd内的page__bd__list在微信的发现页面也是开始可以使用的,这样的命名就比较好复用。
3.总结一下我使用 BEM 命名的感受
第一:让你的代码更容易阅读和理解,可以清晰的指出某个节点属于哪个块下,层级关系比较明显,也尽量避免使用节点承载的内容来定义节点,这样更好的复用某个模块
第二:BEM 的降级关系不需要迫切的去使用,比如page__hd内的.title,因为一个页面只有一个title,所以使用page__title就可以代表,不需要使用page__hd__title
第三:使用BEM是为了让我们的代码更清晰,更易维护,如果它使得你的代码更难维护,更难理解,也不必纠结
github 项目地址:https://github.com/EIVE/wx_ho...
以上是我学习BEM的一下感受,希望大家可以有所收获,其中可能有些不太恰当的地方,也希望大家可以多给我提一些意见
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/112796.html
摘要:前言微信小程序中可以直接运行页面,这一新组件的产生,可能直接导致小程序数量迎来一波高峰。微信小程序配置系列问题配置域名业务域名中配置的就是小程序以及和中引用的域名。 今日励志语 要接受自己行动所带来的责任而非自己成就所带来的荣耀。 前言 微信小程序中可以直接运行 web 页面,这一新组件 web-view 的产生,可能直接导致小程序数量迎来一波高峰。本篇博文将从业务选型,微信小程序后台...
项目需求简单描述 用户长按录音,松手后直接结束录音,结束录音后,用户可以选择重新录音、播放刚才的录音,上传录音(这里的上传录音指上传到自己服务器,上传步骤是,前端调用wx.uploadVoice,后台再到微信服务器下载音频文件,上传到自己的服务器)。注意,音频文件自上传时间算起在微信服务器的有效期为3天。由于后台从微信服务器下载的音频文件是amr格式的,需要后台先把amr文件转换成MP3,前端用a...
阅读 1714·2021-11-22 15:33
阅读 2084·2021-10-08 10:04
阅读 3542·2021-08-27 13:12
阅读 3417·2019-08-30 13:06
阅读 1466·2019-08-29 16:43
阅读 1389·2019-08-29 16:40
阅读 784·2019-08-29 16:15
阅读 2744·2019-08-29 14:13