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


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>

 

版权声明:本文为优CMS内容管理系统发布内容,转载请附上原文出处连接
管理员
上一篇:优CMS-插件开发
下一篇:U-CMS系统官网上线了
评论列表

发表评论

评论内容
昵称:
关联文章

Razor模板编辑CodeMirror格式化JS-Beautify
编辑档案时编辑器代码插入插件报错
页面Head(页头)模板中实现不同页面设置激活不同的菜单(Active)
文章列表详情中添加站点导航
页面模板目录结构
模板参考:页头设计示例
优CMS-插件开发
按照档案类别定制不同的列表页
页面列表中添加《新增文章》快捷按钮
文章列表文章很少时页脚没有底部对齐
nofound.cshtml报错
优CMS,内容管理系统,快速建站,博文分享
html标签之文章列表Articles
U-CMS系统官网上线了
Title或Description包含html,未编码引起页面异常
Jquery Get,Post提交的正确姿势
升级版本后文章明细中相关文章部分找不到了
优CMS更新记录之文章详情页增加文章标签显示
html标签之提问详情 u-issue
U-CMS是如何做到百度同级代码在发布环境生效,VS调试环境不生效的?