JavaScript重构(二):JS的动态加载

重构Javascript代码示例(重构前后对比) 回顾头来看看那些Javascript脚本,有写得不太理想,过于复杂。现抽取出来,重构它们,想学习javascript重构的朋友可以参考下啊,网本文可以帮助你的 立即下载

前一节留下了一个问题,如果JS分门别类也清晰了,那我现在需要在必要的情况下才加载某一模块的JS,这个怎么实现呢?

 

方法一,最简单也是最容易被接受的方法,通过后台代码来控制,还是少些复杂的JS吧,通过一个标签、一个分支判断,就可以做到,何乐而不为呢?

 

方法二,如果要使用纯JS来控制,那么看看这样如何:

$.ajax(){
    url:"xxx/play.js";
    ……
    success:function(res){
        eval(res.responseText);
    }
}

原理是很简单,不过有一个藏匿着的魔鬼:eval,js加载的生效就靠它了,那么执行的上下文就在它的里面,这就会带来一些潜在的问题,而且,调试也变得困难。

 

方法三,通过添加<script>标签的方式来动态引入脚本:

原理相信大家也马上能领悟个大概了,需要的时候动态地往页面的<head>里面写一对<script>标签,让浏览器自己去取需要的js,这样的就解决了方法二里面的魔鬼eval的问题,是一个比较好的方法:

<script src="xxx/play.js" ... />

这里啰嗦一句,<script>标签中的src——本质上不就是对src所表示的地址发送一个get请求吗?这虽然看起来有点歪门邪道,却恰恰是一个跨域问题的解决办法!因为浏览器对<script>引用js页面可没有同域的安全限制(以前转载过过一篇跨域问题的讨论,见此)。

 

方法四,很多JS框架都提供了易于使用的JS动态加载的方法,比如JQuery的loadScript方法,这里不讨论了。

 

另外,如果使用上pushlet的方法,对一个js文件无止境地读取,能否实现这样的效果呢?仅作设想,希望有人与我讨论。

虚幻UE 增强输入-触发器 输入触发器(UInputTrigger): 使用经过修饰器修改的输入值,或者使用其他输入动作的输出值,来确定是否激活输入动作。 阅读详情

相关推荐

Android开发Intent详解

本文详解Android开发Intent。

qq_30725967的博客 2412

动态加载 JS 文件

动态加载JS文件是一种优化页面加载速度和提高用户体验的重要方式,但也需要注意文件路径、文件大小、兼容性和安全性等问题。开发者可以通过createElement()方法、appendChild()方法、XMLHttpRequest对象和eval()函数等方式来实现动态加载JS文件,具体实现方法可以根据需求和实际情况进行选择和调整。

tyxjolin的专栏 1万+

从图像处理到AI:手把手教你用Halcon DL Tool完成第一个缺陷检测项目

本文详细介绍了如何使用Halcon深度学习工具(DL Tool)完成金属表面缺陷检测项目。从环境准备、数据采集标注到模型训练与部署,手把手指导工程师快速构建AI质检系统,显著提升工业缺陷检测效率。特别针对金属反光等难点问题提供实用解决方案。

weixin_42531886的博客 289

require 动态加载_Javascript 5种动态库

要解决的问题复用其他人的工作减少 executable 的体积不共享源代码的前提下复用解决方案exectuable不会携带所有的算法实现。它会构建在executor提供的builtin api的基础上。同时也会利用第三方的 dynamic library 依赖 executor 的 dynamic linker 动态链接进来使用。这个动态链接其他人的工作的机制在很多种机器中都有提供。构成execu...

weixin_39640395的博客 1290

eDP/DP接口简介

目前,在视频传输协议以及接口领域,外部接口主要是DP与HDMI两分天下,当然之前出现过很多接口-VGA, DVI等等,最新平台基本以这两个为主;笔记本内部接口就基本上使用eDP((Embedded Display Port))作为标准接口来驱动液晶屏了。那么问题来了,eDP和DP,是完全兼容的么?eDP,DP,HDMI,这三种接口的显示器,可以插在同一个接口上使用么?这篇文章,就会从硬件和一部分协议的角度分析一下这三大协议。

weixin_50518899的博客 2万+

抖音直播小风车跳转企业微信全攻略:企业号申请+落地页配置详解

本文详细解析了抖音直播小风车跳转企业微信的全流程,包括企业号申请、小风车配置和落地页优化。通过实战指南,帮助企业高效实现私域流量沉淀,提升直播转化率,特别适合电商和营销从业者参考。

