我觉得快递和#39;任何MEAN堆栈教程都会掩盖这一点,所以我决定在这里问一下。
另见这些类似的SO帖子:
Why would one want to use Express instead of AngularJS?
Angular and Express routing
使用带有Angular指令/属性的纯HTML作为Express中的视图引擎,在单个布局模板中针对路径呈现页面部分的最佳做法是什么?
如何使用HTML / Angular作为视图引擎?
在Jade,您可以执行block content
之类的操作。
您是否使用Angular Router ng-view
并使用指令?
如果是这样,Express的重点是什么?只是服务器?为什么不直接使用Connect?
P.S。如果您对Jade或EJS感到疑惑,我只是学习Express和Angular,所以我试图将语言抽象保持在最低限度。
我想我的困惑源于Express和Angular在模板和路由方面的重叠,但Express主要关注服务器端和Angular,客户端。对于刚刚学习这些内容的人来说,当一切都如此开放时,很难知道如何实施。
我正在寻找详细的,特定的实施代码示例,这些示例在分离关注点时使用最佳做法。看到它并在上下文中解释它是我如何从别人那里学到最好的。
答案 0 :(得分:1)
如果你想要类似玉的块,请查看角度块:
答案 1 :(得分:1)
了解Angular和YOUR_SERVER通常无关紧要很重要。这是"我的文件去哪里"。正如单页应用程序所暗示的那样,它是一条静态路由。我确信Connect会处理这个问题,但是应用程序的服务器部分可能比简单地提供静态页面更令人担忧。认证,业务逻辑,API路由和其他问题在某些时候出现,因此Express(及其生态系统)很有意义。
您的单页应用程序肯定会有自己的路线。它们与您的服务器路由无关,其中包括到Angular应用程序页面的静态路由,以及Angular应用程序将要进行的API调用的任何路由。
了解您正在编写两个不同且独立的应用程序,通过API连接,这一点非常重要。您的Node服务器提供静态HTML和JS这一事实在很大程度上是巧合。应该以孤立的,分离的方式考虑和开发Angular应用程序,以获得最佳结果。
答案 2 :(得分:1)
表达和角度服务完全不同。
在大多数类似MEAN的stacs情况下(例如只是快速角度),express表示服务器PLUS API提供程序。
您将app.get(' /')与任何服务器端模板化,如jade(只是为了拥有更清晰的html文件......),然后使用应用。 get(' / partial /:name')处理所有具有相同模板语言的部分。
然后,您使用app.get(' / api / anyapi1'),app.get(' / api / anyapi2')为角度提供整个api - 无论如何它将是 - 一些mongo或postgres处理,或只是你的静态json文件。
在new express4中您还可以创建专用的api路径:
var api = express.Router();
api.get('/somget', function(req, res) {
res.send('some json');
});
// init api route. all api routes will begin with /api
//(like above api.get will be at /api/somget)
app.use('/api', api);
您还可以处理快速方面的会话和授权,以及在客户端无法或无法完成的大量内容。
希望它有所帮助。
编辑:很快说:快递是http服务器,其他服务和api的后端,而角度是整个前端,消耗后端提供的。进行这样的分离您甚至可以将后端api提供给其他人,或者在其上构建不同的服务。
答案 3 :(得分:0)
正确,MEAN堆栈强调在前端创建大部分逻辑。您的快速服务器将充当骡子,根据您从前端发出的get和post请求来保存,读取,验证和删除数据。
我们的想法是将您的所有前端代码放在Express应用的公共文件夹中。
`app.use(express.static(__dirname + '/public'));`
然后简单地创建一个将索引文件呈现为
的路径 `app.get('/',function(req,res){
res.render('index')
})`
考虑到这一点,您可能想知道是否有一个可以为您生成API的解决方案,以便您只需命名您的模型,其余的通过angularjs服务完成。有http://loopback.io/只是命名您的模型,关系和限制。它会产生一个企业级api供你玩。
有关如何完成路由以及如何为应用建模的完整工作示例,请查看本教程:http://www.ibm.com/developerworks/library/wa-nodejs-polling-app/