Javascript включить контроль в зависимости от страницы - PullRequest
0 голосов
/ 21 июля 2011

Я работаю в качестве разработчика на стороне клиента над веб-приложением и обнаружил, что у меня много модулей, каждый для разных страниц. Интересно, стоит ли включать в зависимости от маршрута сам (в javascript) или передать эту ответственность бэк-эндам (ruby on rails).

Полагаю, мне нужно добавить файл application.js на каждую страницу и сделать что-то вроде этого:

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

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

Есть мысли?

Ответы [ 3 ]

1 голос
/ 21 июля 2011

хорошо, это совсем не простой ответ, так как есть ты и есть эти ребята, надеюсь, что все в порядке, между тобой!;)

хотя, если вы не хотите беспокоить этих ребят, (я знаю, что работать в команде нелегко), вы можете попросить включить только один файл ruby ​​из вашей рабочей папки, например

/web-app/ruby-guys/you/ruby-js.rb

теперь вы можете работать с этим уникальным файлом и загружать отсюда все необходимые вам файлы js.с помощью eaxmple распределительного шкафа

case url-query
  when x
    # print out drag-drop.js
  when y, z
    # print out mouse-move.js 
1 голос
/ 21 июля 2011

Вы должны передать это парням на стороне сервера.Вывод такого сервера сценариев включения сортировки намного удобнее, поскольку они могут просто добавить его на страницы, на которых он вам нужен, вместо того, чтобы иметь большой if-else.

0 голосов
/ 21 июля 2011

$ 0,02 от меня ... Если вы хотите минимизировать количество обращений к серверу (Rails), вы можете просто использовать хеш-тег в конце ваших URL-адресов и анализировать хеш-тег, чтобы определить, какие модули были необходимы,Это позволит вам при необходимости разместить свою страницу в CDN и динамически изменять, какие модули были загружены на страницу, просто перенаправив сервер на ту же страницу с другим хеш-тегом.

Например

// 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.
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...