Javascript 为什么这个JS函数不能正确导入到my blade.php?
我有一个JavaScript文件“submittedForms.js”,我在blade.php中引用了它 弹出刀片服务器抛出的以下错误 未捕获引用错误:未定义functionTest 在blade.php中,我这样调用functionTestJavascript 为什么这个JS函数不能正确导入到my blade.php?,javascript,php,html,laravel,import,Javascript,Php,Html,Laravel,Import,我有一个JavaScript文件“submittedForms.js”,我在blade.php中引用了它 弹出刀片服务器抛出的以下错误 未捕获引用错误:未定义functionTest 在blade.php中,我这样调用functionTest functionTest() 这里的问题是因为您正在使用module.export,它用于在js文件之间导入/需要文件,这可以大大扩展,但为了解决这个问题,我将保持简单 我可以想象,您当前在控制台中收到如下警告: 未捕获引用错误:未定义模块 除非你有 要
functionTest()
这里的问题是因为您正在使用module.export,它用于在js文件之间导入/需要文件,这可以大大扩展,但为了解决这个问题,我将保持简单 我可以想象,您当前在控制台中收到如下警告: 未捕获引用错误:未定义模块 除非你有 要使functionTest在浏览器中可用,可以将其定义为:
function functionTest() {
console.log('this works');
}
将其附加到父作用域,在本例中,父作用域将是窗口。也可以通过以下方式将其显式附加到窗口对象:
或
如果您想使用较新的ES模块进行导入/导出,这是可能的,但是,在编写本文时,支持不会那么好。
要实现此目的,应将module.exports更改为导出默认值:
然后,在刀片文件中,您可以将其导入属性为type=module的脚本标记中:
导入JS文件的正确方法应该如下所示。希望这能奏效
<script src="{{ asset('js/bundle/charts/submittedForms.js')}}"></script>
为什么在laravel代码中使用module.exports?第二个代码段来自JS文件submittedForms.JS您是否也将/需要submittedForms导入到另一个JS文件中?是否可以包含调用此函数的代码?module.exports必须是key:value对,如果您希望使用此导出创建另一个模块,您还需要在当前导出文件中导入该模块。最重要的是,这些功能需要用babel或webpack moduler编译才能在浏览器中运行。所以。。。如果我有一个子JS文件submittedForms.JS并定义了所有函数和变量,然后用module.exports将它们从子JS中导出,然后将其导入到一个父JS文件aggregator.JS中,会怎么样。然后我将aggregator.js链接到blade.php?这是关于MDN的文章,@thirdghostand我已经更新了我的答案,展示了如何使用es模块实现这一点。
function functionTest() {
console.log('this works');
}
window.functionTest = function () {
console.log('this works');
}
export default {
functionTest() {
console.log('this works');
},
submittedForms
};
<script type="module"> //notice the
import submittedForms from "/js/bundle/charts/submittedForms.js";
submittedForms.functionTest();
</script>
<script src="{{ asset('js/bundle/charts/submittedForms.js')}}"></script>