2013-09-11 4 views
0

Пару месяцев назад я понял, что мне нужно обновить боковую панель ежегодно новой ссылкой. Теперь вместо того, чтобы проходить через каждую страницу и вставлять ссылку (около 20 страниц), я решил создать файл javascript и связать его с каждой страницей. Сценарий создавал бы ссылки и добавлял их на страницу. Это означало, что каждый раз, когда нам нужно было создать новую ссылку, нам нужно было только добавить новую строку в файл javascript один раз, и изменение будет отражено на каждой странице. По сути, сокращение времени, потраченного впустую, проходит через все страницы и добавляет новую ссылку. Интересно, это хорошая практика, и могут ли быть проблемы, которые я не мог предвидеть?Является ли хорошей практикой создание боковой панели с помощью Javascript?

код приведен ниже:

function createVolume (text, link){ 
    var volDiv = document.createElement("div"); 
    var textDiv = document.createTextNode(text); 
    var linkDiv = document.createElement("a"); 
    linkDiv.setAttribute("href", link); 
    volDiv.setAttribute("class", "volume"); 
    volDiv.appendChild(textDiv); 
    linkDiv.appendChild(volDiv); 
    var d = document.getElementById("e27"); 
    d.appendChild(linkDiv); 
} 
var bhbHome = createVolume("BHB Home", "bhb.html"); 
var v76 = createVolume("Volume 76", "bhb76.html"); 
var v75 = createVolume("Volume 75", "bhb75.html"); 
var v74 = createVolume("Volume 74", "bhb74.html"); 
var v73 = createVolume("Volume 73", "bhb73.html"); 
var v72 = createVolume("Volume 72", "bhb72.html"); 
var v71 = createVolume("Volume 71", "bhb71.html"); 
var v70 = createVolume("Volume 70", "bhb70.html"); 
var v69 = createVolume("Volume 69", "bhb69.html"); 
var v68 = createVolume("Volume 68", "bhb68.html"); 
var v67 = createVolume("Volume 67", "bhb67.html"); 
var v6566 = createVolume("Volume 65 and 66", "bhb_65_66.html"); 
var v64 = createVolume("Volume 64", "bhb64.html"); 
var v63 = createVolume("Volume 63", "bhb63.html"); 
var v626160 = createVolume("Volume 60, 61, and 62", "bhb_60_61_62.html"); 
var v59 = createVolume("Volume 59","bhb59.html"); 
+1

Это довольно хаки. Как насчет использования реального шаблонного решения? –

+1

Я бы предпочел генерировать ссылку на сервер, поэтому ссылки будут индексироваться поисковыми системами. –

+0

@DiegoCNascimento, Если этого не должно быть, тогда это другое, но все же теперь его плохая практика. –

ответ

1

Есть некоторые недостатки, я могу думать, первые два предполагая, код запускается, когда DOM готов:

  1. может быть повторно организовать эффект, с первым показом страницы без боковой панели, а затем с ней
  2. вам нужно убедиться, что другой код, выполняющийся на странице, для которой требуется боковая панель, запускается только после того, как была создана боковая панель.
  3. (@Sheikh Heera) некоторые поисковые системы не смогут индексировать всей вашей странице

Традиционный способ делать вещи, используя на стороне сервера включает в себя, так что смотреть на это, если вы можете.

+0

Я запустил его в нижней части страницы. Если это помогает с готовностью DOM. – Bwaxxlo

1

Это не хорошая практика. Вы должны сделать это с помощью кода на стороне сервера, например, на стороне сервера, php и т. Д. Выполнение этого способа не будет работать для людей без Javscript, и хорошая практика - сделать это на стороне сервера.

+0

Не обязательно верно. Google может видеть по крайней мере некоторые js: http://moz.com/ugc/can-google-really-access-content-in-javascript-really – yochannah

+0

@yochannah Спасибо, не знал об этом, будет хорошо читать об этом позже. Ответ обновлен. – SuperDuperApps

+0

Вот что я волновался. Люди без JS будут бороться. Но опять же, они, вероятно, борются со своим интернет-опытом. – Bwaxxlo

1

Нет, самое простое решение - использовать серверный скрипт.

Если ваши страницы в основном статичны и обновляются редко, предположим, что это может сработать. Но на самом деле, просто используйте Wordpress или что-то еще.

+0

Да, это ужасный сайт с точки зрения серверной части. Это всего лишь куча статических страниц и еще много чего. Он был построен с использованием Yahoo! sitebuilder, и если вы с ним работаете, вы поймете, что это за груз (я только начал работать с сайтом несколько месяцев назад, и он делает мою голову!). – Bwaxxlo

+1

Возможно, вы можете получить эту работу со стороны сервера, что ненавязчиво. Просто добавьте директиву include на каждую страницу, чтобы включить в нее файл с боковой панелью, а затем вы можете просто продолжить обновление только одного места. Никаких других изменений ваших текущих страниц не требуется. Настройка их может быть немного затруднительной, но всего лишь несколько вещей, о которых нужно подумать, не так много. – SuperDuperApps

1

Это нехорошая практика !!!!!!!!.

Используйте ссылки процитировать, почему его не очень хорошая практика и возможные проблемы

Не думайте, что пользователь имеет динамический контент HTTP, способный сервер

Не думайте, пользователь хочет, чтобы поисковые системы получали свои ссылки

0

Для целей технического обслуживания это определенно хорошая идея создать повторно используемые элементы только один раз. Тем не менее, я всегда предпочитаю делать это на стороне сервера по следующим причинам:

  1. Включение клиентской части сценария приведет к ненужным HTTP-запросам.
  2. Браузеру необходимо включить Javascript.
  3. Это вызывает ненужные манипуляции с DOM. Я далек от того, чтобы быть экспертом, но я уверен, что это будет стоить некоторое время.

Этот список наиболее определенно неполный, но это темы, которые больше всего беспокоят меня. Если по какой-то причине у вас нет шансов или знаний использовать язык программирования на стороне сервера, вы можете захотеть выкопать его в Server Side Includes. Это обеспечивает очень простой в использовании метод для того, чего вы хотите достичь, и он должен быть доступен на общих веб-серверах.

Смежные вопросы