问个问题, Vue 能否实现动态地以 html 的方式加载 js 文件?

2021-03-02 06:49:30 +08:00
 LeeReamond

如题,现在有一个需求是,在网上找到一段 js 文件实现的动画,想把这段动画贴到 404 页面中。

在普通的 html 页面里,使用<script src=""></script> 这种引用方式,单独引用这个绑定到某网址的 js 文件,就可以使这段动画生效。

但是 Vue 里不支持在单独组件里添加<script>标签,vue 的方式是你可以直接导入 js 代码到组件里。但是这样一来如果以后动画越加越多(假设都以这种方式追加),那么会导致页面的 js 和 css 代码无限增大,新用户每次加载网页时都要加载很长时间。

还有一种添加 script 标签的方式是修改 vue 的 index.html 文件,不过这样显然就全局都有了,不是单独到某页面时才会加载这个文件的。问一下大家,vue 有办法实现访问某路由时动态地从服务器请求一段 js 并执行吗?

===================

另外想到,似乎用 xmlrequest 的方式可以请求代码,并且用某种方式执行,但是这是否会产生安全问题?

1158 次点击
所在节点    问与答
6 条回复
devld
2021-03-02 07:04:33 +08:00
document.createElement('script')

然后动态 appendChind 到 body 中,组件销毁时,再 remove 掉
LeeReamond
2021-03-02 07:36:37 +08:00
@devld 感谢,测试成功了。
murmur
2021-03-02 08:03:07 +08:00
当然可以,webpack 的分卷动态加载就这么实现的,干嘛自己做,这都是标准实现,webpack2 以上就可以做了
learnshare
2021-03-02 09:17:02 +08:00
不知道大家在上手前端的时候,还会不会 HTML/CSS/JS/DOM 起步了

Vue 中动态地按原始方式加载 JS,不就是在 Vue 中合适的地方以 DOM 方式添加 /删除 script 元素么,如 #1
LeeReamond
2021-03-02 10:07:02 +08:00
@learnshare 显然不会了,多年前用 jquery 写过东西,最近有前端工作要做上来就是学 vue 了,两者生产力水平不能比
learnshare
2021-03-02 11:13:41 +08:00
@LeeReamond 但 Vue 只是个组件化的开发工具。不从基础学起的话,写什么都摸不着头脑吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/757488

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX