저는 전자 응용 프로그램을 가지고 있는데 여기에는 에이스 편집기를 사용하고 있습니다. 이전 게시물에서 말했듯이, 내 앱에서 파일을 읽었을 때 콘텐츠를 확인하고 번역 할 수있는 행을 표시합니다. 모든 것이 잘 작동합니다. 사용자가 텍스트를 번역 할 때 데이터베이스에 저장하므로 이전에 번역 된 일부 파일을 열면 "번역 된"텍스트를 확인하고이 행을 실제 번역 텍스트로 바꿉니다. 모든 것이 잘 작동합니다. 그러나 일부 파일은로드하는 데 너무 오래 걸립니다.에이스 편집기 최적화 기능을 어떻게 최적화합니까?
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;
}
아래의 코드는 자바 스크립트 객체 내에서 방법 :
이
는 대체 부분 코드이다. $ this (this (object scope))의 별칭입니다. 이 메소드는 orignal 텍스트에서 변환되고 대체 된 텍스트가있는 행을 가져옵니다. 전에 말했듯이, 지금까지는 모든 것이 잘 작동하지만 많은 시간이 걸립니다. ** 나는 다음 줄을 발견 한 그것을 테스트하는 것은 문제가있다 : ** 보시다시피$this.editorActual.session.replace(replaceRange,trasnlateStr);
,이 라인은 코드의 첫 번째 세그먼트에했지만 "댓글을 달았습니다." 이 줄에 주석을 달면 파일은 391 밀리 초 안에로드됩니다. 하지만 만약 내가 라인을 discomment, 파일로드 45000과 60000 밀리 초 사이 (더 수 있습니다, 시간은 파일 크기에 따라 다릅니다). 파일의 길이는 1000 ~ 1800입니다.
"$ this.editorActual"은 내 에이스 에디터 인스턴스입니다. 텍스트 만 바꾸는 방법으로 "session.replace"를 발견하고 논리적으로이 줄을 사용하지 않으면 내 응용 프로그램이 작동하지 않습니다. 그래서, 제가 알고 싶습니다 줄을 대체하는 또 다른 빠른 방법이 있습니까? 알고 싶습니다. 선을 대체하는 또 다른 빠른 방법이 있습니까?
안녕하세요, aswer 용 탱크. 생각해 보면, 나는 "hightlighting"을 선을 식별하는 도구로 사용했습니다. 당신은 에이스 편집기를 사용하여 텍스트 너비를 수정해야한다고하셨습니까? 또는 "세션"없이 그것을 사용하는 방법이 존재합니까? – jrodriguez
몇 개의 하이라이트 범위가 있으며 텍스트가 수정되었을 때 하이라이트 범위를 어떻게 업데이트합니까? 이 문제는 더 많은 정보가 필요하다면 많은 앵커를 추가하는 것과 관련 될 수 있습니다. –
하지만, 많은 텍스트가 될 수 있습니다. 그 대답은 올바른 방법이라고 생각하고, 나는 자신의 응용 프로그램 로직을 수정하고 모든 텍스트를 에이스 편집기에 삽입하기 전에 바꾼다. 이 방법은 내가 한 것보다 빠릅니다. 감사 – jrodriguez