Angular模板使用非HTML语言

时间:2015-07-20 14:33:47

标签: angularjs

我正在使用快速服务器和角度客户端。我用jade写快递模板,代码很干净。

例如,在index.jade

html
  head
    title!= title
  body
    h1!= message

然后我可以将jade文件编译成html文件

app.get('/', function (req, res) {
  res.render('index', { title: 'Hey', message: 'Hello there!'});
});

现在我正在向客户端移动一些逻辑以防止页面加载。缺点是角度模板与普通的html代码一样冗长。文件很快变得混乱。

例如,在我的个人资料模板中,我有这个

        <div class="my-panel-body">
            <table class="my-table">

                <!--email-->
                <tr>
                    <th>Email</th>
                    <td>{{entity.email}}</td>
                </tr>

                <!--gender-->
                <tr>
                    <th>Gender</th>
                    <td>{{entity.meta.gender}}</td>
                </tr>

                <!--dob-->
                <tr>
                    <th>Date of Birth</th>
                    <td>{{entity.meta.dob}}</td>
                </tr>

                <!--country-->
                <tr>
                    <th>Country</th>
                    <td>{{entity.meta.country}}</td>
                </tr>

                <!--city-->
                <tr>
                    <th>City</th>
                    <td>{{entity.meta.city}}</td>
                </tr>

                <!--status-->
                <tr>
                    <th>Status</th>
                    <td>{{entity.meta.status}}</td>
                </tr>

如果我能写出像

这样的东西,那就太好了
div
    table
         head
            tr 
               th Date of Birth
               td {{entity.dob}} 
            tr 
               th Email
               td {{entity.email}} 

它不一定是玉。只要它干净简洁,我就可以使用任何语言

2 个答案:

答案 0 :(得分:1)

Jade在服务器上运行,Angular在客户端上运行。当Angular请求模板时,它会询问服务器,服务器将处理Jade模板并使用生成的HTML进行响应,然后是有效的Angular模板。

只要您没有使用任何类型的预处理器将Angular模板打包到单个文件中,那么在服务器上使用Jade为客户端生成Angular模板就可以正常工作。如果您使用的是预处理器,那么您需要先运行Jade(这也是可能的 - Jade不依赖于Express。)

不一定与此问题相关,但注意Angular与HTML无关也很有用。浏览器支持的任何基于标签的语言都适用于Angular - SVG,VRML,MathML等。

答案 1 :(得分:0)

所以你能做的就是按照你想要的方式编写它们,然后在角度加载之前创建一个名为使用$templateCache的模板的模块。您可以在解析后将它们放在那里:https://docs.angularjs.org/api/ng/service/$templateCache

如果您需要动态渲染,则必须修改$http.get.config的工作方式,并检查它是否为模板以及是否通过渲染器传递。< / p>