我通常使用 Express.JS (以及 PUG 作为我的观点)。
现在我偶然发现了 Ember.JS ,并开始喜欢它了。
有连接的好方法吗?
我的意思是你需要以某种方式混合吗?
谢谢,伙计。
答案 0 :(得分:3)
这是一个相当广泛的问题,可能(很可能)会产生自以为是的答案,但我会继续留在赛道上。
这些工具有不同的用途,但我看到3种情况可以一起使用。可能还有其他情况,但您的里程可能会有所不同。
这是您使用Express作为后端服务器的情况。如果您需要使用某些服务器逻辑来提供Ember应用程序,这是一种方法 例如,您可能希望通过Express完成身份验证部分(例如,不是Ember),让我们说限制访问Express应用程序的某些部分:资产,页面或您的Ember应用程序。
您最终会rendering your dynamic templates使用script
标记来源您的静态Ember应用程序。
语言/服务器的任何其他组合在这里工作,选择Express只是一个品味问题。
同样,我假设您使用JavaScript编写API,并且希望使用Express来提供它。这也是个人品味的问题。
这是您使用Express的唯一情况,无论您是否想要它。
Ember应用程序的服务器端呈现由fastboot
完成,ember-cli-fastboot
与ember-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设置。