Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
-13 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 368

Оптимальный алгоритм формирования констант при использовании их в в разных местах кода

21.12.2024, 10:54. Показов 2212. Ответов 60
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подумал, не помешает обратиться за советом, м.б. кто-нибудь более умный подскажет вариант, который не увидел:

Формируются исходные данные, например массив регионов:
JavaScript
1
m_reg = new Array ("Москва и область", "Нижний Новгород и область");
Данные данные используются в разных частых кода (функциях).
Возможно, потребуется данный массив отредактировать или добавить новый регион.
Не могу решить вопрос, где и как размещать такие данные .

Какие вижу варианты:
• Объявлять в каждой функции как const ?
Но, если их (данные) объявлять в каждой из них, есть вероятность, что где-то можно забыть внести исправления.

• Во многих источниках написано, что использование глобальных переменных - плохой тон. Хотя сам и придерживаюсь иной точки зрения, но в данном случае (если такие данные не распространяются на весь код) считаю этот вариант неразумным (особенно, если таких данных м.б. много).

• Использовать БД ? Вряд ли лучший вариант

• Динамическая загрузка таких данных ? Но, опять же, если их много и они используются в разных местах кода будет ли она оптимальной ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.12.2024, 10:54
Ответы с готовыми решениями:

lwjgl и баг(артефакты в разных местах при повторе одного и того же кода)
Всем доброго вечера. Недавно занимаюсь c lwjgl. Вот просто рисуя старым добрым способом от руки, заметил вот такую интересную вещь. Может...

lwjgl и баг(артефакты в разных местах при повторе одного и того же кода)
Всем доброго вечера. Недавно занимаюсь c lwjgl. Вот просто рисуя старым добрым способом от руки, заметил вот такую интересную вещь. Может...

Отображение кода в разных местах на разных разрешениях
Всем доброго времени суток! Возникла задача отображать код в разных местах на разных разрешениях. Прилагаю картинку, там все...

60
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3827 / 1664 / 429
Регистрация: 14.03.2022
Сообщений: 4,179
21.12.2024, 13:06
755, модули ты не используешь?
Как вообще выглядит твой код если данных в нем много, а так же есть "множество мест" где те данные применяются?
0
-13 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 368
21.12.2024, 14:35  [ТС]
krvsa, если честно, не был знаком с понятием модули.
Прочитал на learn.javascript.ru в начале, что модули это файлы, хотел ответить, что в таком случае использую, но похоже все сложнее с данным термином и пока не готов ответить сразу на данный вопрос.

Структура же моего кода (условная) примерно такая:
index.html
→ *.html - новая страница для режимов (как объяснил один программист, страница для режима имеет свои плюсы в плане СЕО), либо какие-то режимы генерируются динамически самим js (если считаю такой способ удобнее)
Примерно 90% кода составляет js в виде function (как правило небольшого формата), который разделяется в отдельные файлы *.js по каким-либо признакам (напр., принадлежности к определенному под-режиму). Js файлы 1-й очереди загружаются из html, а все остальные уже динамически из самих скриптов.

Цитата Сообщение от krvsa Посмотреть сообщение
если данных в нем много, а так же есть "множество мест"
"множество мест" - написал условно как общий случай для выработки единого алгоритма, конкретно же, при наличии, скажем., 3-х режимов (а возможно в перспективе их будет и больше) и главной страницы, пример массива с регионами, приведенный ранее, м.б. использован в каждом из них.
Проблема же в том, что данный массив может выводиться разыми функциями из разных файлов.
Такие данные могут быть разными по тематике и соответственно использоваться разными функциями - поэтому объединять их в один файл для динамической загрузки кажется неразумным.

Надеюсь сумел понятно ответить ?
0
Заблокирован
21.12.2024, 16:22
Цитата Сообщение от 755 Посмотреть сообщение
Проблема же в том, что данный массив может выводиться разыми функциями из разных файлов.
Какая проблема? На сайте будет подключаться какой-нибудь файл с расширением *.js в шапке страницы? Добавь туда этот массив. Он будет виден на всех страницах для JS.

Добавлено через 2 минуты
Вот так будет по-красивее
JavaScript
1
const m_reg = ["Москва и область", "Нижний Новгород и область"];
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3827 / 1664 / 429
Регистрация: 14.03.2022
Сообщений: 4,179
21.12.2024, 16:39
755, если твой "код" представлен неким набором html и js файлов - тогда для такого рода данных можно делать свой, отдельный js файл.
Потом такие файлы можно будет подключать на нужных html страницах.

Т.о. данные будут храниться в "едином" для всех "мест" файле.
0
-13 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 368
21.12.2024, 17:03  [ТС]
barabar, по-моему неудачное предложение.

Допустим, у нас есть:
1.html, 2.html, 3.html
и массивы констант
JavaScript
1
m_cnst_1 New array(), m_cnst_2 ... m_cnst_10
m_cnst_1 (названия регионов) используются во всех .html
m_cnst_2 только в 1.html и 2.html в определенных функциях, которые м.б. запущены, а м.б и нет (соответственно
тогда этот массив не будет использоваться)
и т.д. для остальных массивов

Если правильно понял, Вы предлагаете объявлять их (данные) как глобальные в одном файле, который уже подключать на каждой странице html.
Если так: то, если весь список таких данных разместить в одном файле - каждый раз будут загружаться не используемая в данном html данные, но, если и используемые, то не факт, что потребуются конкретному Пользователю во время сеанса.

Добавлено через 6 минут
krvsa, спасибо за ответ, но как только что ответил barabarУ, единый файл не подходит по причине лишней информации, которая может оказаться и невостребованной.

Но м.б. я неправ и этот объем лишних данных несущественен и не будет серьезно влиять на скорость загрузки и объем занимаемой памяти впустую ?
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3827 / 1664 / 429
Регистрация: 14.03.2022
Сообщений: 4,179
21.12.2024, 17:07
Цитата Сообщение от 755 Посмотреть сообщение
2.html в определенных функциях, которые м.б. запущены, а м.б и нет (соответственно
тогда этот массив не будет использоваться)
В твоем варианте особо не по выбираешь...
Если "может быть использован" - придется подключать.

В противном случае тебе придется такие данные хранить в json и использовать асинхронное получение таких данных "по мере надобности".
Но не факт что ты уже умеешь программировать на таком уровне.
0
-13 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 368
21.12.2024, 17:09  [ТС]
Но, если правильно понял, других решений (из оптимальных) быстрей всего нет: либо разместить такие данные в одном файле, либо в каждой функции объявлять их как локальные с ведением реестра таких данных на предмет корректировки ?
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3827 / 1664 / 429
Регистрация: 14.03.2022
Сообщений: 4,179
21.12.2024, 17:11
Цитата Сообщение от 755 Посмотреть сообщение
единый файл не подходит по причине лишней информации
Я не предлагал единый файл для всех твоих данных.
Я предлагал на каждую "единицу данных" заводить свой файл.

Т.о. у тебя будет больше возможностей для маневра.

Далее тебе придется использовать модули... Либо применять асинхронную загрузку данных.

Добавлено через 46 секунд
Цитата Сообщение от 755 Посмотреть сообщение
либо в каждой функции объявлять их как локальные с ведением реестра таких данных на предмет корректировки ?
Это вообще ерунда.
1
-13 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 368
21.12.2024, 17:18  [ТС]
Цитата Сообщение от krvsa Посмотреть сообщение
В противном случае тебе придется такие данные хранить в json и использовать асинхронное получение таких данных "по мере надобности".
Но не факт что ты уже умеешь программировать на таком уровне.
Вроде бы умею. По крайней мере использую асинхронное подключение "по мере надобности" для загрузки css и js, получаю также асинхронно "по мере надобности" и массивы данных (правда не через json - м.б. и ошибаюсь и с его использованием загрузка не будет дольше), но пока использовал для таких целей загрузку файла js, содержащего нужный массив.

Но как мне казалось, данные решения не были бы лучшими для описанной выше проблемы
0
Заблокирован
21.12.2024, 17:28
Цитата Сообщение от 755 Посмотреть сообщение
единый файл не подходит по причине лишней информации, которая может оказаться и невостребованной.
Даже так? Очень интересно. А сайт можно посмотреть или он только в планах на будущее? А может есть уже что-то сделанное и выложено в инэт? Обычно оптимизацией занимаются уже потом... когда всё сделано и есть посетители. Зайди и ради интереса посмотри сколько на этом форуме подключаемый файлов JS. У меня они не помещаются на экране ноута и надо скроллить, что бы всё посмотреть. Больше всего тормозят загрузку страницы сторонние скрипты. Например, рекламы от Яндекса. Твои эти несколько строчек погоды не сделают. Вот так люди экономят экономят, а потом подключают себе удаленно библиотеку Bootstrap
0
-13 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 368
21.12.2024, 17:31  [ТС]
Цитата Сообщение от krvsa Посмотреть сообщение
Я предлагал на каждую "единицу данных" заводить свой файл.
Упоминал уже мнение одного программиста: для более быстрой загрузки скрипты лучше объединять в один файл.

Пока правда не следую его совету и использую переменное количество файлов (по необходимости).
НО! Разумно ли каждую единицу данных (в частности, массив с двумя - 4 элементами) держать в одном файле по причине того, что при асинхронной загрузке таких данных происходит обращение на сервер и для каждого файла будет формироваться отдельный такой запрос ?

Цитата Сообщение от krvsa Посмотреть сообщение
Далее тебе придется использовать модули...
Спасибо за совет - обязательно постараюсь освоить - технология показалась интересной
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3827 / 1664 / 429
Регистрация: 14.03.2022
Сообщений: 4,179
21.12.2024, 17:42
Цитата Сообщение от 755 Посмотреть сообщение
Разумно ли каждую единицу данных (в частности, массив с двумя - 4 элементами) держать в одном файле по причине того, что при асинхронной загрузке таких данных происходит обращение на сервер и для каждого файла будет формироваться отдельный такой запрос ?
Тебя не поймешь...

Камрад barabar написал про один файл - не, мне такое не нужно.
Я предлагаю делать несколько файлов - та же история.

Оно конечно тебе видней... Лапти твои - тебе плести и тебе же их носить.

Добавлено через 1 минуту
Цитата Сообщение от barabar Посмотреть сообщение
Вот так люди экономят экономят, а потом подключают себе удаленно библиотеку Bootstrap
1
Заблокирован
21.12.2024, 17:43
Цитата Сообщение от 755 Посмотреть сообщение
для каждого файла будет формироваться отдельный такой запрос ?
Для любого подключаемого файла будет отдельный запрос для сервера. В логах nginx это можно посмотреть, если они включены. Поэтому многие сайты вставляют прямо в каждую страницу стили и js-скрипты.
1
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3827 / 1664 / 429
Регистрация: 14.03.2022
Сообщений: 4,179
21.12.2024, 17:45
Цитата Сообщение от 755 Посмотреть сообщение
использую асинхронное подключение "по мере надобности" для загрузки css и js
Покажи как ты такое делаешь...
Возможно я тебе пишу про одно, а ты понимаешь это иначе.
0
-13 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 368
21.12.2024, 18:02  [ТС]
Цитата Сообщение от barabar Посмотреть сообщение
А сайт можно посмотреть или он только в планах на будущее? А может есть уже что-то сделанное и выложено в инэт?
Пока все, что сделано работает только на локалке и выкладываться в интернет будет только при полной готовности. И то, не мною - пока рассчитываю на программиста, с которым познакомился - у меня для этого недостаточно знаний

Цитата Сообщение от barabar Посмотреть сообщение
Обычно оптимизацией занимаются уже потом... когда всё сделано и есть посетители.
. Вполне возможно, что можно будет и потом улучшать, но разумнее оптимизировать сразу (это как разработка алгоритма - разработаешь оптимальный, сэкономишь намного больше ), Также и здесь - оптимизация - это разработка алгоритма, а с этого по нормальному и должно начинаться программирование. Увы, у меня так не получилось по ряду причин, в том числе из-за нехватки знаний (как и сейчас в случае с модулями).

Цитата Сообщение от barabar Посмотреть сообщение
Больше всего тормозят загрузку страницы сторонние скрипты. Например, рекламы от Яндекса.
Спасибо за информацию. Но не планирую сторонние скрипты, такие как реклама (только минимально необходимые для функционирования)

