使用 npm 安装 JS 包并使用 webpack 编译 laravel mix
installing JS packages using npm and compiling with webpack laravel mix
我是 Laravel 的新手,正在学习 Laravel 5.4
的 Laracast 教程
我阅读了 Laravel mix 以及我们如何使用 Webpack Laravel Mix 工具编译我们的资产。所以我尝试添加一个 JavaScript 包
1- 使用 npm.
安装 AlertifyJS
2- 在 resources\assets\js\bootstrap.js
中添加了 require('alertifyjs')
3- 执行 npm run dev
。资产被编译为 public\js\app.js
,在这里我可以通过找到 alertify 关键字来查看 alertifyjs 代码。
我在 resources\assets\js\app.js:
中使用了如下 alertify 代码
`$(document).ready(function(){
$('.run').on('click' , function(event){
alertify.alert("This is an alert dialog.", function(){
alertify.message('OK');
});
});
});`
查看文件:
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-heading text-center"><h2>THIS WILL BE THE HOME PAGE<h2></div>
<div class="panel-body text-center">
Home Page Content Goes Here!
</div>
<button class="run">Show Alert</button>
</div>
</div>
</div>
</div>
@endsection
问题: 当我点击按钮 Show Alert 时,
警报未定义 错误记录到控制台。我在编译资产时遗漏了什么吗?
您需要在实际使用它的 app.js
中要求 alertify。 Webpack 将每个文件作为一个模块,只是将它们放在一个文件(包)中。但是您期望它在全球范围内可用,这不是一个好主意,并且确实依赖于全局变量的模块(如 jQuery 插件)被称为 legacy modules官方 webpack 文档。查看 Shimming 了解有关此类遗留模块的更多详细信息。
无论如何,这对您来说并非如此,但请记住,您实际使用它们的文件中应该始终需要您使用 npm 安装的模块。模块有自己的作用域,它不仅仅是在需要时将文件放在一起。如果这个模块的概念对你来说是新的,或者你想更好地理解它,你应该阅读 Node.js Modules,因为它在 JavaScript.
中被大量使用
您的 resources\assets\js\app.js
需要更改为:
const alertify = require('alertifyjs');
$(document).ready(function(){
$('.run').on('click' , function(event){
alertify.alert("This is an alert dialog.", function(){
alertify.message('OK');
});
});
});
我是 Laravel 的新手,正在学习 Laravel 5.4
的 Laracast 教程
我阅读了 Laravel mix 以及我们如何使用 Webpack Laravel Mix 工具编译我们的资产。所以我尝试添加一个 JavaScript 包
1- 使用 npm.
安装 AlertifyJS
2- 在 resources\assets\js\bootstrap.js
中添加了 require('alertifyjs')
3- 执行 npm run dev
。资产被编译为 public\js\app.js
,在这里我可以通过找到 alertify 关键字来查看 alertifyjs 代码。
我在 resources\assets\js\app.js:
`$(document).ready(function(){
$('.run').on('click' , function(event){
alertify.alert("This is an alert dialog.", function(){
alertify.message('OK');
});
});
});`
查看文件:
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-heading text-center"><h2>THIS WILL BE THE HOME PAGE<h2></div>
<div class="panel-body text-center">
Home Page Content Goes Here!
</div>
<button class="run">Show Alert</button>
</div>
</div>
</div>
</div>
@endsection
问题: 当我点击按钮 Show Alert 时,
警报未定义 错误记录到控制台。我在编译资产时遗漏了什么吗?
您需要在实际使用它的 app.js
中要求 alertify。 Webpack 将每个文件作为一个模块,只是将它们放在一个文件(包)中。但是您期望它在全球范围内可用,这不是一个好主意,并且确实依赖于全局变量的模块(如 jQuery 插件)被称为 legacy modules官方 webpack 文档。查看 Shimming 了解有关此类遗留模块的更多详细信息。
无论如何,这对您来说并非如此,但请记住,您实际使用它们的文件中应该始终需要您使用 npm 安装的模块。模块有自己的作用域,它不仅仅是在需要时将文件放在一起。如果这个模块的概念对你来说是新的,或者你想更好地理解它,你应该阅读 Node.js Modules,因为它在 JavaScript.
中被大量使用您的 resources\assets\js\app.js
需要更改为:
const alertify = require('alertifyjs');
$(document).ready(function(){
$('.run').on('click' , function(event){
alertify.alert("This is an alert dialog.", function(){
alertify.message('OK');
});
});
});