Оптимизация скриптов
Здравия! У меня есть проблема, в скрипте много вычислений. Подскажите, пожалуйста, как можно было бы вынести отдельные большие функции отдельными модулями, файлами, подключаемыми к данному скрипту (js). Заранее благодарю!
|
А в чем проблема? Что оптимизировать нужно?
Долго грузится? Долго вычисляет? (отдельные модули тут не помогут) Какие модули вы собираетесь использовать (модули ES6?) |
Нет, грузится не долго. Скрипт получается очень большим, особенно некоторые функции в нем. Хотелось бы вынести отдельные функции в отдельный файл, или файлы, чтобы с основным скриптом было удобно работать. Я читал о модулях (export function(а), import{а}), но что-то наверное делал не так, потому что не заработало. Нужен пример, или что-то другое. Я еще начинающий, и слабозрячий... Пишу в Notepad++, без отладчика...
|
Подскажите, если можно.
|
Цитата:
<script src="path/name1.js"></script> <script src="path/name2.js"></script> ... |
Благодарю, попробую.
|
Так не работает, по всей видимости по тому, что переменные у меня определяются не в вынесенных функциях, а в основном скрипте. Они вводятся пользователем.
|
Если правильно разнести по файлам, то все будет работать, тем более функции подключаемые.
|
У меня пользователь вводит данные, и на их основании выполняется много рассчетов. Когда все пишу одним скриптом - все работает. А как-то вынести функцию, которая оперирует общими данными - не могу. Не понимаю, как сделать, чтобы и функцию вынести, и чтобы она видела переменные общего скрипта...
|
Значит вы нарушаете связи, вызовы и т.п. при разделении. Ну кто вам может сказать, что вы не так делаете, не зная кода?
|
Да, код у меня слишком большой. Просто в функциях, которые я выношу, не объявлены все переменные. Они берутся из кода выше. В этом то и проблема.
|
Цитата:
Как вы загружаете скрипты? Как обычные или как модули? Переменные объявленные в модулях не будут видны, кроме экспортируемых и импортируемых. Для обычных скриптов любая внешняя переменная (объявленная вне функции) будет видна где угодно (если, конечно в данной функции нет локальных переменных с таким же именем) |
Вчера засыпал, и меня осенило: это же у меня весь скрипт идет внутри функции 'on-submit'. Получается, что и функции, которые я выношу не видят переменных. Вот причина! Значит наверное уже ничего не поделаешь... или что-то можно?
|
Вынести переменные из функции 'on-submit' на глобальный уровень.
|
А как это сделать?
|
Ну писать
var x (или let x) не внутри функции, а снаружи. |
Так в том то и дело, что я извлекаю данные из формы внутри функции 'on-submit' и там же продолжаю работать. Я из функции могу выводить Return'ом только одно значение, а у меня их много. Просто может я как-то своеобразно извлекаю данные из формы, но у меня получилось только так:
$('form').bind('submit', function(e) { let Name1 = $(this).children('input[name="Name1"]').val(); let Name2 = $(this).children('input[name="Name2"]').val(); let dat = $(this).children('input[name="dat"]').val(); let tim = $(this).children('input[name="tim"]').is(':checked'); Ну и дальше я начинаю с ними работать. И все это внутри одной функции, как-то так... |
let Name1, Name2, dat, tim; $('form').bind('submit', function(e) { Name1 = $(this).children('input[name="Name1"]').val(); Name2 = $(this).children('input[name="Name2"]').val(); dat = $(this).children('input[name="dat"]').val(); tim = $(this).children('input[name="tim"]').is(':checked'); |
Надо попробовать, так я еще не пробовал. Ближе к вечеру, Благодарю!
|
Цитата:
|
Ура, работает. Огромная благодарность за помощь!
|
Часовой пояс GMT +3, время: 08:29. |