Я создал следующие три модуля. Вопрос заключается в том, что с помощью IIFE (без использования модульной библиотеки, такой как common.js, require.js и т. Д.), Как это сделать так, чтобы только модуль2 был видимым для модуля3, и только модуль1 должен быть видимым для модуля2.Контроль Visibliy с использованием IIFE
Q2. Как избежать того, чтобы модули 1 и 2 поступали в глобальную область действия, так как мне нужно выставить ТОЛЬКО mondule3, который будет доступен из html?
module1.jsvar module1 = (function(){
var module1Msg = "This is Module 1";
return {
module1Msg:module1Msg
};
})();
module2.js
var module2 = (function(){
var module2Msg = module1.module1Msg +" - "+" This is Module 2";
return {
module2Msg:module2Msg
};
})();
module3.js
var module3 = (function(){
var module3Msg = module2.module2Msg +" - " +" This is Module 3";
return {
module3Msg:module3Msg
};
})();
и использующие эти модули из следующего HTML-файла
<html>
<head>
<title>Module Experiment</title>
<script src="module1.js"></script>
<script src="module2.js"></script>
<script src="module3.js"></script>
<script>
alert(module3.module3Msg);
</script>
</head>
<body>
<div id="display"></div>
</body>
</html>
Вы запрашиваете функциональность AMD , но не хотите использовать библиотеку AMD. Почему бы и нет?Во всех случаях будут задействованы некоторые накладные расходы, независимо от того, используете ли вы библиотеку AMD на стороне клиента, серверный узел, такой как браузер, или сворачиваете свое собственное решение. –