Express.JS和Ember.JS一起工作?

时间:2016-11-08 11:23:00

标签: express ember.js

我通常使用 Express.JS (以及 PUG 作为我的观点)。

现在我偶然发现了 Ember.JS ,并开始喜欢它了。

连接的好方法吗?

我的意思是你需要以某种方式混合吗?

谢谢,伙计。

2 个答案:

答案 0 :(得分:3)

这是一个相当广泛的问题,可能(很可能)会产生自以为是的答案,但我会继续留在赛道上。

这些工具有不同的用途,但我看到3种情况可以一起使用。可能还有其他情况,但您的里程可能会有所不同。

Express用于通过视图提供Ember资产

这是您使用Express作为后端服务器的情况。如果您需要使用某些服务器逻辑来提供Ember应用程序,这是一种方法 例如,您可能希望通过Express完成身份验证部分(例如,不是Ember),让我们说限制访问Express应用程序的某些部分:资产,页面或您的Ember应用程序。

您最终会rendering your dynamic templates使用script标记来源您的静态Ember应用程序。

语言/服务器的任何其他组合在这里工作,选择Express只是一个品味问题。

您的Ember应用程序使用API​​

同样,我假设您使用JavaScript编写API,并且希望使用Express来提供它。这也是个人品味的问题。

您希望为Ember应用程序使用服务器端呈现

这是您使用Express的唯一情况,无论您是否想要它。

Ember应用程序的服务器端呈现由fastboot完成,ember-cli-fastbootember-cli-fastboot package.json一起使用,其dependency a {{1快递(见this introduction video文件)。

如果您不了解Fastboot,我建议您观看PopupMenu

结论

您不需要混合使用这些工具,但有多种方法可以将Ember与Express结合使用。
使用Express的唯一情况是使用ember-cli-fastboot。

答案 1 :(得分:3)

最合适的连接方法是将Express.js纯粹用作API服务器,将json数据传递给Ember.js应用程序。

Ember负责所有路由,模板等。

当用户首次访问您的网站时,您需要最初将Express发送到服务器Ember应用程序时,会遇到轻微的挑战。 我接近这个的方法是让url中的所有api端点都以api开头,例如

app.get('/api/posts', function(req, res) {
  ...
});

app.get('/api/posts/:id', function(req, res) {
  ...
});

app.post('/api/posts', function(req, res) {
  ...
});

最后,对于所有其他路线返回Ember应用程序

app.get('*', function(req, res) {
  res.sendFile(<..location of Ember index.js>)
});

Express将纯粹是一个API服务器,所以你不需要你的Pug模板。 这里有一个非常好的教程ProgramWithErik,它详细介绍了Express设置。