ACE编辑器入门

外层页面点击编辑弹出ACE编辑器。以下是巧妙的动态设置编辑器的高度。

 layer.open({
                        type:2,
                        title:"<span class='edit-file-title'><i class='fa fa-folder-open text-yellow'></i>.../"+id+"</span>",
                        shadeClose:false,
                        shade:0.4,
                        offset:['55px'],
                        area:['70%','88%'],
                        content:'${una}/admin/theme/editor?path='+id,
                        resize:false,
                        anim:1,
                        maxmin:true,
                        move:false,
                        success:function(layero,index){
                            var iframeWindow = window[layero.find('iframe')[0]['name']];
                            var height = layero.find('iframe')[0]['clientHeight'];
                            iframeWindow.setTextareaHeight(height-47);
                        },
                        full:function(layero){
                            var iframeWindow = window[layero.find('iframe')[0]['name']];
                            var height = layero.find('iframe')[0]['clientHeight'];
                            iframeWindow.setTextareaHeight(height-50);
                        },
                        restore:function(layero){
                            var iframeWindow = window[layero.find('iframe')[0]['name']];
                            var height = layero.find('iframe')[0]['clientHeight'];
                            iframeWindow.setTextareaHeight(height-50);
                        }
                    });

演示html

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8" />
	<title>ACE 文本编辑器示例</title>
	<script type="text/javascript" src="jquery.min.js"></script>
	<script type="text/javascript" src="ace.js"></script>
	<script type="text/javascript" src="ext-language_tools.js"></script>
</head>
<body>
	<!-- 实际项目中不会手动设置高度,这里为了演示,设置了固定高度 -->
	<div id="editor_area" style="height: 500px;"></div>
	<span class="pull-left text-danger"><small><i class="fa fa-exclamation-triangle"></i> 修改模板后视图将受影响,请谨慎操作。</small></span>
    <button class="btn btn-sm btn-primary" id="save-file"><i class="fa fa-save"></i> 保存</button>
    <button class="btn btn-sm btn-default" id="close"><i class="fa fa-times-circle-o"></i> 取消</button>
	<script type="text/javascript">
    var editor;
    $(function(){
        ace.require("ace/ext/language_tools");
        ace.require("ace/ext/spellcheck");
        ace.require("ace/ext/static_highlight");
        ace.require("ace/ext/searchbox");
        editor = ace.edit("editor_area");
        editor.setFontSize(16);
        editor.session.setUseWrapMode(true);
        editor.setHighlightActiveLine(true);
        editor.setTheme("ace/theme/dracula");
        editor.setOptions({
            enableBasicAutocompletion: true,
            enableSnippets: true,
            enableLiveAutocompletion: true
        });
        //editor.session.setMode("ace/mode/html");
        initLanguage();
        // 项目中使用ajax请求内容回显,在这里学习,写死
        var content = "<!DOCTYPE html><html><head>ACE入门</head><body><h1>hello huangbaokang</h1></body></html>";
        editor.setValue(content);
       /* $.ajax({
            type:'GET',
            url:'${una}/admin/theme/read',
            data:{path:"${path}"},
            success:function(content){
                editor.setValue(content);// 用于编辑回显,设置文本编辑器的内容
            },
            error:function(){
                layer.alert("加载文件失败",{title:'系统提示信息',icon:1});
            }
        });*/

        /*$("#save-file").on("click",function(){
           var content = editor.getValue();// 获取编辑器内容方法
           var path = "${path}";
           var load = layer.load(2,{shade:[0.4,'#f0f0f0f0']});
           // 调用ajax保存
           $.ajax({
               type:'POST',
               url:'${una}/admin/theme/write',
               cache:false,
               contentType:'application/x-www-form-urlencoded;charset=utf-8',
               data:{
                   path:path,
                   content:content
               },
               success:function(){
                   layer.close(load);
                   layer.alert("文件已保存成功",{title:'系统提示信息',icon:1});
               },
               error:function(){
                   layer.close(load);
                   layer.alert("服务器异常,请联系管理员",{title:'系统提示信息',icon:0});
               }
           });
        });
        $("#close").on("click",function(){
            var pid =parent.layer.getFrameIndex(window.name);
            parent.layer.close(pid);
        });*/
    });

 function setTextareaHeight(height){
 		alert("aaa");
        $("#editor_area").css("height",height+"px");
    }

    function initLanguage(){
        //var path = "${path}";
        //项目中根据传参,在这里学习,写死
        var path = "themes/default/hbk.html";
        var suffixIndex = path.lastIndexOf(".");
        var pathLength = path.length;
        var suffix = path.substring(suffixIndex,pathLength);
        if (suffix === ".js") {
            editor.session.setMode("ace/mode/javascript");
        }else if(suffix === ".css"){
            editor.session.setMode("ace/mode/css");
        }else if(suffix === ".html"){
            editor.session.setMode("ace/mode/html");
        }else if(suffix === ".json"){
            editor.session.setMode("ace/mode/json");
        }else if(suffix === ".yaml"){
            editor.session.setMode("ace/mode/yaml");
        }else if(suffix === ".java"){
            editor.session.setMode("ace/mode/java");
        }else if(suffix === ".md"){
            editor.session.setMode("ace/mode/markdown");
        }else if(suffix === ".ftl"){
            editor.session.setMode("ace/mode/ftl");
        }else{
            editor.session.setMode("ace/mode/text");
        }
    }
</script>
</body>
</html>

效果如下:
在这里插入图片描述

在Vue中使用Ace编辑器通常需要遵循以下步骤: 1. 安装Ace编辑器: 使用npm或yarn来安装Ace编辑器。在项目的根目录下打开命令行工具,运行以下命令之一: ```bash npm install ace-builds --save ``` 或者 ```bash yarn add ace-builds ``` 2. 引入Ace编辑器: 在Vue组件中引入Ace编辑器,并初始化它。可以在组件的`<script>`标签中进行如下操作: ```javascript import ace from 'ace-builds/src-noconflict/ace'; import 'ace-builds/src-noconflict/mode-javascript'; import 'ace-builds/src-noconflict/theme-monokai'; export default { data() { return { editor: null, }; }, mounted() { this.initEditor(); }, methods: { initEditor() { this.editor = ace.edit('editor'); this.editor.setTheme('ace/theme/monokai'); this.editor.session.setMode('ace/mode/javascript'); // 可以在这里设置更多配置项,比如是否显示行号等 // this.editor.setOption('showLineNumbers', true); // this.editor.setShowGutter(true); }, }, }; ``` 3. 创建编辑器容器: 在Vue组件的模板部分,创建一个容器用于放置Ace编辑器,并给这个容器设置一个ID,以便在JavaScript中引用它: ```html <template> <div id="editor" style="height: 500px; width: 100%;"></div> </template> ``` 4. 使用Vue的响应式数据: 如果需要编辑器的内容与Vue组件的某个数据属性双向绑定,可以使用`v-model`指令来实现: ```html <template> <div id="editor" v-model="codeContent" style="height: 500px; width: 100%;"></div> </template> <script> // ... export default { // ... data() { return { codeContent: '初始代码内容' }; }, // ... }; </script> ``` 确保在Vue项目中正确安装和配置了Ace编辑器后,就可以在Vue组件中使用它了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄宝康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值