如何加载并执行远程vue模块

cdn使用vue时的一种vue远程组件加载简易实现方案 远程组件加载简易实现方案 vue很好用,组件开发大大提高了前端码农的工作效率,vue-cli结合webpack开发vue更是让前端程序员如虎添翼,但是有时候有不能使用webpack + cli(比如你碰上了一个NC的boss…),那就只能使用cdn全量引入vue了。这自然加大了组件化开发的难度,而且一旦组件数量过多,index.html的内容就会变得过于臃肿,加载速度也没有保证。 为了解决上述问题,利用vue组件机制,开发了这么个cdn下远程组件加载库。 特点 可以从服务器远程加载组件 可以异步加 阅读详情

为何需要远程加载vue组件?

正常使用vue开发单页web app的时候不会遇到这种需求。不过当开发的产品作为一个服务平台,并允许第三方开发者在平台上发布自己的应用;或者需要在应用中加入插件机制方便扩展,但是又不想使用[iframe嵌入]这种low到没朋友的方式实现的话,就需要考虑是不是可以将远程模块xiu的一下抓过来执行了~

如何远程加载?

使用vue开发的项目大多会用webpack配合进行编译,而webpack是在编译阶段对vue或者js文件进行静态依赖分析,不管三七二十一将这些文件啪啪啪~交给各种loader处理,然后打包生成一个让人一眼看过去就会懵比的js文件给浏览器运行。vue-loader这种编译完就无所事事的家伙,自然是不能指望在运行时还让他继续工作的。所以如果想要远程直接加载vue文件并运行的同学可以洗洗睡了。

那么将webpack打包之后的js远程取过来过来试试呢?事实证明webpack还是很给力,打包出来的js文件远程加载到平台环境中完全没有问题。不过要注意的是这个时候不能采用分片打包的方式,否则加载的入口文件会找不到依赖的 ^0^

那么下一个问题来了,如何让这个远道而来的js一家在我们平台中优雅的玩耍呢?此处有几种方式可以选择,不过目前感觉不错的一种方式是利用vue的动态组件:

<component :is="remoteFriend"></component>

根据动态组件的使用方法,似乎还要给这个可怜的模块起一个名字先:Vue.component(‘xxx’, xxx)。可是作为日理万机的平台,哪有时间给这么多流浪者天天想名字啊!而且万一起的名字不合适大家还怎么开心的玩耍了~
回想一下发布的时候我们交给平台的是一个js文件(其实只有一个远程的url地址),那么组件的名称是否可以让这个js事先自己取好并自己注册上去呢,比如加一个entry.js:

const name = 'laowang'
Vue.component(name, require('./laowang'));
return name;

现在webpack打包的对象变成了entry.js,这个js被平台远程获取并加载的时候就自然而然的注册了vue组件,并将自己起好的名字返回出来给动态组件使用!

但是似乎还有一个问题:

路由怎么处理?

要说明的是此方法在vue1.0的前提下实现

现在我们使用了动态组件加载远程模块,但是如果远程模块中包含子路由**&%¥#@,这又是一个悲伤的故事了!

如何将平台的路由和远程模块的路由无缝的集成到一起呢?目前看来只有从路由本身的机制着手了,直观的思考,只要看vue-router动态加子路由的接口比如addSubRouter就可以完工了。可以现实不比理想,翻遍接口文档居然都木有此接口,木有!

万幸在源码中发现了一个暴露的私有方法(有点诡异啊):_addRoute,经过一系列的构造参数,最终还是可以将子路由妥妥的加到平台的路由机制里。不幸的是现在vue-router升到2了~~ 还木有来得及研究。

还有?

大概的过程基本如上,还有要注意的话就是远程模块中的ajax请求需要通过绝对路径访问,而且服务器要做跨域设置。基于此限制,加载远程js的时候就可以直接用ajax,都允许跨域了么~~

