Laravel MIX, как использовать одну функцию в нескольких файлах - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть три файла:

  • my_function.js
  • scripts_1.js
  • scripts_2.js

my_function.js

function myFunction() {
  console.log('my function');
}

Как я могу использовать эту функцию в обоих моих файлах scripts_1.js и scripts_2.js? Я использую эти два в users.js как:

require('scripts_1');
require('scripts_2');

и в admins.js я использую только один:

require('scripts_2');

Позже в моем webpack.mix.js я компилирую файлы users и admin в два отдельных уменьшенных js-файла.

Если я просто использую require('my_function') в моих scripts_1 и scripts_2 файлах, это не сработает (вероятно, myFunction() не в той же области видимости).

Однако я могу сделать это, если присоединю свою функцию к переменной window, чтобы my_function теперь выглядело так:

window.myFunction = function() { ... }

На данный момент мне даже не нужно требовать его ни в одном из файлов scripts_1 и scripts_2 (но я делаю это в моих файлах users.js и admin.js), но это как-то не так.

tldr;

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

1 Ответ

0 голосов
/ 07 ноября 2018

Вы экспортируете myFunction?

В узле вы можете сделать

module.exports = {
   myFunction: function () {
     console.log('my function');
   }
}

С веб-пакетом и друзьями вы можете просто

export function myFunction() {
  console.log('my function');
}

Тогда вы можете импортировать и использовать функцию

const someName = require('my_function.js')

someName.myFunction()

Экспорт функции, о которой вы говорите, что модуль (в данном случае файл) имеет эту функцию. И когда вы импортируете модуль, вы сможете использовать эту функцию, это какой-то тип публичного / частного поведения, экспортируемые функции / объекты, ... открытые для других модулей, неэкспортированные функции / объекты / ... являются закрытыми.

Чтобы использовать экспортируемую функцию, сначала вам нужно импортировать модуль в каждый файл, который вы хотите использовать (require ('themodule')). Вместо этого, используя window, вы присоединяете к глобальному объекту window новое свойство, поэтому, как только вы импортируете в какой-то файл модуль, вы можете использовать window.myFunction в любом файле. Последнее не желательно.

Здесь у вас есть разные типы модулей, которые есть у javascript.

...