不要使用混合编程

从前在erb里面喜欢把js代码和ruby代码混在一起写,俗称混合编程。这种写法刚开始感觉很方便,但降低了代码的可读性和增加了代码的混乱程度。

下面展示一段erb模板中使用混合编程。ruby代码和Javascript代码混合在一起,阅读起来十分的混乱。

....
<% if mobile_device? %>
  <% if browser.wechat? %>
    return true
  <% else %>
    alert("请使用微信浏览器!")
  <% end %>
<% else %>
  $('#pc-sign-up-modal').modal("show")
<% end %>
....

保持代码上下文使用同一语法。

<%= hidden_field_tag :mobile_device, mobile_device? %>
<%= hidden_field_tag :wechat_browser, browser.wechat? %>

const inMobile = !!$("#mobile_device").val()
const inWechatBrowser = !!$("#wechat_browser").val()

....
if (inMobile) {
	if (inWechatBrowser) {
		return true
	} else {
		alert("请使用微信浏览器!")
	}
} else {
	$('#pc-sign-up-modal').modal("show")
}
....