Laravel - creating vue work with other plugins

I have a project where I would like to use this topic. I just downloaded it and placed its scripts in the resources/assets/js directory. This is how I call all the scripts after running the gulp that I need for the page:

 <!-- Scripts --> <script type="text/javascript" src="https://code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script> <script src="/js/bootstrap.min.js" type="text/javascript"></script> <script type="text/javascript" src="/js/material/material.min.js"></script> <script type="text/javascript" src="/js/material/ripples.min.js"></script> <script>$.material.init()</script> <!-- Checkbox, Radio & Switch Plugins --> <script src="/js/bootstrap-checkbox-radio.js"></script> <!-- Notifications Plugin --> <script src="/js/bootstrap-notify.js"></script> <!-- Paper Dashboard Core javascript and methods for Demo purpose --> <script src="/js/paper-dashboard.js"></script> <script type="text/javascript"> $(document).ready(function(){ $.notify({ icon: 'ti-gift', message: "Welcome to <b>Paper Dashboard</b> - a beautiful Bootstrap freebie for your next project." },{ type: 'success', timer: 4000 }); }); </script> <script src="/js/app.js"></script> 

But then I can not get a loading error message or tooltip, if I remove app.js, I will work again, but then the vue components do not work.

This is the app.js app:

 /** * First we will load all of this project JavaScript dependencies which * include Vue and Vue Resource. This gives a great starting point for * building robust, powerful web applications using Vue and Laravel. */ require('./bootstrap'); var VueResource = require('vue-resource'); /** * Next, we will create a fresh Vue application instance and attach it to * the body of the page. From here, you may begin adding components to * the application, or feel free to tweak this setup for your needs. */ Vue.component('video-upload', require('./components/VideoUpload.vue')); Vue.component('video-player', require('./components/VideoPlayer.vue')); Vue.component('video-voting', require('./components/VideoVoting.vue')); Vue.use(VueResource); const app = new Vue({ el: 'body', data: window.videoApp }); 

And this is the gulpfile file:

 const elixir = require('laravel-elixir'); require('laravel-elixir-vue'); /* |-------------------------------------------------------------------------- | Elixir Asset Management |-------------------------------------------------------------------------- | | Elixir provides a clean, fluent API for defining some basic Gulp tasks | for your Laravel application. By default, we are compiling the Sass | file for our application, as well as publishing vendor resources. | */ elixir(mix => { mix.copy('resources/assets/js', 'public/js'); mix.copy('resources/assets/css', 'public/css'); mix.sass('app.scss') .webpack('app.js'); }); 

Update

I would like craig_h to suggest at the bottom of my bootstrap.js files, like this:

 require('./bootstrap-checkbox-radio.js'); require('./bootstrap-notify.js'); require('./paper-dashboard.js'); 

But I get an error message:

paper-dashboard.js? 16eb: 26Uncaught ReferenceError: lbd is not defined (...)

This is script paper-dashboard.js:

 var fixedTop = false; var navbar_initialized = false; $(document).ready(function(){ window_width = $(window).width(); // Init navigation toggle for small screens if(window_width <= 991){ lbd.initRightMenu(); } // Activate the tooltips $('[rel="tooltip"]').tooltip(); }); // activate collapse right menu when the windows is resized $(window).resize(function(){ if($(window).width() <= 991){ lbd.initRightMenu(); } }); lbd = { misc:{ navbar_menu_visible: 0 }, initRightMenu: function(){ if(!navbar_initialized){ $off_canvas_sidebar = $('nav').find('.navbar-collapse').first().clone(true); $sidebar = $('.sidebar'); sidebar_bg_color = $sidebar.data('background-color'); sidebar_active_color = $sidebar.data('active-color'); $logo = $sidebar.find('.logo').first(); logo_content = $logo[0].outerHTML; ul_content = ''; // set the bg color and active color from the default sidebar to the off canvas sidebar; $off_canvas_sidebar.attr('data-background-color',sidebar_bg_color); $off_canvas_sidebar.attr('data-active-color',sidebar_active_color); $off_canvas_sidebar.addClass('off-canvas-sidebar'); //add the content from the regular header to the right menu $off_canvas_sidebar.children('ul').each(function(){ content_buff = $(this).html(); ul_content = ul_content + content_buff; }); // add the content from the sidebar to the right menu content_buff = $sidebar.find('.nav').html(); ul_content = ul_content + '<li class="divider"></li>'+ content_buff; ul_content = '<ul class="nav navbar-nav">' + ul_content + '</ul>'; navbar_content = logo_content + ul_content; navbar_content = '<div class="sidebar-wrapper">' + navbar_content + '</div>'; $off_canvas_sidebar.html(navbar_content); $('body').append($off_canvas_sidebar); $toggle = $('.navbar-toggle'); $off_canvas_sidebar.find('a').removeClass('btn btn-round btn-default'); $off_canvas_sidebar.find('button').removeClass('btn-round btn-fill btn-info btn-primary btn-success btn-danger btn-warning btn-neutral'); $off_canvas_sidebar.find('button').addClass('btn-simple btn-block'); $toggle.click(function (){ if(lbd.misc.navbar_menu_visible == 1) { $('html').removeClass('nav-open'); lbd.misc.navbar_menu_visible = 0; $('#bodyClick').remove(); setTimeout(function(){ $toggle.removeClass('toggled'); }, 400); } else { setTimeout(function(){ $toggle.addClass('toggled'); }, 430); div = '<div id="bodyClick"></div>'; $(div).appendTo("body").click(function() { $('html').removeClass('nav-open'); lbd.misc.navbar_menu_visible = 0; $('#bodyClick').remove(); setTimeout(function(){ $toggle.removeClass('toggled'); }, 400); }); $('html').addClass('nav-open'); lbd.misc.navbar_menu_visible = 1; } }); navbar_initialized = true; } } } // Returns a function, that, as long as it continues to be invoked, will not // be triggered. The function will be called after it stops being called for // N milliseconds. If `immediate` is passed, trigger the function on the // leading edge, instead of the trailing. function debounce(func, wait, immediate) { var timeout; return function() { var context = this, args = arguments; clearTimeout(timeout); timeout = setTimeout(function() { timeout = null; if (!immediate) func.apply(context, args); }, wait); if (immediate && !timeout) func.apply(context, args); }; }; 

We apologize if this is a beginner's question, but I have not used a web package or a browser, so I do not know how to configure all this.

+5
source share
2 answers

I do not use webpack Instead I use browserify , but I think the problem is that you use packages that rely on global variables, if you want to do this then you need to use an importer, see modules for trimming

However, you can usually just get away with the requirement in them: /resources/assets/js/bootstrap.js as follows:

require('./bootstrap-checkbox-radio.js')

require('./bootstrap-notify.js')

require('./paper-dashboard.js')

Then just run gulp

+1
source

To solve this problem:

paper-dashboard.js? 16eb: 26Uncaught ReferenceError: lbd is not defined (...)

try editing paper-dashboard.js and define lbd for the global area using window as follows:

 ... window['lbd'] = { misc:{ navbar_menu_visible: 0 }, ... 
0
source

Source: https://habr.com/ru/post/1259457/


All Articles