2014-09-03 57 views
0

我想将一个.js文件传递给一个玉石模板以在ACE编辑器中渲染它。但对于某些文件(可能有正则表达式和其他转义字符),编辑器不会呈现,并且在浏览器中出现错误,我应该如何编码/转义文件以使其始终呈现正确?我试过encode/decodeURIcomponent ......我想这是Jade导致的问题。为jade模板编码javascript

或者我应该在页面呈现后尝试发送文件,而不是将它作为模板的一部分展开?

服务器:

editFile = fs.readFileSync(fileName, 'utf8'); //JavaScript file 
res.render('editor', { title: 'File Editor '+fileName, editFile: editFile }); 

玉模板:

#editor 
script(src='/ace/ace.js', type='text/javascript', charset='utf-8') 
script(type='text/javascript', charset='utf-8'). 
var fileContent = '!{editFile}'; 
var editor = ace.edit("editor"); //standard div 
editor.getSession().setMode("ace/mode/javascript"); 
editor.setValue(fileContent); 
+0

尝试'var fileContent =!{editFile};'代替。 – 2014-09-08 13:03:25

+0

好的我有它你需要var fileContent =!{JSON.stringify(editFile)}; – hartsr 2014-09-11 11:58:58

回答

0

因此,解决办法似乎是:

var fileContent = !{JSON.stringify(editFile)}; 

感谢所有。