module — Как точно работает требование файлов javascript с mod_v8 в сценариях freeswitch?

Включить самозапускающуюся функцию в переменную

Реализация include позволяет вам «копировать-вставлять» код из скрипта в скрипт, который в первую очередь вызывает include чтобы вы могли использовать его для загрузки кода в переменные. Например:

math.js

 (a, b) ={amp}gt; { return a   b; } 

main.js

 const sum = include('/etc/freeswitch/test/math.js'); //logs 15 log( sum(5, 10) ); 

Теперь у вас не возникнет проблем с загрузкой того же скрипта в глобальную область видимости. Мы можем перевести это на другой уровень с помощью функций, вызывающих себя.

math.js

 (() ={amp}gt; { const pi = 3.14; function circleArea(radius){ return radius * radius * pi; } function sum(a, b){ return a   b; } return { circleArea, sum }; })(); 

main.js

 const math = include('/etc/freeswitch/test/math.js'); const { sum, circleArea } = include('/etc/freeswitch/test/math.js'); //with module log( math.circleArea(5) ); // logs 78.5 log( math.sum(5, 10) ); // logs 15 //direct call log( circleArea(5) ); // logs 78.5 log( sum(5, 10) ); // logs 15 

Но каждый раз, когда вы хотите загрузить math.js, он будет работать как собственный модуль и загружаться несколько раз, а не как модуль Node.js. Например:

FreeSwitch

math.js

 (() ={amp}gt; { log("Math loaded..."); })(); 

main.js

 const math1 = include('/etc/freeswitch/test/math.js'); const math2 = include('/etc/freeswitch/test/math.js'); 

Это печатает «Математика загружена …» дважды.

Node.js

math.js

 (() ={amp}gt; { console.log("Math loaded..."); })(); 

main.js

 const math1 = require('./math.js'); const math2 = require('./math.js'); 

Это печатает «Математика загружена …» один раз.

Отсюда вы можете написать свой собственный скрипт включения (это все еще плохой подход, но он должен работать). Что-то вроде этого:

include.js

 if (typeof _include === 'undefined') { var _loadedScripts = {}; function _include(script){ if (!_loadedScripts.hasOwnProperty(script)){ _loadedScripts[script] = include(script); } return _loadedScripts[script]; } } 

И тогда вы можете написать свои модули, как раньше:

math.js

 (() ={amp}gt; { log("Math loaded..."); var pi = 3.14; return { pi }; })(); 

И когда вы хотите включить скрипты:

main.js

 include('/etc/freeswitch/include.js'); const math1 = _include('/etc/freeswitch/test/math.js'); const math2 = _include('/etc/freeswitch/test/math.js'); math1.pi = 10; math2.pi = 20; log(math1.pi); log(math2.pi); в include('/etc/freeswitch/include.js'); const math1 = _include('/etc/freeswitch/test/math.js'); const math2 = _include('/etc/freeswitch/test/math.js'); math1.pi = 10; math2.pi = 20; log(math1.pi); log(math2.pi); и include('/etc/freeswitch/include.js'); const math1 = _include('/etc/freeswitch/test/math.js'); const math2 = _include('/etc/freeswitch/test/math.js'); math1.pi = 10; math2.pi = 20; log(math1.pi); log(math2.pi); 

Это даст:

 Math loaded... 20 20 
Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector