Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 使用Angular和Express分离关注点的最佳实践是什么?_Angularjs_Express_Mean Stack - Fatal编程技术网

Angularjs 使用Angular和Express分离关注点的最佳实践是什么?

Angularjs 使用Angular和Express分离关注点的最佳实践是什么?,angularjs,express,mean-stack,Angularjs,Express,Mean Stack,我觉得Express'和任何平均堆栈教程都掩盖了这一点,所以我决定在这里提问 另请参见这些类似的SO帖子: 使用带有角度指令/属性的纯HTML作为Express中的视图引擎,在单个布局模板中呈现有关路由的页面部分的最佳实践是什么 如何使用HTML/Angular作为视图引擎? 在Jade中,您可以执行类似于阻止内容的操作 您是否使用角度路由器、ng视图和使用指令? 如果是的话,快车有什么意义?只是服务器?为什么不直接使用Connect 另外,如果你想了解Jade或EJS,我只是在学习Expr

我觉得Express'和任何平均堆栈教程都掩盖了这一点,所以我决定在这里提问

另请参见这些类似的SO帖子:

使用带有角度指令/属性的纯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在所有平台上使用的数据访问。