最后,将以上方法封装了两下,一个是丢在远程的自动打包发布功能,一个是平台中的加载功能。
vue远程加载工具,详情可见README。

实现比较简陋,出了问题概不负责!

转载请注明出处http://www.qintianxiang.com/archives/257/

在vue里面使用eval_vue 远程加载sfc组件思路__Vue.js 问题在我们的 vue 项目中(特别是后台系统),总会出现一些需要多业务线共同开发同一个项目的场景,如果各业务团队向项目中提供一些公共业务组件,但是这些组件并不能和项目一起打包,因为项目中不能因为某个私有模块的频繁变更而重复构建发布。^_^不建议在生产环境使用,代码包含eval思路在这种场景下我们需要将公共的业务组件部署到服务端,由客户端请求并渲染组件。服务端解析.vue文件使用vue-templa... 阅读详情

相关推荐

vue-remote-import:通过URL导入远程VUE组件

介绍 该模块用于通过url加载远程VUE组件。 因此,您可以在路由器,全局或本地组件参考中使用它。 这个怎么运作 它将使用import-html-entry包加载html文件,因此html文件就像组件的最小描述。 然后它将解析它,以获得html模板,样式和脚本。 但是目前只有脚本是有用的。 然后它将执行所有脚本并获得执行结果。 因此,您应该在远程组件项目中返回组件对象。 您还可以返回多个组件。 例如: 在vue路由器中: import remoteImport from 'vue-remote-import' ... let router = new Router([ { path: '/login', name: 'login', component: () => remoteImport('http://domain/components/login/index.ht

【vue3】远程组件加载

添加remote目录,存放远程组件添加rollup.config.js,用来打包配置远程组件修改package.json。

飘逸者打瞌睡 5841

加载 vue 远程代码的组件实例详解

vue-cli 作为 Vue 官方推荐的项目构建脚手架,它提供了开发过程中常用的,热重载,构建,调试,单元测试,代码检测等功能。我们本次的异步远端组件将基于 vue-cli 开发

给我5分钟,保证教会你在vue3中动态加载远程组件

在一些特殊的场景中(比如低代码、减少小程序包体积、类似于APP的热更新),我们需要从服务端动态加载.vue文件,然后将动态加载的远程vue组件渲染到我们的项目中。今天这篇文章我将带你学会,在vue3中如何去动态加载远程组件。

qq_36348403的博客 3955

Vue如何引入远程JS文件

问题 最近在使用 Vue 做东西,用到钉钉扫描登录的功能,这里需要引入远程的 js 文件,因为 Vue 的方式跟之前的不太一样,又不想把文件下载到本地应用,找了一下解决的方法,貌似都需要引入第三方的库,最后找到了解决方案,分享之。 思路 一开始的思路是在 Vue 加载完 Dom 之后(mounted),使用 JavaScript 脚本在 body 中插入远程的脚本文件。 后来发现了 Vue 的 createElement 方法,简单的封装一个组件解决问题。 解决方法 第一版代码(直接在操作 Dom )如下: export default { mounted() { const s =

告别手动打点!用Cesium为你的大疆无人机快速生成区域巡查航线(保姆级教程)

本文详细介绍了如何利用Cesium平台为大疆无人机快速生成区域巡查航线的保姆级教程。通过自动化航线规划,告别传统手动打点的繁琐操作,实现高效、无死角的区域覆盖。文章涵盖环境搭建、实战案例及高级优化技巧,特别适合无人机操作员和巡检工作者提升工作效率。

weixin_30399821的博客 519

在 vue/cli 中使用 Module Federation

在 vue/cli 中使用 Module Federation webpack5 的新特性,分模块共同开发。多个独立的构建可以组成一个应用程序,这些独立的构建之间不应该存在依赖关系,因此可以单独开发和部署它们。这通常被称作微前端,但并不仅限于此。 我们分为本地模块、远程模块。 其中本地模块即为普通模块,是当前构建的一部分;而远程模块不属于当前构建,并在运行时从所谓的容器加载。 加载远程模块被认为是异步操作。当使用远程模块时,这些异步操作将被放置在远程模块和入口之间的下一个chunk的加载操作中。如果没有ch

前端精髓 2958

数据仓库ODS层详解- 功能、设计与最佳实践

数据仓库ODS层是大数据分析的基石,为企业决策提供可靠数据源。本文深入探讨ODS层设计原则、实施要点和最佳实践,涵盖金融、零售等行业应用。重点关注云环境下ODS层部署策略,以及实时数据集成、数据湖技术等创新趋势。文章还分析了数据体量增长、实时性需求等挑战,提供实用解决方案。whether助您构建高效、安全、可扩展的ODS层,为数字化转型奠定坚实基础。#数据仓库 #ODS层 #大数据分析 #云计算 #数据湖

一个8年大数据开发工程师的碎碎念 1万+

vue 远程加载js

其实vue加载远程js的教程很多,但是我比较笨呐。。。用不出来,每次都报方法/属性不存在的错误,来看一下典型的写法: const s = document.createElement('script'); s.type = 'text/javascript'; s.src = '<js地址>'; document.body.appendChild(s); 如: Vue...

qq_35562291的博客 1060

QT与Coin3D实现机器人的仿真

前言 Coin3D编程环境配置好后,开始下一步的机器人仿真任务。本文根据在研5轴机器人,完成三维模型生成与机器人的仿真。主要参考博主冯Jungle的博客,在此表示感谢。 ——2021.05.23 环境 Win10:VS2019、QT5.15.2、Coin3D、SolidWorks2016 机器人三维模型生成 目前广泛应用于因特网的VRML ( Virtual Reality Modeling Language,虚拟现实建模语言)为用户提供一种可参与的、并能对场景中对象主动做出反应的虚拟现实环境,现已成

焦露的博客 6907

verilog常用模块1——按键消抖模块详解

按键消抖模块key_filter 1. 原理介绍 如图,按键未按下时keys信号为高电平,按下则为低电平;通过检测keys信号电平,就可以判断按键状态。 但反作用弹簧会导致抖动现象,电平信号出现一段不确定波形 一般情况下,抖动的电平信号为1的持续时间不会超过20ms,只要通过对抖动波形的发生时长计时(计数),当为1的时长超过20ms,则可判定 进入了发生了按键按下/释放动作,并确定按键状态...

coin的博客 1万+

Vue 模块引入远程Js

需求 要在vue的一个模块中引入远程的js,并在js加载完成之后处理一些逻辑 参考 各种搜索之后发现并没有我想要的那种解决方案,然后找了几个博客资料。感谢博主们的分享 http://blog.youkuaiyun.com/sinat_17775997/article/details/55798611 最相似的一篇博客 render函数两篇博客 http://blog.youkuaiyun.com/baid

leg的博客 1万+

五段式S型算法笔记

又因为有 v-v0= 0.5jt通式: 所以有 vm-v0= 0.5jtm 所以有4vm-4v0= 2jtm。算法1: v=2vm-v0-0.5*jt+2jt*tm-2jtm*tm。加加速度j 自己设置 已知,vmax自己设置已知;所以有4vm-4v0= 2jtm带入算法1。

qq_36658033的博客 681

vue 引用远程js_vue动态加载远程js完美实践

其实vue加载远程js的教程很多,但是我比较笨呐。。。用不出来,每次都报方法/属性不存在的错误,来看一下典型的写法:const s = document.createElement('script');s.type = 'text/javascript';s.src = '';document.body.appendChild(s);如果这个能满足你们的需求就不需要看下面了。其实现在我想做到的是j...

weixin_31477251的博客 2939

PET,CT图像融合笔记

PET-CT怎样进行图像融合?图像融合实现CT与PET图像的融合 OpenCV实现(附实验结果)

chenran187906的博客 8411

STM32F103C8T6实战:从零搭建三相SPWM逆变器(附MATLAB仿真、PCB、源码)

本文详细介绍了如何使用STM32F103C8T6单片机从零搭建三相SPWM逆变器,涵盖硬件选型、PCB设计、SPWM算法实现及MATLAB仿真。项目提供完整的工程文件,包括源码、PCB设计和仿真模型,适合电子工程师和学生进行实践学习。通过本教程,读者可以掌握逆变器设计的核心技术和调试方法。

weixin_30458043的博客 453

Vue3动态加载远程组件实现方案

本文详细探讨了Vue3动态加载远程组件的实现方案与技术要点。主要内容包括:1)基础实现方案,通过defineAsyncComponent和自定义加载器实现组件动态加载;2)高级方案,包括Webpack ModuleFederation微前端集成和Vite动态导入;3)安全性增强,提出沙箱隔离和CSP策略;4)性能优化,设计智能缓存和预加载策略;5)实战应用,展示插件系统和微前端集成的实现。文章还提供了完善的错误处理、调试工具和最佳实践建议,为构建灵活、安全的前端应用架构提供了系统性的解决方案。

油墨香^-^的博客 1557

STM32电机PID速度控制

2.3 STM32电机PID速度控制 之前的文章,完成了直流减速电机的PWM控制、电机测速。本篇文章,将实现电机的速度闭环控制。 在公众号:小白学移动机器人,发送:速度PID,即可获得本篇文章的STM32工程文件以及相关资料。 2.3.1 解决的问题 解决带编码器直流电机的速度闭环问题。 2.3.2 PID理论 将偏差的比例、积分、微分,通过线性组合构成控制量,用控制量对被控对象进行控制,这样的控制器称为PID控制器。在连续空间中,我们通常探讨模拟PID的控制原理,如图所示: 我们这里用电机速度控制为例,

「小白学移动机器人」一个专注分享移动机器人相关知识的公众号! 6万+

vue异步组件使用及加载失败重新加载

在构建大型单页应用时,组件的按需加载和延迟加载对于性能优化至关重要。Vue.js 提供了一种实现这个需求的方式,那就是异步组件。异步组件允许我们将组件的加载延迟到实际需要的时候,而不是一开始就全部加载。这不仅可以减少首屏加载时间,还可以提高应用的响应速度。本文将介绍Vue2中异步组件的概念、使用方法以及一些技巧,重点介绍一下高阶异步组件及高阶异步组件加载失败后,如何实现重新加载。

Bekind2010的专栏 3608

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

vue 异步组件 远程组件

1.异步组件 new Vue({ // ... components: { 'my-component': () => import('./my-async-component') } }) 2.远程组件 ​new Vue({ // ... components: { 'my-component': () => import('htt...

笑笑的博客 2966

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

远程模块如何实现开发热更新

本文中热更新是指(模块热替换 - HMR - hot odule replacement) , 会在应用程序运行过程中,替换、添加或删除模块,而无需重新加载整个页面,显著加快开发速度单个应用的热更新一般开箱即用, 而远程模块的热更新需要根据多个项目的开发环境做一些适配处理, 还没有主流的成熟解决方案。

qq_30929191的博客 1249

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

在vue 中优雅的引入远程js,远程css

在vue里引用远程js以及样式的问题解决方案(支持多个js,css引入) Vue.component('remote-res', { data() { return { loaded: false }; }, render(...

qq_23668595的博客 2439

前端vue2项目引入第三方js文件或者远程js文件并执行相应方法

啥也不多说,直接上结论 新建一个目录和文件例如: ./tools/load.js //引入远程js,加载完成后执行相应方法 function loadJs(src) { return new Promise((resolve,reject)=>{ let script = document.createElement('script'); script.type =...

程序员老狼专注开发aigc或客服系统应用 2591
上一篇: 支持vue文件的autofix插件:vuefix
下一篇: 前端基于Rust实现的Wasm进行图片压缩的技术文档
凄凄迷人
博客等级 码龄21年 58粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值