BEM on Rails: 在Rails中实现BEM方法
需积分: 5 66 浏览量
更新于2024-12-18
收藏 19KB ZIP 举报
资源摘要信息:"Rails 应用程序的 BEM 方法"
1. BEM方法介绍
BEM(Block, Element, Modifier)是一种面向块的CSS类命名方法。它由Yandex团队开发,目的是帮助开发者更好地组织和结构化他们的CSS代码。BEM方法的核心思想是将页面分为独立的组件(即“块”),每个块都可以包含更小的子元素(即“元素”),并且可以通过“修改器”改变其外观或状态。这种方法提高了代码的可读性和可维护性,并且可以轻松地重用组件。
2. BEM在Rails中的应用
“bem-on-rails”是一个Ruby gem,它将BEM方法集成到Rails应用程序中。bem-on-rails是bem-tools的Ruby版本的fork,旨在简化Rails项目中的CSS组织。通过使用bem-on-rails,Rails开发者可以更容易地遵循BEM命名约定,从而提高代码的结构清晰度。
3. 安装步骤
要使用bem-on-rails,首先需要将其添加到Rails项目的Gemfile中,执行以下命令:
```
gem 'bem-on-rails'
```
然后运行bundle命令来安装gem:
```
$ bundle
```
或者可以选择手动安装gem:
```
$ gem install bem-on-rails
```
安装完成后,需要运行安装生成器来设置bem-on-rails:
```
$ rails g bemonrails:install
```
安装生成器会创建必要的文件和目录结构,以便bem-on-rails可以正确工作。安装完成后,开发者应当重启服务器以确保改动生效。
4. 使用bem-on-rails
在Rails应用中使用bem-on-rails,开发者可以在相应的层级目录下创建块、元素及其修改器。bem-on-rails推荐的默认文件夹结构如下所示:
```
贝姆
级别名称
块名称
__element_name
块名__element_name.html.haml
```
在上述结构中,每个块可以有自己的子元素,块和子元素通过双下划线“__”进行连接,而修改器则是通过双破折号“--”来标识。
5. BEM的实践优势
- **组件化**:BEM鼓励开发者将界面分解成独立的组件,这有助于实现组件的复用。
- **模块化**:通过块和元素的划分,代码变得模块化,易于管理和扩展。
- **明确的依赖关系**:BEM的命名规则清晰表明了各个组件之间的关系,有助于开发者理解页面结构。
- **减少冲突**:由于BEM的命名规则具有全局唯一性,减少了不同开发人员编写的代码之间的样式冲突。
6. 与YaC 2013的相关性
作者提到他在2013年的YaC会议上用俄语讨论了这个gem。YaC(Yet Another Conference)是一年一度的俄罗斯技术大会,通常会探讨一些前沿的技术话题。作者在会议上可能分享了关于bem-on-rails的构思、开发过程以及如何在Rails应用中应用BEM方法的经验。
总结来说,bem-on-rails提供了一个在Rails项目中实现BEM命名约定的便捷工具,它旨在通过模块化和结构化的CSS组织来提升Rails应用的可维护性和可扩展性。通过遵循BEM方法,开发者可以更容易地构建和管理大型前端项目,并保持样式的清晰和一致性。
2021-05-23 上传
2021-05-23 上传
2021-05-23 上传
2021-02-21 上传
2021-04-16 上传
2021-02-03 上传
2021-02-10 上传
点击了解资源详情
点击了解资源详情
iwbunny
- 粉丝: 29
- 资源: 4671
最新资源
- DEVEDJAVASCRIPT
- 220jingdian,补码和源码的转化c语言程序,c语言程序
- ros-yolo-sort:YOLO v3 + SORT跟踪+ ROS平台,SORT支持python(原始)和C ++。 不深SORT
- Excel实现Python数据分析项目数据和源码-用户价值
- Irae-crx插件
- UPEK_TAZTAG:指纹服务API
- 1_二级程序设计题(34).rar
- 基于MCS-51单片机的数字时钟设计
- 提取均值信号特征的matlab代码-CHALL_21_SUB_A1B:CHALL_21_SUB_A1B
- angular-hybrid-rendering
- library-functions-described-c51,c语言程序源码怎样生成脚本,c语言程序
- micronaut-spring:供Micronaut的Spring用户使用的实用程序集合
- russian-travel:专案3
- SpaceShooter:使用libgdx构建的实时android游戏
- ConfessionFilter
- PDM-Atividades:莫维斯DispositivosMóveis学科计划