【发布时间】:2019-06-16 02:15:24
【问题描述】:
我正在使用 GET 请求访问网址:http://localhost:5029/article/16
在节点内部,我正在检查article/16,如下所示:
req.url.split("article/")[1];
并尝试像这样使用handlebars 渲染组件:
res.render('header', {layout: 'header.component.html'});
我看到组件已渲染,但未加载 css 样式。
我的组件.ts:
@Component({
selector: 'app-header',
templateUrl: './header.component.html',
styleUrls: ['./header.component.scss']
})
export class HeaderComponent implements OnInit { }
组件html:
<div class="header">
<li class="menu-item">
<a [routerLinkActive]="['active']" routerLink="/home">Home</a>
</li>
<li class="menu-item">
<div class="dropdown">
<button type="button" class="btn dropdown-toggle" data-toggle="dropdown" [routerLinkActive]="['active']">Tutorials</button>
</div>
</li>
</div>
车把设置:
app.engine(
"hbs",
hbs({
extname: "html",
defaultView: "default",
layoutsDir: "../src/app/components/header/",
partialsDir: "../src/app/components/"
})
);
app.set("view engine", "hbs");
RiotJS 也实现了类似的要求:
https://riot.js.org/api/#-riotrendertagname-opts
// render "my-tag" to html
var mytag = require('my-tag')
riot.render(mytag, { foo: 'bar' })
【问题讨论】:
-
你什么时候需要在运行时编译这些?您可以查看角度通用项目。它应该阐明如何做到这一点。
-
@Rafael 在运行时或 AOT。我需要在发出 GET 请求时渲染它
-
您要求您的车把渲染器渲染一个 Angular 模板,这是不可能的。您需要使用 Angular Universal。或者让你的服务器返回整个模块,让 Angular 在运行时渲染它
-
@Milad 我并不是说车把应该渲染它。我只是我尝试过的一个例子。我正在寻找一种在运行时渲染角度组件的方法。我不确定是否可以使用角度通用,因为我只想渲染特定组件而不是整个应用程序
-
@kittu ,我明白了,也许你应该把你的组件分成不同的应用程序,让 Universal 来渲染它们。但是你的用例是什么?也许我们可以建议其他方式。你想在运行时渲染组件的唯一原因是为了 SEO,我猜
标签: javascript node.js angular express angular6