Невозможно использовать старую добрую JS-функцию с некоторым jQuery в шаблоне лезвия Laravel 5.7 с веб-пакетом - метод не найден

Я использую Laravel 5 Boilerplate, который поставляется с уже готовой структурой.

Я хочу вызвать простой метод JavaScript из лезвия. Вот что я сделал:

1) Создан файл под названием test123.js

содержание test123.js:

function test123() {
    $(document).ready(function () {
        console.info('hello from test123');
    });
}

2) Я открыл существующий app.js и добавил:

import './test123';

3) Позвонил в npm dev run - все зеленое, все ок.

4) В лезвии index.blade.php я набрал:

@push('after-scripts')
    <script>
        test123();
    </script>
@endpush

Зашел в скомпилированный файл:

<script src = "http://foo.local/js/backend.js?id=8dbe74e012c3122422da"></script>

Мой метод есть:

Невозможно использовать старую добрую JS-функцию с некоторым jQuery в шаблоне лезвия Laravel 5.7 с веб-пакетом - метод не найден

однако этого не видно.

Невозможно использовать старую добрую JS-функцию с некоторым jQuery в шаблоне лезвия Laravel 5.7 с веб-пакетом - метод не найден

Думаю, дело в прицелах? Я не хочу делать это window.test123. Нужно ли мне? Я просто хочу определить старый добрый метод JS / jQuery и вызывать его только при необходимости в определенных шаблонах.

«Современный» JS - не моя сильная сторона, поскольку я считаю его очень запутанным. Я не трогал дефолтный webpack.mix.js.

mix.setPublicPath('public');

mix.sass('resources/sass/frontend/app.scss', 'css/frontend.css')
    .sass('resources/sass/backend/app.scss', 'css/backend.css')
    .js('resources/js/frontend/app.js', 'js/frontend.js')
    .js([
        'resources/js/backend/before.js',
        'resources/js/backend/app.js',
        'resources/js/backend/after.js'
    ], 'js/backend.js')
    .extract([
        'jquery',
        'bootstrap',
        'popper.js/dist/umd/popper',
        'axios',
        'sweetalert2',
        'lodash',
        '@fortawesome/fontawesome-svg-core',
        '@fortawesome/free-brands-svg-icons',
        '@fortawesome/free-regular-svg-icons',
        '@fortawesome/free-solid-svg-icons'
    ]);

Пожалуйста, помогите мне достичь этой простой цели. Я знаю, что решение, вероятно, несложное, но я не знаю, что делать…

Спасибо.

Изменить 1: чуть не забыл. Вот структура Boilerplate:

Невозможно использовать старую добрую JS-функцию с некоторым jQuery в шаблоне лезвия Laravel 5.7 с веб-пакетом - метод не найден

Изменить 2: Пользователь BRK запросил еще несколько снимков экрана:

Невозможно использовать старую добрую JS-функцию с некоторым jQuery в шаблоне лезвия Laravel 5.7 с веб-пакетом - метод не найден

Можете ли вы показать дом из инструмента разработчика

brk 17.11.2018 03:44

Привет @brk, я загрузил скриншот в самом низу вопроса. Чего я хочу добиться, так это переместить весь этот материал jQuery в test123 и повторно использовать его в других шаблонах. Это то, чего я действительно хочу достичь. Пока я не могу вызвать метод.

Matt Komarnicki 17.11.2018 03:48
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
224
2

Ответы 2

Попробуйте явно экспортировать функцию:

export function test123() {...}

а затем импортируйте его:

import 'test123' from './test123';

Вы можете попробовать сделать это с помощью require.js

 //declare fn test123
 test123(){ ...do something}
 module.exports.test123 = test123;

а потом

 let test123 = require('./test123');

Здесь вы можете найти дополнительную информацию об использовании require.js в браузере с jquery https://requirejs.org/docs/jquery.html.

Другие вопросы по теме