Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Web > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 14.04.2018, 16:46   #1
gustavius
Новичок
 
Регистрация: 14.04.2018
Сообщений: 4
Репутация: 10
По умолчанию Слишком большой размер JS кода

Приветствую!

Google Tag Manager (GTM) при сохранении кода в custom HTML tag ругается, что он больше 102400 символов.

Сам я только начинаю осваивать JS. Подскажите, пожалуйста, как эффективнее уменьшить размер кода так, чтобы это не повлияло на скорость отработки этого custom HTML tag.

Изначально код имеет подобный вид (только в моем случае размер кода значительно больше):

Код:

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>

<script>
// Define JavaScript for each page variation of this experiment.
var pageVariations = [
  function() {},  // Original: Do nothing. This will render the default HTML.
  function() {    // Variation 1: Banner Image
    document.getElementById('banner').src = 'bay-bridge.jpg';
  },
  function() {    // Variation 2: Sub-heading Text
    document.getElementById('heading').innerHTML = 'Look, a Bridge!';
  },
  function() {    // Variation 3: Button Text
    document.getElementById('button').innerHTML = 'Learn more';
  },
  function() {    // Variation 4: Button Color
    document.getElementById('button').className = 'button button-blue';
  }
];

// Wait for the DOM to load, then execute the view for the chosen variation.
$(document).ready(function(){
  // Execute the chosen view
  pageVariations[chosenVariation]
});
</script>


Как вариант я думаю сохранить каждый Variation в отдельный js файл на сервера сайта и в custom HTML tag прописывать не весь код, изменяющий страницу, а только код запрашивающий внешний код, который сохранен на сервере сайта.
Это верное решение?

Вот так:
Код:

   function() {    // Variation 1: Banner Image
       var script = document.createElement('script');
       script.src = 'mysite.com/js/variation1.js';
       var head = document.getElementsByTagName("head")[0];
       head.appendChild(script);
          },

gustavius вне форума   Ответить с цитированием
Старый 14.04.2018, 19:45   #2
gustavius
Новичок
 
Регистрация: 14.04.2018
Сообщений: 4
Репутация: 10
По умолчанию

Да, уточню. Размер кода большой за счет большого кол-ва изменений на странице, то есть в 1 вариации кода может быть очень много. Примерно так:

Код:

 document.getElementById('heading').innerHTML = 'Look, a Bridge!';
 document.getElementById('timeline').outerHTML= ''; 
 document.getElementById('table_div').outerHTML= ''; 
 //Удаляем текст под заголовком
 document.getElementsByClassName("col-lg-12 text-center")[2].getElementsByTagName("p")[1].outerHTML = ''; 
 document.getElementsByClassName("col-lg-12 text-center")[2].getElementsByTagName("p")[1].outerHTML = ''; 
 //Restore pie-charts style
 document.querySelectorAll('canvas')[0].style.display = 'block'; 
 document.querySelectorAll('canvas')[1].style.display = 'block'; 
 document.querySelectorAll('canvas')[2].style.display = 'block'; 
 document.getElementsByClassName('chart-content')[0].style.marginTop= "0"; 
 document.getElementsByClassName('chart-content')[1].style.marginTop= "0"; 
 document.getElementsByClassName('chart-content')[2].style.marginTop= "0"; 
 document.getElementsByClassName('chart')[0].style.width = "230px"; 
 document.getElementsByClassName('chart')[1].style.width = "230px"; 
 document.getElementsByClassName('chart')[2].style.width = "230px"; 
    document.getElementById('heading').innerHTML = 'Look, a Bridge!';
blablabla....................

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

Последний раз редактировалось gustavius; 14.04.2018 в 20:00.
gustavius вне форума   Ответить с цитированием
Старый 14.04.2018, 19:52   #3
Stanislav
Квадрокоптерист
Профессионал
 
Регистрация: 29.09.2007
Сообщений: 1,781
Репутация: 513
По умолчанию

Цитата:
как эффективнее уменьшить размер кода так
Вы думаете эту работу кто станет делать?

Цитата:
document.getElementById('heading'). innerHTML = 'Look, a Bridge!';
document.getElementById('heading'). innerHTML = 'Look, a Bridge!';
document.getElementById('heading'). innerHTML = 'Look, a Bridge!';
document.getElementById('heading'). innerHTML = 'Look, a Bridge!';
document.getElementById('heading'). innerHTML = 'Look, a Bridge!';
document.getElementById('heading'). innerHTML = 'Look, a Bridge!';
document.getElementById('heading'). innerHTML = 'Look, a Bridge!';
document.getElementById('heading'). innerHTML = 'Look, a Bridge!';
document.getElementById('heading'). innerHTML = 'Look, a Bridge!';
document.getElementById('heading'). innerHTML = 'Look, a Bridge!';
Это что за бред? если уж надо млн раз вывести цикл нельзя использовать??

