如何在Angular中使用节点中的对象

时间:2018-01-29 14:48:15

标签: node.js angular express

我想在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'}
    }    
}

我想阻止在窗口上使用把手和设置全局变量。

1 个答案:

答案 0 :(得分:1)

初始数据如何从服务器传递到客户端的方式并不多。只要客户端应用程序被捆绑在一起并且无法使用动态加载的JS模块(SystemJS,本机等),服务器就可以将数据作为全局变量或通过cookie提供。

考虑到cookie具有局限性并需要在客户端进行反序列化数据的其他操作,全局变量是显而易见的选择。这就是它在现实世界的Angular应用程序中的完成方式。变量可以有特殊的'名称以避免名称冲突,但它应该在HTML响应中定义:

<script>
window.__APPDATA__ = { foobar: {name: 'hello'} };
</script>

也可以通过根组件属性提供数据。这也需要额外的行动。它应该被序列化和转义:

<app data="{&quot;foobar&quot;:{&quot;name&quot;:&quot;hello&quot;}}"></app>

可以使用Attribute检索它(根组件没有Input)并在组件类中反序列化。