我想在Angular应用程序中使用在node中创建的对象。像,
在节点
中# server.js
const app = express();
app.use('/', () => {
const foo = {name: 'hello'};
app.send('index.html', {
foobar: foo,
});
});
在Angular中
# my.service.ts
export class MyService {
constructor(private request: Request) {
const { foobar } = this.request;
console.log(foobar) // {name: 'hello'}
}
}
我想阻止在窗口上使用把手和设置全局变量。
答案 0 :(得分:1)
初始数据如何从服务器传递到客户端的方式并不多。只要客户端应用程序被捆绑在一起并且无法使用动态加载的JS模块(SystemJS,本机等),服务器就可以将数据作为全局变量或通过cookie提供。
考虑到cookie具有局限性并需要在客户端进行反序列化数据的其他操作,全局变量是显而易见的选择。这就是它在现实世界的Angular应用程序中的完成方式。变量可以有特殊的'名称以避免名称冲突,但它应该在HTML响应中定义:
<script>
window.__APPDATA__ = { foobar: {name: 'hello'} };
</script>
也可以通过根组件属性提供数据。这也需要额外的行动。它应该被序列化和转义:
<app data="{"foobar":{"name":"hello"}}"></app>
可以使用Attribute
检索它(根组件没有Input
)并在组件类中反序列化。