Javascript 将关键字导入webpy服务器(python)中的ace编辑器荧光笔

Javascript 将关键字导入webpy服务器(python)中的ace编辑器荧光笔,javascript,python,syntax-highlighting,web.py,ace-editor,Javascript,Python,Syntax Highlighting,Web.py,Ace Editor,我正在使用Javascript Ace文本编辑器,需要将关键字加载到DynHighlightRules中,以突出显示导入的关键字。我有从静态关键字中工作的亮点 editor.getSession.setModeace/mode/highlightRules ,但我需要在呈现编辑器后导入新规则。我发现了一个很好的解决方案,它在Apache服务器上工作得很好,但在Web.py python服务器上却没有。我认为这是由于模板页面不在服务器的根级别。是否有人在Webpy中部署了Ace编辑器并解决了此问题

我正在使用Javascript Ace文本编辑器,需要将关键字加载到DynHighlightRules中,以突出显示导入的关键字。我有从静态关键字中工作的亮点

editor.getSession.setModeace/mode/highlightRules


,但我需要在呈现编辑器后导入新规则。我发现了一个很好的解决方案,它在Apache服务器上工作得很好,但在Web.py python服务器上却没有。我认为这是由于模板页面不在服务器的根级别。是否有人在Webpy中部署了Ace编辑器并解决了此问题?

好的,我找到了解决问题的方法。这是一种变通办法,不是我最初解决问题的方式。我的第一次尝试是在ace.define函数中嵌入一个ajax调用,但它无法正确处理该调用,而且缺少部分会导致错误。然后我尝试动态导入关键字,但在python环境中无法实现。最后,我想用ajax调用的成功来概括整个过程,现在它完全正确了。我猜当嵌入ace函数时,ajax事件和定义的其他部分之间的时间不同步

因此,简而言之,答案是将整个定义包装在ajax成功回调中

$.ajax({
            url: "/readUserCreatedKeywords",
            type: "POST",
            success: function(response){
                var keywordsString = "";
                var tmpArr = response.split(",");
                var tmpArrLen = tmpArr.length;
                var s = 0;
                var halfNum = 0;
                while (s < tmpArrLen) { // Clean array and save keywords and args into respective arrays
                    halfNum = parseInt(s/2);
                    tmpArr[s] = tmpArr[s].replace("u'", "").replace("[", "").replace("'", "").replace("(u", "").replace(")", "").replace("]", "").replace("(", "").replace(" ", "");

                    if (s % 2 == 0){ //Store even values in keywords
                       keywordsString += tmpArr[s] + "|";
                       //console.log("tmpArr[" + s + "]" + tmpArr[s]);
                    }
                    s++;
                }

                ace.define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) {
                ...............................................lots of code..........................................

                exports.Mode = Mode;
                });

}

})

如果某些东西在Apache服务器中工作,但在python服务器中不工作,那么它一定是由您设置服务器的方式引起的。试着告诉更多关于这一点,否则这个问题是不可能回答的。python服务器有一个基本python页面,它调用名为templates的子文件夹中的index.html页面。因此,位于模板中的任何内容都比正常情况下更深一个目录,因此所有相对路径都不匹配它应该位于的位置。我不是Web.py的粉丝,但我必须在这个项目中使用它。我在apache中找到并使用的示例代码在html页面中嵌入了调用,因此导致了相对路径问题。代码位于,您可以使用ace.config.setbasePath,some/path更改ace查找文件的位置