仅运行当前页面所需的javascript,最佳方法?

如何解决仅运行当前页面所需的javascript,最佳方法?

| 因此,我知道最好在整个网站上使用一个JavaScript文件来限制http请求。因此很显然,某些页面只需要一些javascript。仅运行当前页面所需的javascript的最佳方法是什么? 例如。
if(page==\'home\'){
  //run javascript require for the home page
}
也许这不是问题,并且如果在页面上未找到定位元素,那么javascript会正常失败吗?我只想了解此javascript结构的最佳做法。     

解决方法

将逻辑封装在函数中。然后只需通过
\"onload\"
或页面中的嵌入式函数调用在每个页面中调用所需的函数即可:
<script type=\"text/javascript\">
   yourFunctionForThisPage();
</script>
编辑:只是为了澄清:我的回答是假设单个.js文件的(暗示)约束。正如其他人指出的那样,尽管您保存了HTTP请求,但这并不一定是个好主意:浏览器仍然必须为每个页面解析文件中的所有代码(无论是否使用)。老实说,拥有一个包含所有内容的全球站点范围的js资源是非常不寻常的。从逻辑上将js拆分为各种文件(即库),可能是一个更好的主意。这些库可以是基于页面的-即特定页面的特定代码,也可以是基于算法/任务的代码,您可以将它们包含在任何需要它们的页面中。     ,这可行吗? 虽然最好每页只有一个Javascript文件来减少请求数量,但这可能不可行。尤其是您想要的方式。 如果您要询问如何将各个页面的各个脚本合并为一个脚本,然后仅运行与特定页面相关的那些部分,那么这是您不应该做的。与一个简短的集成脚本相比,拥有一个包含很多脚本(又考虑到可维护性)的巨大文件对您有什么好处?如果您将脚本数量保持在较低水平(即低于10个),则不必担心。 最大的缺点是浏览器将加载完整的脚本文件,这意味着将花费更多的时间来解析它们,并消耗大量的资源来使用它。我强烈建议您反对这种技术,即使它看起来很有趣... 其他可能性 问题是每页的Javascript文件数量很少。根据您所使用的服务器端技术,有一些工具可以将多个脚本文件组合为一个,因此每个页面仅会请求一个脚本文件,该脚本文件将组合该特定页面将使用的所有那些脚本。服务器上要完成此任务有些开销,但是只会有一个脚本请求。 你得到什么? 每个页面只有其需要的脚本 单个脚本文件较小,因此易于维护 每个请求的脚本大小很小 浏览器解析和资源消耗保持较低     ,在页面上知道您需要什么,并使用脚本加载器(如labjs)。 另外,请记住,您的特定案例可能与其他案例不同,因此您可能需要进行一些测试,以验证例如拥有5个小文件是否比1个大文件好(或更糟)。 确保唯一的方法是自己测试不同的选项,并提出合适的解决方案。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-