Vue app.js 与主页上的其他 JavaScript 文件冲突(Laravel)

Posted

技术标签:

【中文标题】Vue app.js 与主页上的其他 JavaScript 文件冲突(Laravel)【英文标题】:Vue app.js colliding with other JavaScript files on homepage (Laravel) 【发布时间】:2020-09-30 02:01:57 【问题描述】:

我在现有项目中包含了 Vuejs,但现在它影响了我原来的主题 javascript 文件。 我的主页上没有 app.js,一切正常。但是当我包含它时,我的原始主题 js 文件上的所有 UI 效果和功能,包括滑块、画布、轮播和下拉菜单都停止工作。

如何阻止 Vue 与我的主题 js 发生冲突并导致其崩溃

【问题讨论】:

您是否为您的 Vue 组件使用范围样式?或者 Vue 组件是否使用了可能影响其他类名和/或全局样式的类名和/或全局样式? 不,我没有添加任何其他类名和样式。这是一个原创的工作主题。当我包含 时它就会中断 【参考方案1】:

关于 CSS 冲突...

您可以通过确保所有 css 都得到范围来解决。

而不是

<style>
/* global styles */
</style>

使用

<style scoped>
/* local styles */
</style>

Vue 将编译你的 css 以生成类似于 h1[data-v-f3f3eg9] 的内容,这将防止页面上的其他元素被你的 vue 代码格式化。但是,除非您向组件添加 css 重置,否则它不会阻止您的页面代码影响 vue 组件。

关于JS代码...

如果不看到碰撞是什么就很难判断。 AFAIK 这没有什么神奇的设置。

【讨论】:

我不知道这是否有帮助,但 JS 文件实际上是另一个编译包,就像 Vue app.js 一样 不知道是在哪个框架上写的,可能是 react 还是别的什么 应该能够从包含的依赖中判断,是从CDN加载react吗? 是的,既然你提到了它。这是【参考方案2】:

我找到了这个碰撞的解决方案

将您的app.js 放在脚本链接的顶部,例如:

<script src=" asset('js/app.js') "></script>

然后

<script> $.noConflict(); /script>

然后放入你的其他 JavaScript 就可以正常工作了。

【讨论】:

同时提及why。解释你建议的答案。

以上是关于Vue app.js 与主页上的其他 JavaScript 文件冲突(Laravel)的主要内容,如果未能解决你的问题,请参考以下文章

与master合并分支时app js出现合并冲突(laravel + vue)

如何在 vue js 和 laravel 中使用外部脚本

如何使用 Vue.js 类设置计时器

Vue.js 路由器视图没有组件?

Vue 组件未在其他刀片中显示

react-router v4.2.2 开关不工作;始终显示主要组件