node.js 怎么设置缩进距离

JavaScript018

node.js 怎么设置缩进距离,第1张

2个空格的缩进

使用2个空格进行缩进,永远也不要使用混合的tab和空格作为缩进。

换行

使用Unix风格的换行,每行结尾以(\n)结束,永远不要使用Windows的换行符(\r\n)。

无拖尾空白

永远也不要在一行后面留空格,在提交之前,你要像每顿饭刷牙一样清理你的JS文件。否则,腐烂的气味会驱走贡献者或同事。

使用分号

根据科学研究,分号的使用是我们社会的核心价值。考虑一下反对派的观点 ,但是我们需要传统,不要滥用纠错机制(省略分号)。

注* 在JavaScript中前置逗号代码风格和省略分号一直存在争论,下同。

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

不过看楼主的意思是想自己通过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)