Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2018, 15:46   #1
gustavius
 
Регистрация: 14.04.2018
Сообщений: 4
По умолчанию Слишком большой размер 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, 18:45   #2
gustavius
 
Регистрация: 14.04.2018
Сообщений: 4
По умолчанию

Да, уточню. Размер кода большой за счет большого кол-ва изменений на странице, то есть в 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 в 19:00.
gustavius вне форума Ответить с цитированием
Старый 14.04.2018, 18:52   #3
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

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

Цитата:
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 в 18:59.
Stanislav вне форума Ответить с цитированием
Старый 14.04.2018, 18:59   #4
gustavius
 
Регистрация: 14.04.2018
Сообщений: 4
По умолчанию

Цитата:
Сообщение от 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 в 19:03.
gustavius вне форума Ответить с цитированием
Старый 14.04.2018, 19:13   #5
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

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

А чем плох вариант с выносом кода во внешние файлы?
gustavius вне форума Ответить с цитированием
Старый 14.04.2018, 21:05   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

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

ЗЫ вряд ли кто-то понял что вы пытаетесь сделать и о каких вариациях речь.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 14.04.2018, 21:45   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

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

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

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

Цитата:
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 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Слишком большой массив данных - ошибка 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 16:38
Большой размер пустой страницы AVBel Microsoft Office Excel 10 11.11.2008 11:24
Слишком большой обьем Зубоскалик Общие вопросы Delphi 5 03.09.2008 19:31