在Laravel 5.6中使用自定义JavaScript函数
我在使用Laravel5.6中的自定义JavaScript函数时遇到了一些问题,无法找出我做错了什么 我在/assets/js/中创建了一个自定义文件,标记为helpers.js,具有以下功能:在Laravel 5.6中使用自定义JavaScript函数,javascript,laravel,laravel-5.6,Javascript,Laravel,Laravel 5.6,我在使用Laravel5.6中的自定义JavaScript函数时遇到了一些问题,无法找出我做错了什么 我在/assets/js/中创建了一个自定义文件,标记为helpers.js,具有以下功能: export const isBetween = function(n, a, b) { return (n - a) * (n - b) <= 0 }; 如果我在app.js中执行console.log(isBetween(20,1,40),它会正常工作。但是,我无法在刀片模板中执行;
export const isBetween = function(n, a, b) {
return (n - a) * (n - b) <= 0
};
如果我在app.js中执行console.log(isBetween(20,1,40),它会正常工作。但是,我无法在刀片模板中执行;控制台日志说它没有定义。例如:
<script type="text/javascript">
jQuery(document).ready(function($) {
console.log(isBetween(20, 1, 40));
});
</script>
jQuery(文档).ready(函数($){
log(介于(20,1,40)之间);
});
如果您在带有npm run watch
的终端中运行mix,但仍遇到此问题,请再次检查以确保您的刀片模板中包含了混合资源:
<script src="{{ mix('js/app.js') }}"></script>
另外,请确保此
标记位于任何其他JS脚本之上。如果您在带有npm run watch
的终端中运行mix,并且仍然遇到此问题,请再次检查以确保您的刀片模板中包含了混合资产:
<script src="{{ mix('js/app.js') }}"></script>
另外,请确保此
标记位于任何其他JS脚本之上。我们在ES6/ES5中使用导入
来导入特定模块。但如果您想在app.JS之外使用它,则必须将其设置为全局变量,如下所示:
window.isBetween=isBetween;//将其添加到helpers.js中
我们在ES6/ES5中使用import
来导入特定模块。但如果您想在app.js之外使用它,则必须将其设置为全局变量,如下所示:
window.isBetween=isBetween;//在helpers.js中添加此项
谢谢您的评论,但是是的,我正在运行npm run watch,app.js高于我的其他脚本。我正在使用而不是mix(),但是我也试过了,没有成功。谢谢你的评论,但是是的,我正在运行npm run watch,app.js高于我的其他脚本。我正在使用而不是mix(),但我也尝试了,但没有成功。很好,这解决了我的问题,所以我接受它作为答案,但我很好奇这是否是Laravel应用程序的最佳实践?如果你有两个单独的脚本(app.js和其他脚本),那么使用全局变量是完全好的这是相互依赖的。您所要确保的是它们不会与其他JS脚本或库冲突。通常,编写良好的库封装了大多数变量,所以我认为您不必担心这一点。但是如果您想变得非常谨慎,您可以这样命名它:window.myAppName={};window.myAppName.isBetween=isBetween
并在JQuery中使用myAppName.isBetween(…)
。这样,您的所有全局函数都可以共享您的应用程序名称空间。很好,这解决了我的问题,所以我接受它作为答案,但我很好奇这是否是Laravel应用程序的最佳实践?如果您有两个单独的脚本(app.js和其他脚本),那么使用全局变量是非常好的这是相互依赖的。您所要确保的是它们不会与其他JS脚本或库冲突。通常,编写良好的库封装了大多数变量,所以我认为您不必担心这一点。但是如果您想变得非常谨慎,您可以这样命名它:window.myAppName={};window.myAppName.isBetween=isBetween
并在JQuery中使用myAppName.isBetween(..)
。这样,所有全局函数都可以共享应用程序命名空间