Vue如何引入远程JS文件


Posted in Javascript onApril 20, 2017

问题

最近在使用 Vue 做东西,用到钉钉扫描登录的功能,这里需要引入远程的 js 文件,因为 Vue 的方式跟之前的不太一样,又不想把文件下载到本地应用,找了一下解决的方法,貌似都需要引入第三方的库,最后找到了解决方案,分享之。

思路

一开始的思路是在 Vue 加载完 Dom 之后(mounted),使用 JavaScript 脚本在 body 中插入远程的脚本文件。

后来发现了 Vue 的 createElement 方法,简单的封装一个组件解决问题。

解决方法

第一版代码(直接在操作 Dom )如下:

export default {
 mounted() {
  const s = document.createElement('script');
  s.type = 'text/javascript';
  s.src = 'https://g.alicdn.com/dingding/dinglogin/0.0.2/ddLogin.js';
  document.body.appendChild(s);
 },
}

使用 createElement 方法:

export default {
 components: {
  'dingtalk': {
   render(createElement) {
    return createElement(
     'script',
     {
      attrs: {
       type: 'text/javascript',
       src: 'https://g.alicdn.com/dingding/dinglogin/0.0.2/ddLogin.js',
      },
     },
    );
   },
  },
 },
}

// 使用 <dingtalk></dingtalk> 在页面中调用

终极方案

通过封装一个组件 remote-js 实现:

export default {
 components: {
  'remote-js': {
  render(createElement) {
   return createElement('script', { attrs: { type: 'text/javascript', src: this.src }});
  },
  props: {
   src: { type: String, required: true },
  },
 },
 },
}

使用方法:

<remote-js src="https://g.alicdn.com/dingding/dinglogin/0.0.2/ddLogin.js">
</remote-js>

因为刚开始学习 Vue 有什么问题欢迎大家指出,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery,Extjs,YUI,Prototype,Dojo 等JS框架的区别和应用场景简述
Apr 15 Javascript
JS无限树状列表实现代码
Jan 11 Javascript
JavaScript中判断函数是new还是()调用的区别说明
Apr 07 Javascript
修改好的jquery滚动字幕效果实现代码
Jun 22 Javascript
jquery插件如何使用 jQuery操作Cookie插件使用介绍
Dec 15 Javascript
使用 TypeScript 重新编写的 JavaScript 坦克大战游戏代码
Apr 07 Javascript
最简单的JavaScript图片轮播代码(两种方法)
Dec 18 Javascript
jquery设置表单元素为不可用的简单代码
Jul 04 Javascript
微信js-sdk界面操作接口用法示例
Oct 12 Javascript
JavaScript引用类型Array实例分析
Jul 24 Javascript
了解重排与重绘
May 29 Javascript
javascript实现滚轮轮播图片
Dec 13 Javascript
AngularJS改变元素显示状态
Apr 20 #Javascript
bootstrap 设置checkbox部分选中效果
Apr 20 #Javascript
详解Vue2.0之去掉组件click事件的native修饰
Apr 20 #Javascript
AngularJS实现根据不同条件显示不同控件
Apr 20 #Javascript
详解Vuejs2.0之异步跨域请求
Apr 20 #Javascript
bootstrap3 dialog 更强大、更灵活的模态框
Apr 20 #Javascript
angularjs过滤器--filter与ng-repeat配合有奇效
Apr 20 #Javascript
You might like
锁定年轻人的双倍活力 星巴克推出星倍醇即饮浓咖啡
2021/03/03 咖啡文化
php join函数应用
2011/05/04 PHP
PHP递归算法的详细示例分析
2013/02/19 PHP
JSON 教程 json入门学习笔记
2020/09/22 Javascript
js实现兼容IE6与IE7的DIV高度
2010/05/13 Javascript
js列举css中所有图标的实现代码
2011/07/04 Javascript
jquery插件制作 图片走廊 gallery
2012/08/17 Javascript
用jquery方法操作radio使其默认选项是否
2013/09/10 Javascript
json实现前后台的相互传值详解
2015/01/05 Javascript
jQuery实现简易的天天爱消除小游戏
2015/10/16 Javascript
AngularJS基础 ng-srcset 指令简单示例
2016/08/03 Javascript
Node连接mysql数据库方法介绍
2017/02/07 Javascript
vue 中directive功能的简单实现
2018/01/05 Javascript
element-ui使用导航栏跳转路由的用法详解
2018/08/22 Javascript
VueCli4项目配置反向代理proxy的方法步骤
2020/05/17 Javascript
python将xml xsl文件生成html文件存储示例讲解
2013/12/03 Python
Python下Fabric的简单部署方法
2015/07/14 Python
Python匹配中文的正则表达式
2016/05/11 Python
关于python的bottle框架跨域请求报错问题的处理方法
2017/03/19 Python
如何安装多版本python python2和python3共存以及pip共存
2018/09/18 Python
python下的opencv画矩形和文字注释的实现方法
2019/07/09 Python
简单了解django处理跨域请求最佳解决方案
2020/03/25 Python
使用keras实现densenet和Xception的模型融合
2020/05/23 Python
css3使网页、图片变成灰色兼容大多数浏览器
2014/07/02 HTML / CSS
html5弹跳球示例代码
2013/07/23 HTML / CSS
英国领先的餐饮折扣俱乐部:Gourmet Society
2020/07/26 全球购物
Java里面有没有全局变量?为什么?
2015/02/06 面试题
新娘父亲婚礼致辞
2014/01/16 职场文书
母亲节感恩寄语
2014/02/21 职场文书
《掌声》教学反思
2014/02/23 职场文书
2014年幼儿园德育工作总结
2014/12/17 职场文书
银行实习推荐信
2015/03/27 职场文书
pandas数值排序的实现实例
2021/07/25 Python
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸
vue+elementUI实现表格列的显示与隐藏
2022/04/13 Vue.js
python开发人人对战的五子棋小游戏
2022/05/02 Python