awe*_*san 2 npm laravel webpack laravel-mix
我是 Laravel 的新手,并且遵循 Laravel 5.4 的 Laracast 教程,
我阅读了 Laravel mix 以及我们如何使用 Webpack Laravel Mix 工具编译我们的资产。所以我尝试使用npm添加一个 JavaScript Package
1- Installed AlertifyJS。
2-在
3- 已执行中添加。资产被编译为,我可以在其中通过查找alertify关键字来查看alertifyjs代码。
我在resources\assets\js\app.js 中使用了如下所示的alertify代码:require('alertifyjs')resources\assets\js\bootstrap.jsnpm run devpublic\js\app.js
`$(document).ready(function(){
$('.run').on('click' , function(event){
alertify.alert("This is an alert dialog.", function(){
alertify.message('OK');
});
});
});`
Run Code Online (Sandbox Code Playgroud)
查看文件:
@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
Run Code Online (Sandbox Code Playgroud)
问题:当我点击按钮Show Alert 时,
alertify is not defined错误被记录到控制台。我在编译资产时遗漏了什么吗?
您需要在您app.js实际使用它的地方require alertify 。Webpack 将每个文件保存为一个模块,只需将它们放在一个文件中(包)。但是您期望它在全球范围内可用,这不是一个好主意,并且依赖于全局变量的模块(如 jQuery 插件)在官方 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');
});
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4594 次 |
| 最近记录: |