求把js.min的文件还原成带换行带缩进的C#代码

JavaScript013

求把js.min的文件还原成带换行带缩进的C#代码,第1张

格式化工具很多,如果只单纯想格式化一下,可以用工具

不过看楼主的意思是想自己通过C#实现格式化功能,我想了个笨办法,效率可能不是太高,仅供参考,大概思路是:

1、先将{、}、替换为{\r、}\r、\r,以实现换行

2、再根据{、}的位置插入相应空格实现缩进

写了个Demo,以4个字符长度为缩进距离,楼主可以试试,换行缩进基本满足,有些细节可能还需调整

/// <summary>

/// 格式化js代码

/// </summary>

/// <param name="js">原js代码</param>

/// <returns>格式化后的js代码</returns>

private string formatJavaScript(string js)

{

    string jsStr = js.Replace("{", "{\r").Replace("}", "}\r").Replace("", "\r")

    int indentIndex = 0

    for (int i = 0 i < jsStr.Length i++)

    {

        if (jsStr[i] == '\r' && jsStr[i - 1] == '{')

        {

            indentIndex++

            jsStr = jsStr.Insert(i + 1, getSpace(indentIndex))

            i = i + 4 * indentIndex + 1

        }

        else if (jsStr[i] == '\r' && jsStr[i - 1] == '}')

        {

            indentIndex--

            jsStr = jsStr.Remove(i - 5, 4)

            i = i - 4

        }

        if (jsStr[i] == '\r')

        {

            jsStr = jsStr.Insert(i + 1, getSpace(indentIndex))

            i = i + 4 * indentIndex + 1

        }

    }

    return jsStr

}

/// <summary>

/// 获得一定字符长度的空格字符串

/// </summary>

/// <param name="index">JS代码大括号层级</param>

/// <returns>空格字符串</returns>

private string getSpace(int index)

{

    string str = string.Empty

    for (int i = 0 i < index i++)

    {

        str += "    "

    }

    return str

}

//调用

string jsMin = "function test(){var text=1var text=2if(true){var text=3var text=4if(true){var text=5var text=6}}else{var text=7}}"

string jsNew = formatJavaScript(jsMin)

区别:

jquery.js是完整的未压缩的jQuery库,文件比较大,一般用于阅读学习源码或修改源码,一般不用于线上项目。

jquery.min.js是由完整版的jQuery库经过压缩得来,压缩后功能与未压缩的完全一样,只是将其中的空白字符、注释、空行等与逻辑无关的内容删除,并进行一些优化。这个版本一般用于网站引用使用,减小文件体积,降低网站流量,提升访问速度等。

延展阅读:

JQuery是继prototype之后又一个优秀的Javascript库。它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF1.5+, Safari 2.0+, Opera 9.0+),jQuery2.0及后续版本将不再支持IE6/7/8浏览器。jQuery使用户能更方便地处理HTML、events、实现动画效果,并且方便地为网站提供AJAX交互。

jQuery比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。jQuery能够使用户的html页面保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需要定义id即可。

jQuery是一个兼容多浏览器的javascript库,核心理念是write less,do more。

jQuery是免费、开源的,使用MIT许可协议。jQuery的语法设计可以使开发更加便捷,例如操作文档对象、选择DOM元素、制作动画效果、事件处理、使用Ajax以及其他功能。除此以外,jQuery提供API让开发者编写插件。其模块化的使用方式使开发者可以很轻松的开发出功能强大的静态或动态网页。

:首先下载jquery.qrcode插件

新建一个包括了jquery和jquery.qrcode的页面

调用qrcode插件

$('#qrcode').qrcode("http://www.baidu.com")

//任意字符串

浏览器中时如下结果,默认情况下qrcode生成的是canvas图片,这样效率高