我使用Laravel 5.4
的mix
工具來構建,並結合我AngularJS 1
文件。這裏是我的webpack.mix.js
爲Laravel:如何使用laravel mix(webpack)在全局範圍中顯示js變量?
mix.js('resources/assets/js/app.js', 'public/js/app.js');
mix.combine('resources/assets/js/directives/*', 'public/js/directives.js');
這裏是應用程序認定中:
'use strict';
var myApp = angular.module('myApp', [
'ngRoute',
//...
]);
,這裏是一個指令
myApp.directive('navigation', function() {
return {
templateUrl: 'app/modules/layouts/nav.html',
replace: true
};
});
問題是,當我建立的文件,包括他們HTML我得到的錯誤
ReferenceError: myApp is not defined
從編譯diretives.js
文件。
我弄清楚,作爲mix
使用webpack
的編譯和webpack
封裝每個js的一個匿名函數文件的內容,所以我myApp
變量只是在編譯app.js
文件訪問,而不是在全球範圍內。當我手動刪除編譯app.js
文件的匿名函數,它工作得很好。
所以我想知道是否有一種方法,使myApp
變量全局訪問雖然Laravel
的mix
配置?
雖然正確的方法是註冊各種角度成分到模塊使用'angular.module(「對myApp」)'作爲吸氣劑。從來沒有污染全局命名空間.. –
可以請您詳細闡述@pankajparkar –
見Laravel是如何做的在其啓動代碼:https://github.com/laravel/laravel/blob/v5.4.21/resources/assets/js/bootstrap。 js(像'window._ = require('lodash')');') – ceejayoz