За последние 24 часа нас посетил 22431 программист и 1062 робота. Сейчас ищут 733 программиста ...

laravel js webpack разделение кода

Тема в разделе "PHP для новичков", создана пользователем iliavlad, 6 сен 2016.

  1. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    Всем привет.

    Подскажите правильное направление движения.

    Есть страничка на фрейворке laravel. При переходе на неё надо выполнить действие с помощью javascript.

    Примерно так во vieiw/test.blade.php
    PHP:
    1. @extends('layouts.app')
    2.  
    3. @section('content')
    4. // код странички
    5. @endsection
    6. @push('scripts')
    7. <script>$(function() {
    8. console.log('нужная страничка');
    9. });</script>
    10. @endpush
    и получаю сообщение в логе. Всё ок.

    Теперь читаю дальше документацию https://laravel.com/docs/5.3/elixir и пробую настроить всё это дело.

    в файле assets/js/test.js пишу
    Код (Javascript):
    1. function test() {
    2.     console.log('сообщение из test.js');
    3. }
    4. module.exports = test;
    в assets/js/app.js
    Код (Javascript):
    1. var test = require('./js/test.js');
    2. test();
    далее gulp, обновление странички и получение сообщения.

    Соответственно при нахождении на других страничках тоже получение этого сообщения.

    И вот теперь вопрос. Что мне нужно прописать в test.blade.php, чтобы только на ней появлялось сообщение из test.js и только на ней.

    Как правильно настраивать js в webpack и elixir.
    --- Добавлено ---
    Небольшое дополнение.

    Как мне показалось, вот здесь https://blog.madewithlove.be/post/webpack-your-bags/ товарищ делает как раз то, что мне нужно
    ---
    And let’s render it in our application:
    src/index.js

    Код (Javascript):
    1. // If we have an anchor, render the Button component on it
    2. if (document.querySelectorAll('a').length) {
    3.     require.ensure([], () => {
    4.         const Button = require('./Components/Button');
    5.         const button = new Button('google.com');
    6.  
    7.         button.render('a');
    8.     });
    9. }
    10.  
    11. // If we have a title, render the Header component on it
    12. if (document.querySelectorAll('h1').length) {
    13.     require.ensure([], () => {
    14.         const Header = require('./Components/Header');
    15.  
    16.         new Header().render('h1');
    17.     });
    18. }
    ---

    но вот запуск нужного кода после поиска на страничке определённого элемента... причём поиск осуществляется на всех страничках...

    возможно, есть какой-то другой способ, но никак не могу его найти.
     
  2. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    Вроде разобрался с помощью https://learn.javascript.ru/screencast/webpack и https://gitter.im/LaravelRUS/chat

    в assets/js/app.js
    Код (Javascript):
    1. let test = require('./test');
    2.  
    3. exports.test = test;
    в webpack.config.js
    Код (Javascript):
    1. module.exports = {
    2.     entry: "./resources/assets/js/app.js",
    3.     output: {
    4.         filename: "app.js",
    5.         library: "mylib"
    6.     },
    7. };
    в vieiw/test.blade.php
    PHP:
    1. @push('scripts')
    2. <script>$(function() {
    3. console.log('нужная страничка');
    4. mylib.test();
    5. });</script>
    6. @endpush
    пока такой этап