Я использую Laravel Mix для компиляции узловых модулей.
В app.js
У меня загружены следующие модули.
window.Helper = require('./Helper.js');
require('./Calendar.js');
Helper.js
module.exports = {
foo: function(){
console.log('foo called!');
},
bar: function () {
console.log('bar called!');
}
}
В представлении я могу запускать функции из модуля Helper просто: -
<script>
Helper.foo();
Helper.bar();
</script>
Однако мне не удалось выполнить рефакторинг файла Calendar.js
, который выполняется на каждой странице.
import { Calendar } from '@fullcalendar/core';
import interactionPlugin from '@fullcalendar/interaction';
import dayGridPlugin from '@fullcalendar/daygrid';
import timeGridPlugin from '@fullcalendar/timegrid';
document.addEventListener('DOMContentLoaded', function() {
var calendarElement = document.getElementById('calendar');
var calendar = new Calendar(calendarElement, {
plugins: [ interactionPlugin, dayGridPlugin, timeGridPlugin ],
initialView: 'dayGridMonth',
headerToolbar: {
left: 'prev,next today',
center: 'title',
right: 'dayGridMonth,timeGridWeek,timeGridDay'
},
firstDay: 1,
editable: false,
droppable: false,
allDaySlot: false,
displayEventTime: true,
defaultTimedEventDuration: '00:10:00',
slotDuration: '00:10:00',
snapDuration: '00:10:00',
forceEventDuration: true,
slotMinTime: '08:00:00',
slotMaxTime: '20:00:00',
});
calendar.render();
});
Как провести рефакторинг кода, чтобы можно было загрузить модуль календаря так же, как модуль помощника.
Пример: -
app.js
window.Helper = require('./Helper.js');
window.Calendar = require('./Calendar.js');
В представлении я мог бы запустить как
<script>
Calendar.init('#calendar');
Calendar.run();
</script>