Вопрос

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

Вот как у меня в настоящее время есть вещи, настроенные с require.js. У меня две функции, functionA() а также functionB(). Анкет Обе эти функции требуют дополнительной функции, functionC() работать правильно.

Я хочу загрузить functionc () только при необходимости, т.е. когда будет вызван функции function () или functionb (). Итак, у меня есть следующие файлы:

functionC.JS

functionC(){
  //do stuff
}

function.js

functionA(){  
  define(['functionC'],function(){
    //functionC() is loaded because it is listed as a dependency, so we can proceed
    //do some functionA() stuff
  });
}

functionb.js

functionB(){  
  define(['functionC'],function(){
    //functionC() is loaded because it is listed as a dependency, so we can proceed
    //do some functionB() stuff
  });
}

Итак, это настройка правильно? И если я в конечном итоге вызовут как функции (), так и functionb () на одной странице, выполняется ли дополнительная работа, поскольку они оба загружают файл functionC.JS? Если так, это проблема? И если да, то есть ли способ настроить его, чтобы они впервые проверили, был ли функционировать. Наконец, это соответствующее использование require.js?

Это было полезно?

Решение

define() следует использовать только для определения модуля. Для приведенного выше примера, когда часть кода должна быть динамически загружена, используя require() более подходит:

function.js

functionA(){
  require(['functionC'],function(functionC){
    //use funcC in here to call functionC
  });
}

Некоторые примечания:

  • require([]) асинхронно, поэтому, если вызывающий абонент functionA ожидает возвращаемого значения от этой функции, вероятно, будут ошибки. Лучше всего, если functionA принимает обратный вызов, который называется, когда functionA делается со своей работой.
  • Приведенный выше код позвонет require() за каждый звонок functionA; Однако после первого вызова, для загрузки не потребуется штраф functionC.js, он загружен только один раз. Первый раз require() Получится, он загрузится functionC.js, но в остальное время требования знают, что он уже загружен, поэтому он позвонит function(functionC){} функция без запроса functionC.js опять таки.

Другие советы

Вы можете найти подробную информацию о requirejs и javascript modularity здесь: Javascript modularity с requirejs (от кода спагетти до кода равиоли)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top