ESC之ESC.wsf可以实现javascript的代码压缩附使用方法第1/5页

yizhihongxing

ESC之ESC.wsf可以实现javascript的代码压缩附使用方法

什么是ESC和ESC.wsf?

ESC是一种单向加密机制,其全称为“Escape Sequence”,中文意思是“转义序列”。当一个字符在普通字符串中使用特定编码表示时,它就成为了转义字符,在JavaScript中常被用来表示特殊字符或者格式化字符串等。

而ESC.wsf则是一种通用的脚本语言,全称是“Windows Script File”,它可以运行VBScript或JScript等多种类型的脚本语言。

代码压缩原理

通过使用ESC的转义字符机制,将JavaScript代码中的空格、注释、换行、制表符等不必要的字符替换成较短的字符,从而缩小代码的体积。代码压缩在Web开发中常被用于减小文件大小以提高页面响应速度,同时也可以保护代码的版权。

使用方法

安装ESC.wsf

在Windows系统中,ESC.wsf可以直接使用,不需要额外安装。

打开CMD(命令行窗口)

在Windows操作系统中,按下“Win+R”键打开运行窗口,输入“cmd”并按下“Enter”键,即可进入命令行窗口。

执行代码压缩命令

在CMD中输入以下命令:

CScript.exe <js_file_name> > <min_file_name>

其中,要压缩的JavaScript文件名为“js_file_name”,压缩后的文件名为“min_file_name”。

例如,将“test.js”压缩为“test.min.js”文件,命令如下:

CScript.exe ESC.wsf test.js > test.min.js

查看压缩后代码效果

通过编辑器或浏览器调试工具,打开压缩后的JavaScript文件,可以看到原有代码中的空格、注释、换行、制表符等不必要的字符被替换成了较短的字符。

代码压缩示例

示例1

假设有如下未压缩的JavaScript代码:

function test() {
  var name = "hello";
  var age = 18;
  console.log(name + " " + age);
}
test();

使用ESC.wsf对其进行压缩,命令如下:

CScript.exe ESC.wsf test.js > test.min.js

压缩结果如下:

function test(){var name="hello";var age=18;console.log(name+" "+age)}test();

可以看到原有代码中每一行之间的空格和换行符都被压缩掉了,变成了一行紧凑的代码。

示例2

在一些JavaScript库中,为了方便调试和阅读,作者会在代码中加入大量注释,但是这些注释对于网页性能是有损耗的,因此需要进行压缩。

假设有如下未压缩的JavaScript库代码(jQuery):

/*!
 * jQuery JavaScript Library v3.6.0
 * https://jquery.com/
 *
 * Includes Sizzle.js
 * https://sizzlejs.com/
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license
 * https://jquery.org/license
 *
 * Date: 2021-03-02T17:11Z
 */
(function( global, factory ) {

    "use strict";

    if ( typeof module === "object" && typeof module.exports === "object" ) {
        // For CommonJS and CommonJS-like environments where a proper `window`
        // is present, execute the factory and get jQuery.
        // For environments that do not have a `window` with a `document`
        // (such as Node.js), expose a factory as module.exports.
        // This accentuates the need for the creation of a real `window`.
        // e.g. var jQuery = require("jquery")(window);
        // See ticket #14549 for more info.
        module.exports = global.document ?
            factory( global, true ) :
            function( w ) {
                if ( !w.document ) {
                    throw new Error( "jQuery requires a window with a document" );
                }
                return factory( w );
            };
    } else {
        factory( global );
    }

// Pass this if window is not defined yet
}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {

var arr = [];

var document = window.document;

var slice = arr.slice;

var concat = arr.concat;

var push = arr.push;

var indexOf = arr.indexOf;

var class2type = {};

...

使用ESC.wsf对其进行压缩,命令如下:

CScript.exe ESC.wsf jquery.js > jquery.min.js

压缩结果如下:

"use strict";if(typeof module==="object"&&typeof module.exports==="object"){module.exports=global.document?factory(global,!0):function(w){if(!w.document){throw new Error("jQuery requires a window with a document")}return factory(w)}}else{factory(global)}var arr=[];var document=window.document;var slice=arr.slice;var concat=arr.concat;var push=arr.push;var indexOf=arr.indexOf;var class2type={};...

可以看到原有代码中大量的注释被完全压缩掉了,变成了一行长长的代码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ESC之ESC.wsf可以实现javascript的代码压缩附使用方法第1/5页 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • 实现高并发秒杀的 7 种方式,写的太好了,建议收藏!!

    1.引言 高并发场景在现场的日常工作中很常见,特别是在互联网公司中,这篇文章就来通过秒杀商品来模拟高并发的场景。文章末尾会附上文章的所有代码、脚本和测试用例。 本文环境: SpringBoot 2.5.7 + MySQL 8.0 X + MybatisPlus + Swagger2.9.2 模拟工具: Jmeter 模拟场景: 减库存->创建订单-&g…

    Java 2023年5月11日
    00
  • Java实战之电影在线观看系统的实现

    Java实战之电影在线观看系统的实现 系统概述 本系统是一个电影在线观看平台,用户可以在线观看已经上传到该平台中的电影。系统分为前台和后台两个部分,前台是用户用于观看电影的界面,后台用于管理电影的上传和管理。 系统框架搭建 本系统采用MVC框架,使用Spring Boot进行快速搭建。在MVC框架中,Model用于数据存储和处理,View用于数据的展示和呈现…

    Java 2023年5月19日
    00
  • 深入理解Mybatis中的resultType和resultMap

    深入理解Mybatis中的resultType和resultMap Mybatis是一个流行的ORM框架,它的核心是将Java对象映射到数据库中的表格。在Mybatis中,resultType和resultMap是最重要的两个属性,用于将SQL查询结果映射为Java对象。 resultType resultType是一个简单的属性,它指定了SQL查询返回值的…

    Java 2023年5月20日
    00
  • 详解Spring Boot 事务的使用

    以下是“详解Spring Boot 事务的使用”的完整攻略。 1. 事务概述 事务是指在一系列操作中,要么全部执行成功,要么全部执行失败。如果其中任何一个操作失败,那么整个事务都会回滚,即撤销之前所有的操作。 2. Spring Boot 中的事务管理器 Spring Boot 默认采用注解方式管理事务,事务管理器是由 Spring 框架提供的,它可以帮助我…

    Java 2023年5月20日
    00
  • Java框架篇:Spring+SpringMVC+hibernate整合开发

    下面是关于“Java框架篇:Spring+SpringMVC+Hibernate整合开发”的完整攻略,包含两个示例说明。 Java框架篇:Spring+SpringMVC+Hibernate整合开发 在本文中,我们将介绍如何使用Spring、SpringMVC和Hibernate框架进行整合开发。 步骤1:添加依赖 首先,我们需要在pom.xml中添加Spr…

    Java 2023年5月17日
    00
  • JavaCV调用百度AI实现人脸检测方法详解

    JavaCV调用百度AI实现人脸检测方法详解 简介 本文将介绍如何使用JavaCV和百度AI平台实现人脸检测。JavaCV是一个基于OpenCV和FFmpeg库的Java接口。百度AI平台是一个提供机器视觉、语音识别、自然语言处理等人工智能服务的云端平台。通过将JavaCV和百度AI平台相结合,我们可以轻松实现人脸检测功能。 步骤 1. 注册百度AI平台账号…

    Java 2023年5月20日
    00
  • java字符串与格式化输出的深入分析

    Java字符串与格式化输出的深入分析 Java是一种面向对象、操作简便、具备强大功能的编程语言。字符串在Java中有着十分重要的地位。本攻略将深入分析Java中字符串和格式化输出的特性和用法。 Java字符串 什么是字符串 字符串是指一串由字符组成的数据类型。Java中的字符串类型是String。字符串对象一旦创建就不能再被修改,因此称它是不可变的。 字符串…

    Java 2023年5月26日
    00
  • Spring Boot高级教程之Spring Boot连接MySql数据库

    连接数据库是Web应用程序开发中的一个重要环节。在Spring Boot应用程序中,我们可以使用Spring Data JPA来连接MySQL数据库。以下是实现Spring Boot连接MySQL数据库的完整攻略: 添加依赖 在Spring Boot应用程序中,我们需要添加以下依赖来连接MySQL数据库: <dependency> <gro…

    Java 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部