合并压缩JavaScript,开发发布两不误

简介:

Web开发做优化的时候,需要将脚本进行压缩和合并。压缩好解决,可以找到一大堆工具在构建发布版本的时候压缩一下就好。合并就麻烦了,页面中引用的一大堆脚本文件,需要改为引用合并后的少数脚本文件,需要改动源代码,不能直接由构建工具来完成。


那么就只能从两个地方想办法了:



方法一


从源文件上想办法,将引用脚本那一块独立写到一个include文件inc_scripts中,同时针对发布版本写另一个include文件inc_scripts_r中,在构建的时候用inc_scripts_r替换掉inc_scripts即可。


比如,在ASP.NET中可以这样定义


inc_scripts.inc文件

1
2
3
4
5
6
< script  type = "text/javascript"  src = "js/jquery.js" ></ script >
< script  type = "text/javascript"  src = "js/common.js" ></ script >
< script  type = "text/javascript"  src = "js/date.js" ></ script >
< script  type = "text/javascript"  src = "js/number.js" ></ script >
< script  type = "text/javascript"  src = "js/format.js" ></ script >
< script  type = "text/javascript"  src = "js/cookie.js" ></ script >


inc_scripts_r.inc文件

1
< script  type = "text/javascript"  src = "js/combined.js" ></ script >


页面文件Demo.aspx

1
2
3
4
5
6
7
8
9
< html >
< head >...</ head >
< body >
<!-- 页面内容 -->
<%
     Response.WriteFile ("inc_scripts.inc")
%>
</ body >
</ html >


使用这种方法需要动态的服务器端语言支持。如果网站是由HTML作为视图页面的MVC模式来开发的,这个方法就不太适用。



方法二,推荐


直接从脚本文件想办法,一开始就生成合并后的文件combined.js给各页面引用,在combined.js再来加载需要合并进来的各个脚本。构建的时候,通过工具直接将脚本合并到comined.js中替换掉原来的内容即可。示例如下:


页面文件demo.html

1
2
3
4
5
6
7
< html >
< head >...</ head >
< body >
     <!-- 页面内容 -->
     < script  type = "text/javascript"  src = "js/combine.js" ></ script >
</ body >
</ html >


开发阶段的combined.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// 配置在发布时需要合并为当前文件的脚本
var  scripts = [
     "jquery.js" ,
     "common.js" ,
     "date.js" ,
     "number.js" ,
     "format.js" ,
     "cookie.js"
];
// 找到脚本目录路径
var  basepath = ( function  () {
     var  s = document.getElementsByTagName( "script" );
     var   s[s.length  - 1].getAttribute( "src" ).replace(/\/[^/]+$/,  "/" );
     var  href = window.location.href.replace(/\/[^/]+$/,  "/" );
     return  href + src;
})();
// 定义载入脚本的函数
var  loadScript = ( function (basepath) {
     var  template =  '<script type="text/javascript" src="{0}"></script>' ;
     return  function (src) {
         var   basepath  + src;
         document.writeln(template.replace(/\{0\}/, href));
     };
})(basepath);
// 遍历载入scripts数组中配置需要载入的脚本
( function  () {
     for  ( var  i = 0; i < scripts.length; i++) {
         loadScript(scripts[i]);
         console.log( "loaded "  + scripts[i]);
     }
})();


构建过程合并后的combined.js

1
2
3
4
5
6
// jquery.js的内容
// common.js的内容
// date.js的内容
// number.js的内容
// format.js的内容
// cookie.js的内容


本文转自边城__ 51CTO博客,原文链接:http://blog.51cto.com/jamesfancy/1212544,如需转载请自行联系原作者
相关文章
|
8天前
|
Web App开发 JavaScript 前端开发
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念,包括事件驱动、单线程模型和模块系统;探讨其安装配置、核心模块使用、实战应用如搭建 Web 服务器、文件操作及实时通信;分析项目结构与开发流程,讨论其优势与挑战,并通过案例展示 Node.js 在实际项目中的应用,旨在帮助开发者更好地掌握这一强大工具。
29 1
|
2月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
682 1
|
2月前
|
JavaScript 前端开发 安全
TypeScript的优势与实践:提升JavaScript开发效率
【10月更文挑战第8天】TypeScript的优势与实践:提升JavaScript开发效率
|
2月前
|
JavaScript 前端开发 IDE
深入理解TypeScript:提升JavaScript开发的利器
【10月更文挑战第8天】 深入理解TypeScript:提升JavaScript开发的利器
30 0
|
8天前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
23 2
|
14天前
|
JavaScript 前端开发 测试技术
探索现代JavaScript开发的最佳实践
本文探讨了现代JavaScript开发中的最佳实践,涵盖ES6+特性、现代框架使用、模块化与代码分割、测试驱动开发、代码质量与性能优化、异步编程、SPA与MPA架构选择、服务端渲染和静态站点生成等内容,旨在帮助开发者提升代码质量和开发效率。
|
18天前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端开发
【10月更文挑战第36天】本文将引导您探索Node.js的世界,通过实际案例揭示其背后的原理和实践方法。从基础的安装到高级的异步处理,我们将一起构建一个简单的后端服务,并讨论如何优化性能。无论您是新手还是有经验的开发者,这篇文章都将为您提供新的视角和深入的理解。
|
23天前
|
Web App开发 存储 JavaScript
深入浅出Node.js后端开发
【10月更文挑战第31天】本文将引导你进入Node.js的奇妙世界,探索其如何革新后端开发。通过浅显易懂的语言和实际代码示例,我们将一起学习Node.js的核心概念、搭建开发环境,以及实现一个简单但完整的Web应用。无论你是编程新手还是希望拓展技术的开发者,这篇文章都将为你打开一扇通往高效后端开发的大门。
|
19天前
|
运维 监控 JavaScript
鸿蒙next版开发:分析JS Crash(进程崩溃)
在HarmonyOS 5.0中,JS Crash指未处理的JavaScript异常导致应用意外退出。本文详细介绍如何分析JS Crash,包括异常捕获、日志分析和典型案例,帮助开发者定位问题、修复错误,提升应用稳定性。通过DevEco Studio收集日志,结合HiChecker工具,有效解决JS Crash问题。
38 4
|
24天前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端开发
【10月更文挑战第30天】本文将通过一个Node.js的简单示例,引导你进入Node.js的世界。我们将从基础概念讲起,然后一步步深入到代码实现,最后总结Node.js在后端开发中的优势和应用场景。无论你是前端开发者还是后端新手,这篇文章都将为你打开一扇了解Node.js的大门。
45 2