weixin_29289821的博客 612

js动态引入的四种方式

转自:http://blog.youkuaiyun.com/victormokai/article/details/8978747 index.html [html] view plaincopy >   html>    head>      meta content="text/html;charset=utf-8" http-equiv

Gabriel的专栏 4万+

帆软 finereport FCRA 考试 题库+答案,共收录561题,大部分有答案

帆软 finereport FCRA 考试 题库+答案,共收录561题,大部分有答案 入门基础 11.多选题 以下方式中属于FineReport中预览模式的有( ) 分页预览、填报预览、新填报预览、数据分析、移动端预览 16.判断题 FineReport报表工具必须购买激活码后才能使用。 错误,可以免费获取激活码。 29.单选题 FineReport是一款利用( )语言开发的报表工具。java 41.多选题 访问帮助文档的方式有哪些?设计器中社区菜单下-帮助文档;直接访问http://help.finere

qq_37485720的博客 2万+

PDF.js动态加载PDF文档的终极指南:从URL加载到跨域问题解决

本文深入探讨了使用PDF.js从URL动态加载PDF文档时遇到的跨域问题及其解决方案。通过分析PDF.js的加载机制,提供了修改源码以解除其自身来源检查的实战方法,并介绍了通过重构加载逻辑、利用Blob对象或构建后端代理服务来绕过浏览器CORS限制的多种策略。文章还详细阐述了如何与iframe配合构建动态加载体系,并给出了生产环境下的高级优化与安全考量,为开发者提供了一套完整的动态PDF加载指南。

ujm56789012的博客 248

OpenCASCADE(OCC)读取 STEP 模型文件并在MFC中显示

OpenCASCADE(OCC)读取 STEP 模型文件并在MFC中显示

weixin_61900468的博客 1万+

基于Simulink的永磁同步电机三闭环(位置/速度/电流)控制仿真

本文详细介绍了基于Simulink的永磁同步电机三闭环控制系统设计与实现方法。系统采用位置环、速度环、电流环的三层嵌套结构,通过坐标变换(Clark/Park)实现解耦控制,达到精密定位目的。文章包含完整的建模步骤:从主电路搭建、三环PID设计到坐标变换与SVPWM调制实现,并提供了核心控制算法的MATLAB代码。通过工业机械臂关节场景验证,系统在阶跃响应(稳态误差0.002°)、正弦跟踪(误差0.008°)和抗扰动性能(恢复时间0.05s)方面表现优异。最后还提出了前馈补偿、扰动观测器等优化方向。该方案适

xiaoheshang_123的博客 280

Nuxt.js Legacy Modules性能优化:减少打包体积的3个关键策略

Nuxt.js Legacy Modules作为Nuxt.js生态系统中的重要组成部分,为开发者提供了丰富的功能扩展。然而,随着项目规模的扩大,模块打包体积的增长成为了影响应用性能的关键因素。本文将深入探讨如何优化这些遗留模块,实现显著的打包体积缩减,从而提升应用加载速度和用户体验。💡 ## 为什么Nuxt.js Legacy Modules需要性能优化? 在现代化的Web开发中,性能优化已

gitblog_00359的博客 384

Unity零基础到入门 ☀️| 轻松学会 Unity界面布局和简单实例——入门级!(^_−)☆

入门级Unity知识,一起加油呀!

努力前行,总会成为自己心中的那道光 1万+

动态加载JavaScript文件

目录 配置 无脑方法! 逆袭之道! 一块蛋糕! 结论 源代码 JavaScript文件的动态加载是您必须拥有的非常有用的工具之一。它允许您通过将阻止脚本从加载过程中移出(通常称为“延迟加载”)来优化网页性能,并仅在用户需要时加载脚本(通常称为“按需加载”)。如果您明智地使用此工具,它将大大提高您的页面性能。 配置 让我们定义我们的示例模型,我们将从定义需要动态加载的远程文件开始。这是“remote.js”文件的定义: // this is going to be executed wh

寒冰屋的专栏 2394

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

颠覆JS逆向工程:javascript-deobfuscator重构代码还原技术突破

在数字化时代,JavaScript代码的复杂性呈现指数级增长,开发者与安全分析师正面临四重效率损耗困境。某权威开发效率研究院2024年报告显示,前端工程师每周约15小时耗费在以下场景: **代码理解障碍**:第三方SDK中充斥着`_0xa1b2c`格式的混淆变量,单文件变量名解码平均耗时达47分钟,直接导致需求开发周期延长30%。安全分析师处理恶意脚本时,68%的时间用于追踪被代理函数层层包裹的

gitblog_00359的博客 698

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

JavaScript重构(汇总帖)

前一阵集中一段时间做了JavaScript的重构,留下了一点点脚印,在这里汇总一下。如果您对这一专题感兴趣,或者希望补充一些内容,欢迎留言,我会在后续更新进去。谢谢。   JavaScript重构(一):模块划分和命名空间 模块划分是JavaScript重构的原则之一,也是

四火专栏 2631

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

开源项目推荐:libgif-js —— JavaScript 动态 GIF 处理库

**libgif-js** 是一个由 优快云 公司开发的InsCode AI大模型提及的知名开源项目,基于JavaScript实现的GIF解析与播放器。这个项目源自于shachaf的[jsgif](https://github.com/shachaf/jsgif),旨在从原生的书签应用中提取出GIF处理逻辑,将其重构为可轻松嵌入其他项目的库。它的核心优势在于不仅提供基本的GIF播放能力,还支持创...

gitblog_01212的博客 1166

JavaScript 模块加载问题

模块是 JavaScript 中的一个独立功能单元,可以包含变量、函数、类等。模块化使得代码更易于组织和管理,同时避免全局变量污染。JavaScript 的模块化体系显著提升了代码的组织和复用性,但在实际开发中,模块加载可能面临路径问题、兼容性挑战、性能瓶颈等问题。通过理解 CommonJS 和 ESM 的差异,掌握工具链的配置与优化策略,开发者可以有效解决模块加载中的常见问题,构建高效、稳定的现代 Web 应用。

Flying_Fish_roe的博客 1415

重构java和js版,JavaScript重构深入剖析(1)

通常我们的团队中,开发人员在Java语言层面具备相当的技术素养,经验丰富,而且有许多成熟的、合理的规约,类型繁多的代码隐患检查工具,甚至在团队间还有计划内的评审和飞检。但是前端的代码不似后台,就像一个没人疼的孩子,不仅仅容易被低估、被轻视,导致质量低劣、可维护性差,技能上,更缺少优秀的前端开发人员。JavaScript是前台代码中重要组成部分,随着版本的延续,产品越做越大,JavaScript层面...

weixin_34476847的博客 152

动态加载或移除JS文件

目的: 各种原因导致JS失效,需要重新加载,本篇文章可以动态加载或移除JS文件 加载JS var head = $("head"); var script = $("&lt;script&gt;"); $(script).attr('type','text/javascript'); $(script).attr('src',ctx+'/views/wap/default/tradeDel...

蔡龙的技术交流站 1万+

技术揭秘:如何基于Vue.js与PJAX重构传统WordPress主题架构

Wing主题代表了WordPress主题开发的技术演进方向,通过彻底摒弃jQuery依赖、采用Vue.js组件化架构与PJAX无刷新导航技术,实现了从传统PHP模板渲染到现代化数据驱动SPA体验的完整转型。这款简洁流畅、数据驱动的响应式主题在架构层面解决了传统WordPress主题的性能瓶颈与用户体验问题,为开发者提供了一个高性能、可扩展的现代化主题解决方案。 ## 传统WordPress主题架

gitblog_00266的博客 856

PDF.js动态加载PDF的终极指南:从源码修改到iframe实战

本文详细解析了PDF.js动态加载PDF的完整方案,从源码修改到iframe集成,重点解决了跨域问题和动态URL加载的技术难点。通过源码级改造和iframe高级集成策略,开发者可以灵活实现PDF在线预览功能,适用于文档管理系统等多种场景。

v4w5x6的博客 336

Umi.js项目中Ant Design Icon动态加载终极优化指南

构建现代React应用时,图标资源的管理往往是性能优化的关键瓶颈。本文将从实战角度出发,深度解析Umi.js框架下Ant Design Icon的动态加载优化方案,帮助开发者实现40%以上的性能提升。 ## 问题诊断:图标资源为何成为性能瓶颈 在传统的Umi.js项目配置中,Ant Design Icon的全量引入模式会导致构建产物显著膨胀。一个典型的中型项目,仅图标资源就可能占据数百KB的体

gitblog_00066的博客 685
上一篇: JavaScript重构(一):模块划分和命名空间
下一篇: JavaScript重构(二):JS的动态加载
RayChase
博客等级 码龄20年 71粉丝 87原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值