Добавлено через 7 минут
Цитата Сообщение от krvsa Посмотреть сообщение
...использую асинхронное подключение "по мере надобности" для загрузки css и js
---------
Покажи как ты такое делаешь...
Возможно я тебе пишу про одно, а ты понимаешь это иначе.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function asyncCSS(href) {
    var css = document.createElement('link');
    css.rel = "stylesheet";
    css.href = href;
    document.head.appendChild(css);
}
 
function insJS_2 () {
/*
    2-я очередь - выбор параметров режима 
*/
    let i;
    let nm_m_f = ["f2_2", "f2_4", "../vs", "stoim", "../mo", "f2_5"];
 
    for (i= 0; i < nm_m_f.length; i++)  {
        script = document.createElement ('script');
        // script.onload = _ => out_frmFlt  ();
        script.src = nm_m_f[i]+ '.js';
        document.getElementsByTagName ('head')[0].appendChild (script);
    }
}
0
Заблокирован
21.12.2024, 18:09
Цитата Сообщение от 755 Посмотреть сообщение
function asyncCSS(href)
Прикольно Удачи.
0
-13 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 368
21.12.2024, 18:11  [ТС]
Цитата Сообщение от barabar Посмотреть сообщение
Поэтому многие сайты вставляют прямо в каждую страницу стили и js-скрипты.
Посмотрел пару серьезных сайтов, где работают профессиональные программисты (типа авито или яндекса) просто для интереса - в html странице было очень мало данных, понял что у меня есть к чему стремиться и надо минимизировать данный код.

Добавлено через 39 секунд
Цитата Сообщение от barabar Посмотреть сообщение
Прикольно Удачи.
Спасибо, она никогда не помешает
0
Заблокирован
21.12.2024, 18:15
Цитата Сообщение от 755 Посмотреть сообщение
Посмотрел пару серьезных сайтов
Вот посмотри сайт с 80-тью миллионами посетителей в месяц. Загляни в исходный код страницы
https://genius.com/
Знаю, что таких сайтов полно. Да хотя бы глянь в исходный код страницы гугла. Только когда будешь смотреть, поставь галочку "Переносить строки"
Цитата Сообщение от 755 Посмотреть сообщение
понял что у меня есть к чему стремиться и надо минимизировать данный код.
Это точно. Дерзай. Я отчаливаю
1
-13 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 368
21.12.2024, 18:24  [ТС]
Цитата Сообщение от barabar Посмотреть сообщение
Вот посмотри сайт с 80-тью миллионами посетителей в месяц. Загляни в исходный код страницы
https://genius.com/
Знаю, что таких сайтов полно. Да хотя бы глянь в исходный код страницы гугла. Только когда будешь смотреть, поставь галочку "Переносить строки"
Спасибо еще раз. И отдельное спасибо за совет с галочкой - сколько смотрел и не замечал такую возможность.

Понравилась скорость вывода страниц сайта.
Основной вывод: оптимизация - хорошо, но для скорости видимо не самое главное.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.12.2024, 18:24
Помогаю со студенческими работами здесь

Изменение глобальных констант при разных процедурах
Здравствуйте, появилась проблема с имзенением глобальных констант. У меня есть игра Сапёр, в которой нужно создать режимы...

Ошибка при использовании WordApplication для формирования отчета
Программа формирует выходной документ Word, используя для этого данные из таблиц BDE. Выходной документ имеет определенный строгий формат,...

Построить несколько графиков параметрически заданной функции при разных значениях констант а, b, λ
Построить несколько графиков параметрически заданной функции при разных значениях констант а, b, λ. Оси графика – х и y, которые...

Как построить несколько графиков параметрически заданной функции при разных значениях констант а, b, λ
Построить несколько графиков параметрически заданной функции при разных значениях констант а, b, λ. Оси графика – х и y, которые...

Построить несколько графиков параметрически заданной функции при разных значениях констант а, b, λ. Оси графика – х и y, которые зависят от аргумен
Построить несколько графиков параметрически заданной функции при разных значениях констант а, b, λ. Оси графика – х и y, которые...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru