Razor模板编辑高亮CodeMirror和格式化JS-Beautify


Razor模板编写使用的是Codemirror代码编辑器

代码格式化用js-beautify

HTML 全选
<link rel="stylesheet" href="~/lib/codemirror-5.63.3/codemirror.css" />
@*代码折叠*@
<link rel="stylesheet" href="~/lib/codemirror-5.63.3/addon/fold/foldgutter.css">

<script src="~/lib/codemirror-5.63.3/codemirror.js"></script>

@*代码折叠*@
<script src="~/lib/codemirror-5.63.3/addon/fold/foldcode.js"></script>
<script src="~/lib/codemirror-5.63.3/addon/fold/foldgutter.js"></script>
<script src="~/lib/codemirror-5.63.3/addon/fold/brace-fold.js"></script>
<script src="~/lib/codemirror-5.63.3/addon/fold/xml-fold.js"></script>
<script src="~/lib/codemirror-5.63.3/addon/fold/indent-fold.js"></script>
<script src="~/lib/codemirror-5.63.3/addon/fold/markdown-fold.js"></script>
<script src="~/lib/codemirror-5.63.3/addon/fold/comment-fold.js"></script>
<script src="~/lib/codemirror-5.63.3/addon/mode/multiplex.js"></script>

<script src="~/lib/codemirror-5.63.3/addon/formatting/formatting.js"></script>
@*xml*@
<script src="~/lib/codemirror-5.63.3/mode/xml/xml.js"></script>

@*源代码*@
<script src="~/lib/codemirror-5.63.3/mode/clike/clike.js"></script>
@*html*@
<script src="~/lib/codemirror-5.63.3/mode/htmlmixed/htmlmixed.js"></script>
@*asp.net*@
<script src="~/lib/codemirror-5.63.3/mode/htmlembedded/htmlembedded.js"></script>
@*razor*@
<script src="~/lib/codemirror-5.63.3/mode/razor/razor.js"></script>
@*javascript*@
<script src="~/lib/codemirror-5.63.3/mode/javascript/javascript.js"></script>
@*css*@
<script src="~/lib/codemirror-5.63.3/mode/css/css.js"></script>
@*当前行高亮*@
<script src="~/lib/codemirror-5.63.3/addon/selection/active-line.js"></script>
<script src="~/lib/codemirror-5.63.3/addon/edit/matchbrackets.js"></script>



@*代码格式化*@
<script src="~/lib/js-beautify-1.14.0/beautify.js"></script>
<script src="~/lib/js-beautify-1.14.0/beautify-css.js"></script>
<script src="~/lib/js-beautify-1.14.0/beautify-html.js"></script>

<script src="~/js/beautifyHelper.js"></script>

前端js代码

JavaScript 全选
<script>
    editorCode=null;
    $(document).ready(function(){
        editorCode = CodeMirror.fromTextArea(document.getElementById("Content"), {
                    lineNumbers: false,
                    mode: 'text/x-razor
                    //mode: 'htmlembedded',
                    //mode: 'htmlembedded',
                    styleActiveLine: true,
                    //matchBrackets: true
                    lineWrapping: true,
                    extraKeys: { "Ctrl-Q": function (cm) { cm.foldCode(cm.getCursor()); } },
                    foldGutter: true,
                    gutters: ["CodeMirror-linenumbers", "CodeMirror-foldgutter"]
                });

                // 格式化html
    $("#format_code").click(function () {
        // 获得CoeMirror组件代码内容
        var source = editorCode.getValue();
        // 使用js-beautify格式化代码
        var output = new beautifyHelper().beautify(source, 'html')
        // 更新美化的代码到组件,beautify不支持razor,直接用结果会存在一些缩进问题
        //editorPluginHtml.setValue(output);
        //return
        // 添加一些razor的配置,按行来
        var lines = output.split('\n')
        var addTabSize = 0;
        lines.forEach((value, index, arr) => {

            var txt = value.trim()
            if (txt == '}') {
                // 遇到razor 代码块结尾,随后的行减少一个缩进
                addTabSize -= 1;
            }

            if (addTabSize > 0) {
                var str = ''
                for (var i = 0; i < addTabSize; i++)
                    str += '  '
                // 代码增加一个razor缩进
                arr[index] = str + value;
            }

            if (txt == '@@{' || txt == '{') {
                // 如果当前行是@@{ 或者 {,随后的行增加一个缩进
                addTabSize += 1;
            }

        });
        editorCode.setValue(lines.join('\n'));

        return false;
    })

    })


</script>

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
管理员
评论列表

发表评论

评论内容
昵称:
关联文章

Razor模板编辑CodeMirror格式化JS-Beautify
CodeMirror配合js-beautify格式化代码后,光标恢复到原来位置
CodeMirror Razor支持
CodeMirror 格式化内容内容选择
YES-CMS内容管理系统 代码配置
WPF学习笔记(四):AvalonEdit 代码编辑控件专题
TinyMCE 代码 Prism.js 对 C# language-csharp 没做处理
web前端格式化缩进Razor代码,razor format
DTCMS:html模板格式化时间
代码编辑插件使用
【推荐】Razor文件编译 ASP.NET Core
CodeMirror行号内容重叠了
OneNote安装代码插件-NoteHightlight(2010-2013-2016)
.Net Core Razor 预编译,动态编译,混合编译
模板修改无法保存
WPF_15_格式化绑定的数据
YES-CMS 内容管理系统 TinyMCE编辑插件演示
.Net Core 5.0 Razor 预编译,动态编译,混合编译
Javascript JS日期格式化显示
JSON.stringify 输出格式化文本