作为服务器端 Web 框架用户(我使用 Django),我喜欢模板的组织方式。基本模板的页面标题、css、js、页眉和页脚被定义为块,可以在子模板中覆盖。
Angular 的做法是什么?
每个页面的内容当然是由ng-view提供的,除此之外,我也无能为力。例如,标题标签在视图之外,我无法动态更改它。
最好给我一个完整项目的示例代码,看看模板是如何组织的。大多数示例项目都很小,不需要在模板中继承。
Django 的模板非常好,但请记住 Angular 主要用于构建 SPA(单页应用程序),因此它在概念上有所不同。在典型的 Angular 项目中,您将让服务器端框架生成基本模板,然后将路由交给 Angular 处理其他所有内容,并且根据路由有条件地包含内容部分。
Django 和 Angular 模板之间的一个相似之处是 ng-include 指令,它可以让你吸收一些可重用的 html。但是没有什么类似于 Django 的 {{block}} 或 {{block super}} 系统。
你可以编写一个自定义指令来引入额外的 css/javascript 而不是使用 {{block extrahead}}。
对于动态标题标签,您需要确保将控制器元素设置在头元素上方,否则它将超出范围,因此无法访问。我们在基本模板中这样做:
<title data-ng-bind="title">Oursite</title>
然后在该 URL 的控制器中:
$rootScope.title = 'Dashboard | Oursite';
此线程中的其他建议方法。
看看受 Jade、Handlebars 和 Django 或更简单的ng-layout启发的angular-blocks。