Javascript包含控件,具体取决于页面

Javascript包含控件,具体取决于页面,javascript,include,url-routing,Javascript,Include,Url Routing,我是一名web应用程序的客户端开发人员,发现自己有很多模块,每个模块用于不同的页面。我想知道是否应该包括依赖于自己的路由(javascript)或将此职责传递给后端(RubyonRails)人员 我想我需要在每个页面中包含一些application.js,并在其中执行以下操作: if (window.location.href == '.../somePage') { loadScript('somePageControls.js') } if (window.location.hre

我是一名web应用程序的客户端开发人员,发现自己有很多模块,每个模块用于不同的页面。我想知道是否应该包括依赖于自己的路由(javascript)或将此职责传递给后端(RubyonRails)人员

我想我需要在每个页面中包含一些application.js,并在其中执行以下操作:

if (window.location.href == '.../somePage') {
    loadScript('somePageControls.js')
}

if (window.location.href == '.../anotherPage') {
    ...
}

有什么想法吗?

你应该把这些想法传达给服务器端人员。在服务器端输出排序脚本要干净得多,因为他们只需将其添加到您需要的页面,而不需要一个大的if-else。

好的,这根本不是一个简单的答案,因为有您和这些ruby的家伙,希望一切都好!;)

虽然如果你不想打扰这些家伙太多,(我知道在团队中工作并不容易),你可以要求只包含你工作文件夹中的一个ruby文件

/web-app/ruby-guys/you/ruby-js.rb
现在,您可以使用这个独特的文件,并从这里加载所需的所有js文件。通过使用EAX多个开关箱

case url-query
  when x
    # print out drag-drop.js
  when y, z
    # print out mouse-move.js 
我给你0.02美元。。。 如果您希望最小化到(Rails)服务器的往返,您可以在URL的末尾使用哈希标记,并解析哈希标记以确定需要哪些模块。这将允许您在必要时将页面放在CDN上,并允许您动态更改页面上加载的模块,只需让服务器重定向到具有不同哈希标记的同一页面即可

例如

//示例URL:http://example.com/index.html#mod1,mod2,mod3,mod4
var loadModules=function(){
var modsArr,i,len;
如果(!location.hash)返回false;
modsArr=location.hash.substr(1).split(',');//[“mod1”,“mod2”,“mod3”,“mod4”]
如果(!modsArr.length)返回false;
对于(i=0,len=modsArr.length;i
将此服务器端应用于ruby,ruby会很好地完成这项工作,除非您需要稍后在同一页面上使用的控件。我看不出在客户端包含所有内容有任何意义。把它发给服务器端的人。谢谢,我明天会和ruby的人讨论这个问题。顺便说一句,它们很棒,我们的团队也很棒,但我认为完全控制我的代码会很好:-)这不是我想要的,因为ruby的家伙必须为每个页面传递额外的哈希标记,但我不是唯一一个,谁知道我的代码应该放在哪里?无论如何,谢谢你的回答,我会和我的团队讨论这个问题:-)
// Example URL: http://example.com/index.html#mod1,mod2,mod3,mod4
var loadModules = function() {
    var modsArr, i, len;
    if (!location.hash) return false;

    modsArr = location.hash.substr(1).split(','); // ["mod1", "mod2", "mod3", "mod4"]
    if (!modsArr.length) return false;

    for (i=0, len = modsArr.length; i < len; i++) {
        // Now you can load your mods.
    }

}