【发布时间】:2017-01-03 09:21:49
【问题描述】:
我有一个 webpack 项目(基于 https://github.com/vuejs/vue-webpack-example),它生成一个 index.html 文件和一个包含应用程序的 javascript 文件。
当我像这样包含 JavaScript 时,一切正常:
<script src="static/js/app.js"></script>
当我尝试将 static/js/app.js 的内容直接包含在脚本标记中时(因为我们需要以单个 .html 文件结尾),它不再起作用了。看起来javascript根本没有被执行:
<script>!function(e){function t(i){if(n[i])return...</script>
我将应用程序提取到 3 个文件(manifest.js、vendor.js 和 app.js)中,其中 vendor.js 包含我需要的来自 node_modules 的库。只要我不直接包含 vendor.js,它就可以工作。所以我可以内联 manifest.js 和 app.js 但不能内联 vendor.js。
任何想法为什么内联 js 不起作用但通过 url 包含的 js 起作用?直到现在我都认为 js 的行为完全一样,不管它是如何包含的。
【问题讨论】:
-
如果内联脚本与文件中的脚本相同,则其工作方式相同。您可以在帖子中包含脚本的最后一部分吗?喜欢
<script>!function(e){...}(whatever_you_are_passing_in)</script> -
是的,这就是我的预期。该文件超过 1mb,因为它是一个完整的 vue.js 应用程序,我不能在这里分享。我希望在处理这些文件时会有一点不同。也许有一些js函数的行为不同/直接包含时不起作用?
-
按照我在上面评论中的要求做...这将有助于理解该函数应该如何执行。我们不需要查看 {} 之间的内容
-
对不起,我误会了你。这是 vendor.js 文件的链接:gist.github.com/Sopamo/f2a591b4afaa91238516b82006e85845 由于其他文件工作正常,错误必须在此文件中的某个位置。 Edit3...:我想强调一下,vendor.js 文件是一个生成的文件,它只包含 npm 库。
-
我意识到发生了什么。 vendor.js 中有 ")。我显然无法改变这一点。有没有办法将脚本标签保留在脚本标签内?
标签: javascript webpack vue.js