2012-04-21 53 views
10

目前我正在使用Handlebars(JS模板引擎)进行项目工作,并使用eclipse进行开发。 问题是,eclipse没有为我的Handlebars-Templates提供语法高亮显示。我的模板被包含在标签中。语法突出显示按预期工作。<script type =“tmpl_handlebars”>对于HTML文件的Eclipse语法高亮显示>

截图:

http://i.stack.imgur.com/1tPyz.png

是否有可能,Eclipse还强调了这个代码(在最好的HTML语法着色)?

回答

5

如果使用的是PHP,您可以通过添加空PHP标签糊弄的Eclipse:

<scrip<?php ?>t type="tmpl_handlebars" id="tmpl_places"> 
    <article> 
     <h1> 
      ... 
     </h1> 
    </article> 
</script> 
+0

然后,只要暂时更改脚本标记的名称就行。 – nitind 2012-06-21 20:27:28

2

你将不得不找到一个插件,它支持模板引擎。 Eclipse提供的HTML编辑器使用类型/语言属性的值来查找提供语法着色,内容辅助等的类。这种可能性虽然存在,但它只是提供了JavaScript。

2

如果你准备好写一点javascript,你可以这样做。我不知道你使用的框架,所以我会假设你有jQuery,但是如果你不想使用jQuery,你可以不使用jQuery。

首先,写出你所有的标记,作为模板的div与“tmpl_handlebars” CSS类,而不是脚本:

<div class="tmpl_handlebars" id="tmpl_places"> 
    <article> 
     <h1>Hello, World!</h1> 
     <p>This is a template...</p> 
    </article> 
</div> 

然后,当你的页面加载,动态的脚本替换div标签标签,并将id和div标签的内容传输到脚本。 使用jQuery,你只需要在你的html头文件中添加这个小脚本。

$(function() { 
    $(".tmpl_handlebars").each(function() { 
     var $this = $(this); 
     var children = $this.children().detach(); 
     var id = $this.attr("id"); 
     $this.replaceWith(
      $('<script type="tmpl_handlebars"/>') 
       .attr("id", id) 
       .append(children); 
     ); 
    }); 
}); 

这可能工作开箱即用,但我不是胡子和车把的专家,我不知道什么时候他们处理DOM找到模板,所以如果你想成为完全安全,你应该做第三步:从头部的静态HTML中删除包含这些库的脚本标记,而在处理完div之后用javascript动态添加它们,这样当脚本到达时你的dom就准备好了。

在代码的最后});的div处理之前,添加以下代码行添加脚本:

$("head").append('<script type="text/javascript"' 
      + 'src="**LOCATION_OF_DYNAMICALLY_LOADED_FILE**"></script>'"); 
//etc... 
+1

其他编辑可能不会有同样的问题,所以扭曲代码似乎不公平。我正在寻找一个特定的日蚀解决方案。 – 2012-07-18 09:25:39

+0

@kinjal我明白,但如果你想知道,我认为它有问题的库,而不是Eclipse。当他们决定将模板放在“脚本”标签中时,他们会怎么想?......?从html的角度来看这很混乱,而且这甚至不是有效的html。您如何期望编辑器正确地着色? – 2012-07-18 23:19:25

2

类似@ Neparkiraj的答案。

如果你正在使用Django,你可以添加一个空标签(我相信)“诡计”Eclipse,只是认为该行只是“坏”HTML。后续行随后将与html语法高亮:

<scrip{{NONEXISTANTVAR}}t type="tmpl_handlebars" id="tmpl_places"> 
    <article> 
     ... 
    </article> 
</script> 

由于标签是空的,<script type="tmpl_handlebars" id="tmpl_places">将是完全在最终文件中呈现。需要注意的是,使用Django也很可能意味着该代码坐落在一个{% verbatim %}块,这样你就可以结合这个代码来获取:

<scrip{% verbatim %}t type="tmpl_handlebars" id="tmpl_places"> 
    <article> 
     ... 
    </article> 
</script> 
{% endverbatim %} 

所有这一切是一种丑陋,但导致这两个正确的HTML凸显Eclipse和在文档中正确渲染。

相关问题