背景:Rails 尽量保持原习惯不做定制,js 技术有限所以 js 不多还不需要上框架,rails3+coffeescript+turbolinks 使用,js 简单写成一个个函数,类似
@function_a = () ->
console.log "xxx"
function_b()
页面 erb 直接调用函数
<% javascript_tag do %>
function_a();
<% end %>
一直这样用着挺好,最主要是上 turbolinks 很顺利,几乎没有影响,因为执行到页面自然会执行相应 js。 (turbolinks 好坏前面讨论够深入的,这里不论了,对于基本不动 js 但又优化效果的,这样用着挺好。上前端 js 框架,对前后端代码和结构都要考虑,暂时没时间做)
但是这样不知道是否会有什么问题,或者不符合哪个习惯?身边孤家一个技术,没的咨询,来这里问下:)
唯一要动的几个地方也简单列下,比如 turbolinks 本身加载的状态显示,ruby-china 引入了一个大 js 文件,这里暂时不需要那么复杂,只简单显示一个圈圈(icon-spinner)就好了,于是
$(document).on 'page:fetch', () ->
$("#turbolinks_status").removeClass("hide")
$("#turbolinks_status").show()
$(document).on 'page:change', () ->
$("#turbolinks_status").hide()
$(document).on 'page:restore', () ->
$("#turbolinks_status").remove()
还有 rails_kindeditor,没用官方的方案,直接
@load_kindeditor = () ->
KindEditor.create ".kindeditor_area",
width: "100%",
allowFileManager: true,
uploadJson: "/kindeditor/upload",
fileManagerJson: "/kindeditor/filemanager",
items: ["formatblock", ........]
还有 nested_form 关联的 js 也可以直接调函数,turbolinks 不影响
$(document).on "nested:fieldRemoved", (event) =>
if $(".items_preview").length > 0
console.log "xxx"
其它地方都很简单的一个个小函数,不知这个方式有何问题