Angularjs 使用Angular和Express分离关注点的最佳实践是什么?
我觉得Express'和任何平均堆栈教程都掩盖了这一点,所以我决定在这里提问 另请参见这些类似的SO帖子:Angularjs 使用Angular和Express分离关注点的最佳实践是什么?,angularjs,express,mean-stack,Angularjs,Express,Mean Stack,我觉得Express'和任何平均堆栈教程都掩盖了这一点,所以我决定在这里提问 另请参见这些类似的SO帖子: 使用带有角度指令/属性的纯HTML作为Express中的视图引擎,在单个布局模板中呈现有关路由的页面部分的最佳实践是什么 如何使用HTML/Angular作为视图引擎? 在Jade中,您可以执行类似于阻止内容的操作 您是否使用角度路由器、ng视图和使用指令? 如果是的话,快车有什么意义?只是服务器?为什么不直接使用Connect 另外,如果你想了解Jade或EJS,我只是在学习Expr
使用带有角度指令/属性的纯HTML作为Express中的视图引擎,在单个布局模板中呈现有关路由的页面部分的最佳实践是什么 如何使用HTML/Angular作为视图引擎? 在Jade中,您可以执行类似于
阻止内容的操作
您是否使用角度路由器、ng视图
和使用指令?
如果是的话,快车有什么意义?只是服务器?为什么不直接使用Connect
另外,如果你想了解Jade或EJS,我只是在学习Express和Angular,所以我会尽量减少语言抽象
我想我的困惑源于Express和Angular在模板和路由方面的重叠,但是Express关注的是服务器端和Angular客户端。对于刚刚学习这些的人来说,当一切都如此开放时,很难知道如何实施
我正在寻找详细的,特定的实现代码示例,在分离关注点时使用最佳实践。看到它并在上下文中解释它是我向他人学习的最好方式 如果您想要像玉一样的块,请查看棱角块:
重要的是要理解Angular和您的\u服务器通常是不相关的。这是一个“我的文件去哪里”的问题。正如单页应用程序所建议的,它是一个单一的静态路由。我相信Connect可以很好地处理这个问题,但是应用程序的服务器部分可能比简单地提供静态页面更令人担忧。身份验证、业务逻辑、API路由和其他关注点在某种程度上会出现,因此Express(及其生态系统)非常有意义
您的单页应用程序肯定有自己的路由。这些与您的服务器路由无关,其中包括到Angular应用程序页面的静态路由,以及Angular应用程序将进行的API调用的任何路由
重要的是要理解,您正在编写两个不同且独立的应用程序,通过API连接。节点服务器提供静态HTML和JS的事实在很大程度上是巧合。角度应用程序应以独立、解耦的方式进行考虑和开发,以获得最佳结果。正确,平均堆栈强调将大部分逻辑放在前端。您的express服务器将充当mule,根据您从前端发出的get和post请求保存、读取、验证和删除数据
我们的想法是将所有前端代码放在express应用程序的公用文件夹中
`app.use(express.static(__dirname + '/public'));`
然后,简单地创建一个路由,将索引文件呈现为这样
`app.get('/',function(req,res){
res.render('index')
})`
考虑到这一点,您可能想知道是否有一种解决方案可以为您生成一个api,以便您只需命名您的模型,其余的都是通过angularjs服务完成的。有。。只需说出你的模型、关系和限制。它将生成一个企业级api供您使用
有关如何完成路由以及如何为应用程序建模的完整工作示例,请查看本教程:Express和angular的用途完全不同
在大多数类似stacs的情况下(例如仅express angular),express充当服务器加API提供程序
您可以将app.get('/')与任何服务器端模板类似于jade(只是为了有更干净的html文件…),然后使用app.get('/partial/:name')以相同的模板语言处理所有部分
然后,您可以使用app.get('/api/anyapi1')、app.get('/api/anyapi2')为angular提供整个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);
您还可以在express端处理会话和授权,以及许多在客户端不应该或不能完成的事情
希望有帮助
编辑:简而言之:express是带有http服务器、其他服务和api的后端,angular是整个前端,它使用后端提供的东西
有了这样的分离,您甚至可以向其他人提供该后端api,或者在其上构建不同的服务。不需要太多的块。我更喜欢单页布局标记,基于路由动态加载部分。您可以使用Angular with routes和ng view来实现这一点,但Express似乎毫无意义。虽然有很多优点,但您能否更具体地提供实施指导?如果我只提供静态文件,包括Angular模板,Express的价值是什么?在路由、会话控制方面的灵活性,以及可以通过REST在所有平台上使用的数据访问。