在Vue.js应用程序中使用自定义JavaScript代码
我正在尝试在Vue.js路由器应用程序中插入JavaScript代码。我需要从应用服务的CMS加载数据。为了从CMS中获取数据,我必须使用CMS中的JavaScript库,它不是为Vue设计的,也不是像现代JS那样导出它的类/函数。因此,我通过一个脚本标记从index.html中导入JS库。这正是我们想要的 但是现在我必须使用这个CMS JavaScript库中的类。 在将其作为Vue路由器应用程序编写之前,我只是将Vue用作模板。 因此,我在window.onload事件处理程序中打包了一些代码。 我必须为CMS数据访问类创建一个实例。 但这会导致生成错误(使用vue cli生成)。从那以后 生成过程中没有可理解的错误消息 我必须使用试错法。即使是像在Vue.js应用程序中使用自定义JavaScript代码,javascript,vue.js,vue-router,Javascript,Vue.js,Vue Router,我正在尝试在Vue.js路由器应用程序中插入JavaScript代码。我需要从应用服务的CMS加载数据。为了从CMS中获取数据,我必须使用CMS中的JavaScript库,它不是为Vue设计的,也不是像现代JS那样导出它的类/函数。因此,我通过一个脚本标记从index.html中导入JS库。这正是我们想要的 但是现在我必须使用这个CMS JavaScript库中的类。 在将其作为Vue路由器应用程序编写之前,我只是将Vue用作模板。 因此,我在window.onload事件处理程序中打包了一些代
var a=1
这样的简单变量赋值似乎也不被允许。
console.log('something')可以工作。但似乎不允许任何其他操作(除了定义onload事件处理程序)
我已在App.vue(由vue cli创建)内的
标记中添加了此代码
更新
在测试了答案中的不同解决方案后,我意识到使用非实例变量似乎会导致构建错误
这会产生一个错误:
waitForPlayerData = true;
这项工作:
this.waitForPlayerData = true;
也不需要在那里加载window.onload,只需将其放在Vue之前或在初始化Vue之前导入一个JS文件,因为它将按顺序初始化。我不建议使用
window.load
来运行代码。在Vue.js中有更多本机方法可以实现这一点
如果您想在加载应用程序之前在应用程序的主组件中运行它,您应该做的是在创建主组件的生命周期挂钩之前将代码放入中
。。。
在创建()之前{
this.cmsDataLoader()
},
方法:{
cmsDataLoader(){
试一试{
//实例化用于CMS数据访问的obj类
cmsDataAccessObj=新的CMSAccessData();
waitForPlayerData=true;
}
捕获(e){
控制台错误(e);
}
}
}
...
这将在每次创建组件之前运行代码。如果要在创建组件后运行创建的生命周期挂钩,也可以使用生命周期挂钩
查看以下链接以了解有关的详细信息。在Vue.js应用程序中放置JavaScript的最佳方法是挂载
函数,该函数在加载组件时调用:
导出默认值{
名称:“组件名称”,
安装的(){
让数组=document.querySelectorAll('.list_item');
},
}
如果我在main.js中放了一些东西,构建就会失败。特别是如果我只是进行一些变量初始化。只有console.log语句在那里工作。如果我把代码放在onload事件处理程序内部,或者放在任何函数外部,都没有什么区别。我不确定让代码为每个组件运行是否好。我只需要在整个应用程序开始时运行它,并访问每个组件中的对象/实例。CMSAccessData设计用于初始化整个CMS通信。此外,真正的数据交换是由另一个CMS自定义事件处理程序完成的,数据被传递到该处理程序。它不会在每个组件中运行,只会在主App.vue中运行,我猜它是具有router视图的。我已将此测试代码添加到我的App.vue主组件:导出默认值{beforeCreate(){this.cmsDataLoader();},方法:{cmsDataLoader(){waitForPlayerData=true;}}}代码>它也给了我一个构建错误,关于在哪里添加代码,钩子似乎是一个很好的地方,也是Vue文档推荐的。你得到了什么构建错误?我认为您必须导入CMSAccessData
类才能实例化它。
this.waitForPlayerData = true;