2014-01-19 53 views
0

我的问题是如何在使用AngularJs时隐藏模板标签。我的意思是index.html中我有这样的:编译并隐藏页面源代码中的AngularJs模板

<!doctype html> 
<html lang="en" data-ng-app="myApp"> 
    <head data-ng-controller="CtrlHead"> 
     <meta charset="utf-8"> 
     <title>{{title}}</title> 
    </head> 
    <body>    
     <div data-ng-view></div> 
     <script type="text/javascript" src="js/js.min.js"></script> 
    </body> 
</html> 

当我看到在浏览器页面,然后点击右键>查看源文件,我可以看到所有的代码,看到的页面究竟怎么了建。

有什么方法可以编译AngularJs模板,并且只能在视图源中显示完成的html(添加{{title}}和实际视图,而不是data-ng-view)?

请注意我不是在谈论ngCloak,它可以防止{{tag}}在模板编译之前闪现。

谢谢。

+0

你为什么要这么做?它增加了什么价值? – iamyojimbo

+0

主要原因是客户要求它。他的推理是他只是想尽可能多地隐藏我们正在做的事情,而我们使用一些精心制作的模板,他不希望“他们”“窃取”:)顺便说一句,这是一段时间以前,我没有说服他担心它。 – RachelC

回答

2

这里没有简单的角度魔术。你将需要让你的服务器提供html快照。这不适合你为真实的人服务,因为不会涉及JavaScript。这只是在JavaScript运行后页面完成输出的转储。

您可以使用模拟浏览器像PhantomJS您的服务器上运行的“访问”你的时间表网页,捕获编译的HTML,将HTML保存到文件,然后将服务于那些文件SEO爬虫。

我做的是对我的情况有点更好。我建立了一个内容管理系统,所以对网站的所有改变都是通过它进行管理的。无论何时做出更改,该站点都会加载到管理面板本身(iframe)中,并从那里捕获输出并保存快照。

告诉爬虫,一个页面是基于Ajax和其他地方寻找一个快照,把这个文档的头:<meta name="fragment" content="!">告诉谷歌寻找www.example.comwww.example.com?_escaped_fragment_=。然后,您将设置您的服务器来为该请求提供主页的快照。 信息从谷歌的位置:https://developers.google.com/webmasters/ajax-crawling/docs/getting-started

还有这种服务,可以为你做这个:https://ajaxsnapshots.com