Цитата:
Глобально руками переписывать код долго, поэтому не рассматриваю пока этот вариант.
а какой Вы еще вариант рассматриваете?

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

Цитата:
Как вариант я думаю сохранить каждый Variation в отдельный js файл на сервера сайта и в custom HTML tag прописывать не весь код, изменяющий страницу, а только код запрашивающий внешний код, который сохранен на сервере сайта.
Это верное решение?
нет лучше не пишите
__________________
Я часть той силы, что вечно хочет зла, но вечно совершает благо..

Последний раз редактировалось Stanislav; 14.04.2018 в 19:59.
Stanislav вне форума   Ответить с цитированием
Старый 14.04.2018, 19:59   #4
gustavius
Новичок
 
Регистрация: 14.04.2018
Сообщений: 4
Репутация: 10
По умолчанию

Цитата:
Сообщение от Stanislav Посмотреть сообщение
Это что за бред? если уж надо млн раз вывести цикл нельзя использовать??
Это для примера, чтобы показать размеры кода.


Цитата:
Сообщение от Stanislav Посмотреть сообщение
а какой Вы еще вариант рассматриваете?
Тот, что выше. Вывести код во внешние файлы:

Код:

function() {    // Variation 1: Banner Image
       var script = document.createElement('script');
       script.src = 'mysite.com/js/variation1.js';
       var head = document.getElementsByTagName("head")[0];
       head.appendChild(script);
          },

Можно оплатить конечно кодеру, чтобы привел код в компактный вид, но 1) надо быть уверенным, что это поможет вписаться в ограничения 2) что вариант с внешним JS имеет существенные минуса

Последний раз редактировалось gustavius; 14.04.2018 в 20:03.
gustavius вне форума   Ответить с цитированием
Старый 14.04.2018, 20:13   #5
Stanislav
Квадрокоптерист
Профессионал
 
Регистрация: 29.09.2007
Сообщений: 1,781
Репутация: 513
По умолчанию

Ну так напишите на фрилансе и дайте четкое ТЗ. думаю найдется кто нибудь
__________________
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума   Ответить с цитированием
Старый 14.04.2018, 20:28   #6
gustavius
Новичок
 
Регистрация: 14.04.2018
Сообщений: 4
Репутация: 10
По умолчанию

А чем плох вариант с выносом кода во внешние файлы?
gustavius вне форума   Ответить с цитированием
Старый 14.04.2018, 22:05   #7
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 16,336
Репутация: 3242

icq: 512-765
skype: alexp.frl
По умолчанию

Зачем добавлять jquery, чтобы потом использовать древние getElement* вместо его селекторов?

ЗЫ вряд ли кто-то понял что вы пытаетесь сделать и о каких вариациях речь.
Alex11223 вне форума   Ответить с цитированием
Старый 14.04.2018, 22:45   #8
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 11,553
Репутация: 1916

icq: 216409213
По умолчанию

Я не знаю вашу задачу, но смотря на код создается стойкое ощущение, что это явно что-то нето или неправльный подход. Если вам действительно надо кучу элементов переписывать, то может проще просто большой кусок или всю страницу перезагрузить?
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 14.04.2018, 23:56   #9
Stanislav
Квадрокоптерист
Профессионал
 
Регистрация: 29.09.2007
Сообщений: 1,781
Репутация: 513
По умолчанию

Я же сразу и сказал что это гавнокод..

когда спросил что это:

Цитата:
document.getElementById('heading'). innerHTML = 'Look, a Bridge!';
document.getElementById('heading'). innerHTML = 'Look, a Bridge!';
document.getElementById('heading'). innerHTML = 'Look, a Bridge!';
document.getElementById('heading'). innerHTML = 'Look, a Bridge!';
document.getElementById('heading'). innerHTML = 'Look, a Bridge!';
document.getElementById('heading'). innerHTML = 'Look, a Bridge!';
сказали:
Цитата:
Это для примера, чтобы показать размеры кода.
Ну так закачайте сюда блин войну и мир чтобы мы поняли размеры, просите совета как оптимизировать а сами даете вымышленный код.. это как ?

Цитата:
Зачем добавлять jquery, чтобы потом использовать древние getElement* вместо его селекторов?
за это лучше не спрашивать даже..
__________________
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Слишком большой массив данных - ошибка Jleksern Общие вопросы Delphi 5 01.10.2013 00:34
DSPACK большой размер видео stasones Компоненты Delphi 3 22.07.2012 15:46
Слишком большой размер! Egik_net Microsoft Office Access 2 28.11.2009 17:38
Большой размер пустой страницы AVBel Microsoft Office Excel 10 11.11.2008 12:24
Слишком большой обьем Зубоскалик Общие вопросы Delphi 5 03.09.2008 19:31


10:04.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru