首页 文章

使用Angular和Express分离问题的最佳做法是什么?

提问于
浏览
3

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

另见这些类似的SO帖子:
Why would one want to use Express instead of AngularJS?
Angular and Express routing

使用带有Angular指令/属性的纯HTML作为Express中的视图引擎,在单个布局模板中渲染页面部分的最佳实践是什么?

如何使用HTML / Angular作为视图引擎?在翡翠中,你会做像 block content 这样的事情 .

你使用Angular Router, ng-view 并使用指令吗?如果是这样,Express有什么意义?只是服务器?为什么不直接使用Connect?

附:如果你只是学习Express和Angular,那么我试图将语言抽象保持在最低限度 .

我想我的混淆源于Express和Angular在模板和路由方面的重叠,但Express主要关注服务器端和Angular,客户端 . 对于刚刚学习这些内容的人来说,当一切都如此开放时,很难知道如何实施 .

我正在寻找详细的, specific implementation code examples 在分离关注点时使用最佳实践 . 看到它并在上下文中解释它是我如何从别人那里学到最好的 .

4 回答

  • 0

    如果你想要类似玉石的块,请查看角度块:

    https://github.com/wmluke/angular-blocks

  • 1

    重要的是要理解Angular和YOUR_SERVER通常是无关紧要的 . 这是“我的文件去哪里”的问题 . 正如单页应用程序所暗示的那样,它是一条静态路由 . 我确信Connect会处理这个问题,但是应用程序的服务器部分可能比简单地提供静态页面更令人担忧 . 认证,业务逻辑,API路由和其他问题在某些时候出现,因此Express(及其生态系统)很有意义 .

    您的单页应用程序肯定会有自己的路由 . 这些与您的服务器路由无关,其中包括到Angular应用程序页面的静态路由,以及Angular应用程序将进行的API调用的任何路由 .

    重要的是要了解您正在编写两个不同且独立的应用程序,通过API进行连接 . 您的Node服务器提供静态HTML和JS这一事实在很大程度上是巧合 . 应该以隔离的,分离的方式考虑和开发Angular应用程序,以获得最佳结果 .

  • 1

    快速和角度服务完全不同的目的 .

    在大多数类似MEAN的stacs情况下(例如只是表达角度),express表示服务器PLUS API provider .

    你使用app.get('/')和任何 server side 模板如jade(只是为了拥有更清晰的html文件...),然后使用app.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提供给其他人,或者在其上构建不同的服务 .

  • 1

    正确的是,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/

相关问题