Пишу скрипт показа сообщения
.Файл notify.js
;(function(){
function Notify(titleText, messageText) {
var notify = document.createElement("div");
notify.className = "notify";
var title = document.createElement("div");
title.className = "notify title";
title.innerHTML = titleText;
var message = document.createElement("div");
message.className = "notify message";
message.innerHTML = messageText;
notify.appendChild(title);
notify.appendChild(message);
function show(){
document.body.appendChild(notify);
}
}
})();
При подключении скрипта в index.html и при вызове Notify("title","message").show() ошибка Notify is not defined и это понятно, но как по-другому писать, чтобы не было конфликтов с локальными скриптами?
Много ошибок допускаю, скажите, какие? Как правильно организовать код, писать библиотеку?
Ответ
У Вас код локально создался и... умер, т. к. при завершении функции, её окружение уничтожается. Исключение - замыкание (например, ссылка на какие-то данные сохраняется и после завершения работы).
// В параметрах передаём модуль и this (глобальный объект, не обязательно window)
(function(myModule, global){
// Если есть система зависимостей AMD, добавляем модуль туда
if(typeof define === "function" && define.amd)
define("logger", [], () => myModule());
// Если же это RequireJS, не будем идти против воли Творца :)
else if(typeof module !== 'undefined' && module.exports)
module.exports = myModule();
// Если систем сборки нет, значит экспортируем в глобальный объект
else
global['logger'] = myModule();
}(function(){
let myModule = _ => console.info(`Вывод '${_}' через модуль`);
return myModule;
}, this));
// Сработает 3-я ветка экспорта
logger('Test');
Но стандарт устанавливает более интересную конструкцию для модулей, рекомендую с ней ознакомится
Комментариев нет:
Отправить комментарий