小编And*_*Vit的帖子

为什么破折号首选CSS选择器/ HTML属性?

在过去,我总是使用下划线来定义HTML中的classid属性.在过去的几年里,我改用破折号,主要是为了让自己与社区趋势保持一致,不一定是因为它对我有意义.

我一直认为破折号有更多的缺点,我没有看到它的好处:

代码完成和编辑

大多数编辑器将破折号视为单词分隔符,因此我无法通过选项卡切换到我想要的符号.说类是" featured-product",我必须自动完成" featured",输入连字符,然后完成" product".

下划线" featured_product"被视为一个单词,因此可以一步填充.

这同样适用于浏览文档.通过单词跳转或双击类名会被连字符打破.

(更一般地说,我认为类和ID是标记,所以对我来说,标记应该在连字符上很容易拆分是没有意义的.)

算术运算符的模糊性

使用破折号会破坏对JavaScript中表单元素的对象属性访问.这只能用下划线表示:

form.first_name.value='Stormageddon';
Run Code Online (Sandbox Code Playgroud)

(不可否认,我自己并不以这种方式访问​​表单元素,但是当决定破折号和下划线作为通用规则时,请考虑某人可能.)

Sass这样的语言(特别是在整个Compass框架中)已经将破折号作为标准,即使对于变量名称也是如此.他们最初也开始使用下划线.这被解析的事实让我感到奇怪:

$list-item-10
$list-item - 10
Run Code Online (Sandbox Code Playgroud)

与跨语言的变量命名不一致

在当天,我曾经用underscored_namesPHP,ruby,HTML/CSS和JavaScript 编写变量.这是方便和一致的,但再次为了"适应"我现在使用:

  • dash-case 在HTML/CSS中
  • camelCase 在JavaScript中
  • underscore_case 在PHP和ruby中

这对我来说并没有太多困扰,但我想知道为什么这些看起来如此错位,似乎是故意的.至少使用下划线可以保持一致性:

var featured_product = $('#featured_product'); // instead of
var featuredProduct = $('#featured-product');
Run Code Online (Sandbox Code Playgroud)

差异造成了我们不得不不必要地翻译字符串以及可能存在错误的情况.

所以我问:为什么社区几乎普遍以破折号为主,是否有任何理由超过下划线?

从这个开始的时间开始有一个相关的问题,但我认为它不是(或不应该)只是一个品味的问题.我想了解为什么我们都认为这个大会只是一个品味问题.

html css coding-style naming-conventions

207
推荐指数
6
解决办法
6万
查看次数

git pull和git push的默认远程(跟踪分支)不同

有没有办法设置一个git存储库,所以git pull默认为一个远程,git push默认为另一个?我知道我可以通过改变分支部分中变量的值来设置两者,但是如何分别对每个方向进行设置?remote.git/config

git branch

59
推荐指数
5
解决办法
1万
查看次数

如何避免在读取文件时跳过UTF-8 BOM

我正在使用最近添加了Unicode BOM头(U + FEFF)的数据源,而我的rake任务现在被它搞砸了.

我可以跳过前3个字节,file.gets[3..-1]但有没有更优雅的方式来读取Ruby中的文件,无论BOM是否存在,都能正确处理?

ruby unicode byte-order-mark file

40
推荐指数
2
解决办法
2万
查看次数

你检查你的rvmrc文件?

Ruby Version Manager允许我们.rvmrc在每个项目中使用一个文件来设置要加载的ruby版本和gem集合.该文件是否应该签入源代码管理?或者这对其他开发人员的工作环境有太多假设?

ruby version-control rvm

28
推荐指数
2
解决办法
3637
查看次数

CSS选择器区分大小写吗?

我最近更新了CMS网站,并且标签导航插件插入了以下标记:

<li id="News_tab">...
Run Code Online (Sandbox Code Playgroud)

我总是以小写形式编写我的CSS选择器,所以当我尝试使用#news_tab它时,它不适用,但#News_tab有效.

经过这么多年,我很惊讶我之前没有遇到过这种情况,所以我总是认为CSS不区分大小写.CSS总是区分大小写,我只是没有注意到我的代码风格一致吗?

css cross-browser css-selectors

26
推荐指数
3
解决办法
2万
查看次数

在rails测试中跟踪弃用警告的来源

在运行我的功能测试时,我在其中一个测试用例中收到以下警告,但我无法确定它来自何处:

gems/actionpack-2.3.8/lib/action_controller/record_identifier.rb:76: warning: Object#id will be deprecated; use Object#object_id

不幸的是,这是显示的回溯的唯一一行,即使我运行它rake test --trace,并且没有更多的信息log/test.log.

如何获取此警告的完整回溯或以其他方式确定我的代码中的哪一行导致它?

warnings unit-testing ruby-on-rails deprecated

22
推荐指数
2
解决办法
3417
查看次数

在最后一次has_many之后销毁关联:通过记录被删除

使用常规has_many,可以选择:dependent => :destroy在删除父记录时删除关联.有了has_many :through,可能还有其他父母与子记录相关联,因此:dependent => :destroy没有任何效果.

如何确保子记录在从最后一个HMT关联中孤立后被删除?

activerecord ruby-on-rails has-many-through

9
推荐指数
1
解决办法
4236
查看次数

内联显示标题以下段落

给定以下语义标记:

<h3> SCOPE OF WORK. </h3>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
Run Code Online (Sandbox Code Playgroud)

我想显示与段落内联的标题,如下所示:

工作范围.Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

选项1:浮动标题.

只要标题适合一行,这就可以工作.当它没有时,浮点形成一个宽块,所以段落从块的右边开始,或者在下面而不是继续内联:

| …
Run Code Online (Sandbox Code Playgroud)

html css semantic-markup

9
推荐指数
1
解决办法
1万
查看次数

如何在生产之前捕获rails资产管道中的错误?

我刚刚熟悉Rails 3.1,并且我花了一些时间来更新旧项目,并试图弄清楚新资产管道在开发模式与生产模式之间的表现.

默认config.assets.precompile设置仅保护application.cssapplication.js,目的是将所有内容都作为单个样式表和单个javascript文件提供.

显然有些情况下我们不希望这样,所以我们可以在该配置变量的列表中添加项目...

这是我在进入生产时遇到沙盒项目的情况:

  1. 浏览了开发中的网站,看到一切正常.资产作为单独的文件链接,并且网站显示正确.
  2. 将网站上传到我的服务器,并尝试让它在生产中运行.第一个错误是说"ie.css"(条件样式表)没有预编译.(我在Safari中,甚至不会下载这个样式表:stylesheet_link_tag在呈现页面之前从帮助程序中引发了错误.)
  3. 跑了rake assets:precompile又试了一次.
  4. 添加了违规项目config.assets.precompile并再次尝试.
  5. 将错误击倒在路边,直到它遇到另一个资产错误.
  6. GOTO 3.

不知道如何解决这个问题,我绕圈了几次,直到我认为我得到了所有的资产,并且该网站正在生产中.然后我在MSIE中尝试了它并点击另一个错误500:"belated_png_fix.js"正在被有条件地加载,并且直到那时才出现.

所以我的问题是,除了试验和错误或严重依赖集成测试之外,当资产管道发现某些样式表或javascript未添加到预编译列表中时,如何预测我的站点不会爆炸? ?

我也很好奇为什么缺少样式表资产会导致整个页面出错500而不是仅按需编译它或在请求该资产时提供404.这是故意"早早失败"的设计吗?

ruby-on-rails ruby-on-rails-3.1 asset-pipeline

8
推荐指数
1
解决办法
1614
查看次数

Git rebase与没有合并的冲突?

当git rebase发现冲突时,这意味着什么,但文件中没有明显的问题?有问题的文件没有冲突标记,并git mergetool说"无需合并".

我有的选项是重置添加:

# Unmerged paths:
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#   both modified:      filename.js
Run Code Online (Sandbox Code Playgroud)

我如何找出这是什么以及采取哪条路径?

git ls-files -s filename.js 给出3行:

100644 d2c915b1d632b8ef8fbcf056824fb7fac7824ab9 1   filename.js
100644 9010798f1d19ac712196b1fc9b0870fd332b1275 2   filename.js
100644 b3ab7ec50812c73a3ec97bf0985f3226ec13cbc8 3   filename.js
Run Code Online (Sandbox Code Playgroud)

根据精细手册,该命令告诉我们模式位,对象名称和阶段编号.模式位是相同的.那么1,2和3是什么,为什么它们"被修改",但没有显示冲突标记?

git conflict rebase

7
推荐指数
1
解决办法
2144
查看次数