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 相关文章推荐
javascript setTimeout()传递函数参数(包括传递对象参数)
Apr 07 Javascript
jQuery之ajax删除详解
Feb 27 Javascript
jQuery实现动画效果circle实例
Aug 06 Javascript
jQuery实现响应鼠标背景变化的动态菜单效果代码
Aug 27 Javascript
jqTransform美化表单
Oct 10 Javascript
JS组件Bootstrap Table布局详解
May 27 Javascript
bootstrap弹出层的多种触发方式
May 10 Javascript
php简单数据库操作类的封装
Jun 08 Javascript
详解Vue 方法与事件处理器
Jun 20 Javascript
vue左右侧联动滚动的实现代码
Jun 06 Javascript
JS Object.preventExtensions(),Object.seal()与Object.freeze()用法实例分析
Aug 25 Javascript
Vue插件之滑动验证码用法详解
Apr 05 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
Codeigniter校验ip地址的方法
2015/03/21 PHP
初识PHP中的Swoole
2016/04/05 PHP
Yii框架弹出窗口组件CJuiDialog用法分析
2017/01/07 PHP
使用 laravel sms 构建短信验证码发送校验功能
2017/11/06 PHP
仿163填写邮件地址自动显示下拉(无优化)
2008/11/05 Javascript
node.js应用后台守护进程管理器Forever安装和使用实例
2014/06/01 Javascript
js+html5实现canvas绘制简单矩形的方法
2015/06/05 Javascript
AngularJS学习笔记之ng-options指令
2015/06/16 Javascript
jQuery实现的超酷苹果风格图标滑出菜单效果代码
2015/09/16 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
2016/01/25 Javascript
基于BootStrap Metronic开发框架经验小结【二】列表分页处理和插件JSTree的使用
2016/05/12 Javascript
angularjs实现简单的购物车功能
2017/09/21 Javascript
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
2018/04/08 Javascript
vue+vue-router转场动画的实例代码
2018/09/01 Javascript
用图片替换checkbox原始样式并实现同样的功能
2018/11/15 Javascript
微信小程序之swiper滑动面板用法示例
2018/12/04 Javascript
微信小程序scroll-view点击项自动居中效果的实现
2020/03/25 Javascript
vue实现的多页面项目如何优化打包的步骤详解
2020/07/19 Javascript
[04:42]5分钟带你了解什么是DOTA2(第一期)
2017/02/07 DOTA
[03:17]2016完美“圣”典风云人物:冷冷专访
2016/12/08 DOTA
[13:16]INFAMOUS vs VGJ T BO3
2018/06/07 DOTA
python解析发往本机的数据包示例 (解析数据包)
2014/01/16 Python
python基础教程之分支、循环简单用法
2016/06/16 Python
Python实现获取nginx服务器ip及流量统计信息功能示例
2018/05/18 Python
使用Django启动命令行及执行脚本的方法
2018/05/29 Python
python中多层嵌套列表的拆分方法
2018/07/02 Python
Python3.4学习笔记之常用操作符,条件分支和循环用法示例
2019/03/01 Python
树莓派+摄像头实现对移动物体的检测
2019/06/22 Python
Python求平面内点到直线距离的实现
2020/01/19 Python
PyCharm+Pipenv虚拟环境开发和依赖管理的教程详解
2020/04/16 Python
SmartBuyGlasses美国官网:太阳眼镜和眼镜
2017/08/20 全球购物
wedgwood加拿大官网:1759年成立的英国国宝级陶瓷餐具品牌
2018/07/17 全球购物
英国Radley包德国官网:Radley London德国
2019/11/18 全球购物
自我评价格式
2014/01/06 职场文书
团员年度个人总结
2015/02/26 职场文书
MySQL数据库 任意ip连接方法
2022/05/20 MySQL