如何优化ace编辑器的替换功能
How Optimize ace editor replace function?
我有一个电子应用程序,在那里我使用ace编辑器。正如我在之前的帖子中所说,在我的应用程序中,我读取文件,检查内容并标记可以翻译的行。一切正常。当用户翻译文本时,我将其保存在数据库中,这样,如果用户打开以前翻译过的文件,我将检查"翻译"文本并将这些行替换为实际的翻译文本。一切都很好。但是,有些文件加载时间太长。
这是替换段代码:
insertTranslateLines:function(trasnlate,linea,idMarker,inline,item){
// console.log($this.__time($this.start),"ak",linea);
var currentLine = $this.obtLinea(linea);
trasnlateStr = trasnlate.trasnlate;
if(inline || $this.lineaEnComillas(currentLine)){
trasnlateStr = trasnlate.trasnlate.replace(/^'s's*/, '').replace(/'s's*$/, '');
if(!inline){
var endReemplazo= currentLine.lastIndexOf("'"");
var startLine = currentLine.indexOf("'"")+1;
var partEnd = startLine + trasnlateStr.length;
}
else{
var texto = currentLine.match($this.expresiones.cadenaTraducir2);
var startLine = currentLine.indexOf(texto[item])+1;//se suma uno para eliminar la comilla
var partEnd = startLine + trasnlateStr.length;
var endReemplazo= startLine + texto[item].length-2;//se restan las comillas
// texto = currentLine.split($this.expresiones.cadenaTraducirSplit);
}
highLightRange = $this.setRange(linea,startLine,linea,partEnd);
replaceRange = $this.setRange(linea,startLine,linea,endReemplazo);
// $this.editorActual.session.replace(replaceRange,trasnlateStr);
}else{
replaceRange = $this.setRange(linea,0,linea,currentLine.length);
highLightRange = $this.setRange(linea,0,linea,trasnlateStr.length);
}
token = $this.editorActual.session.bgTokenizer.getTokens(linea,0);
// $this.editorActual.session.replace(replaceRange,trasnlateStr);
if(typeof highLightRange!='undefined'){
$this
.registerTrasnlate(idMarker,highLightRange);
if(token[0].type!='comment')
{
$this.setMarker(idMarker,highLightRange);
}
return highLightRange;
}else return false;
}
下面的代码,是一个方法从我的javascript对象。$this是(this (object scope))的别名。此方法获取已从原始文本翻译和替换的文本所在行。就像我之前说的,到目前为止,一切都很好,但这个过程需要很多时间。测试它,**我已经检测到下一行是问题:**
$this.editorActual.session.replace(replaceRange,trasnlateStr);
如您所见,这一行位于代码的第一段,但被"注释"了。如果我注释这一行,文件将在391毫秒内加载。但是如果取消注释,文件加载时间在45000到60000毫秒之间(可能更长,时间因文件大小而异)。文件的行数在1000到1800行之间。
" $。editorActual"是我的王牌编辑器实例。我只找到了"会话"。替换"作为替换文本的方法,在逻辑上没有这一行,我的应用程序无法工作。所以,我想知道是否有另一种最快的方法来更换线路?我想知道。还有其他最快的方法来替换线路吗?
replace速度很慢,因为它必须在撤消管理器中保存历史记录并创建事件。您可以在调用setValue或创建会话
相关文章:
- ExtJS网格单元格编辑器,防止焦点松动问题
- 可以't使用PHP使用Froala编辑器上传图像URL
- 如何在corona sdk中从CK编辑器中检索数据
- Eclipse编辑器中无法访问的代码
- 如何将拼写检查集成到密文编辑器
- 一个页面上有多个Ace编辑器,没有预先设置元素
- ACE编辑器正在删除模块,因为define是't一根绳子
- 如何从DOM中删除Aloha编辑器
- 用于用户内容的简单代码编辑器/文本格式化程序(在Rails中)
- 在plone 5中将自定义的灵活性内容类型插入到tinymce编辑器中
- 如何在tinymce编辑器中将点击事件绑定到html标签
- 扩展 ACE 编辑器,如何导入自定义文件
- 替换富文本编辑器中的 HTML 标记
- ACE编辑器查找文本,选择行并替换文本
- 用Aviary/Creave SDK图像编辑器替换图像
- 文本替换在ACE编辑器
- 获取选定的文本,替换它,使用jQuery进行简单的编辑器
- 如何优化ace编辑器的替换功能
- 在TinyMCE中保存替换变量,但在可视化编辑器中显示替换的内容
- 编辑器替换字如何添加更多