首页 文章

AngularJS仅适用于单页面应用程序(SPA)吗?

提问于
浏览
196

我们正在寻找构建我们正在创建的应用程序前端的选项,并且正在尝试评估一个对我们有用的工具,并为我们提供最佳平台 .

这是一个Node.js项目 . 我们最初的计划是使用Express并沿着这条路走下去,但我们决定在开始这个阶段之前,最好回顾一下那里的情况 . 我们的应用程序有几个我们认为不适合单页模型的领域,因为它们从应用程序的角度来看是相关的,而不是从视图中看 .

我们已经看到了一些可以用来构建客户端的框架,如Backbone.jsMeteor等,还有AngularJS .

这可能是一个相当明显的问题,但是如果AngularJS纯粹用于单页面应用程序,或者它可以用于Express等多页面应用程序,我们似乎无法破译 .


UPDATE 17 July 2013 为了让人们保持在循环中,我将在整个过程中更新这个问题 . 我们现在要一起构建所有内容,我们将看到它的表现如何 . 我们已经联系了一些比我们更有资格使用AngularJS的人,并且提出了关于拆分共享上下文的大型应用程序的问题,但是在单个页面上工作可能太大 .

我们的共识是,我们可以提供多个静态页面并创建仅与这些页面一起使用的AngularJS应用程序,有效地创建SPA集合并使用标准链接将这些应用程序链接在一起 . 现在我们的用例非常具体,因为我们的解决方案有几个应用程序,正如我所说,我们将首先尝试单个代码库并从那里进行优化 .

UPDATE 18 June 2016 这个项目落在悬崖上,所以我们从来没有完成过多的工作 . 我们最近再次提起它,但不再使用角度而是使用React . 我们仍在使用上一次更新中概述的体系结构,其中我们使用快速和自包含应用程序,因此,例如,我们在快递中有一条 /chat 路线,用于提供我们的React聊天应用程序,我们有另一条路线 /projects 为项目提供服务应用程序等 . 我们有点看待它的方式是每个应用程序在其功能集方面是一个聚合根,它需要能够独立,因为它本身被视为一个应用程序 . 从技术上讲,所有信息都在那里,它只是基本的表达,以及你想要使用的任何客户端应用程序构建良好的风格 .

5 回答

  • 2

    我最初也和Angular一起奋斗了"how" . 然后有一天,我突然意识到:"It is STILL javascript" . 关于Angular(我最喜欢的一本以及书籍https://github.com/angular-app/angular-app)的来龙去脉中有很多例子 . 要记住的最重要的事情是加载js文件就像在任何其他项目中一样 . 您所要做的就是确保不同的页面引用正确的Angular对象(控制器,视图等)并且您已关闭并运行 . 我希望这是有道理的,但答案很简单,我忽略了它 .

  • 211

    我'd say Angular is overkill if you'只是想开发一个SPA . 当然,如果你是框架的新手并且只需要开发一个SPA,那么我会选择一些更简单的东西来获得自己的特权 . 我建议调查Vue.js或Aurelia.io .

    Vue.js 使用双向数据绑定,MVVM,可重用组件,简单快速的拾取,更少的代码编写等 . 它结合了Angular和React的一些最佳功能 .

    诚实地说,我并没有偷看,似乎是一个值得研究的替代方案,类似于上述内容 .

    链接:
    https://vuejs.org/
    http://aurelia.io/

  • 7

    一点也不 . 您可以使用Angular构建各种应用程序 . 客户端路由只是其中的一小部分 .

    您有一大堆功能,可以在客户端路由之外使您受益:

    • 双向绑定

    • 模板

    • 货币格式

    • 复数

    • 可重复使用的控件

    • RESTful api处理

    • AJAX处理

    • 模块化

    • 依赖注入

    认为所有这些“只能用于单页应用程序”真是太疯狂了 . 当然不是......就像说“Jquery仅适用于带动画的项目” .

    如果它适合您的项目,请使用它 .

  • 16

    也许我的经历对某人有用 . 我们逻辑地拆分我们的项目 . 我们使用一个SPA用于Feed,另一个用于处理 Map ,另一个用于编辑用户 Profiles 等 . 例如,我们有三个应用:Feed,用户和 Map . 我在分隔的网址中使用它,如下所示:

    https://host/feed/#/top/
    https://host/user/#/edit/1/
    https://host/map/favorites/#/add/
    

    这些应用程序中的每一个都在应用程序中的状态之间具有自己的本地路由映射 . 我认为这是一个很好的做法,因为每个应用程序只能使用它自己的上下文和它真正需要的加载依赖项 . 此外,它的实践非常适合调试和集成过程 .

    实际上,您可以非常轻松地混合使用SPA应用程序,例如,feed将是带有angularjs应用程序的url用户应用程序与reactjs和映射到backbone.js应用程序 .

    回答你的问题:

    Angular不仅适用于SPA,Angular对SPA应用程序起到了良好和快速的作用,但没有人愿意构建各种SPA应用程序的MPA应用程序 . 但是考虑一下你的url架构不要忘记你的应用程序的SEO可用性 .

    我也支持这个想法:

    项目和应用程序之间有什么区别?应用程序是执行某些操作的Web应用程序 - 例如,Weblog系统,公共记录数据库或简单的轮询应用程序 . 项目是特定网站的配置和应用程序的集合 . 项目可以包含多个应用程序 . 一个应用程序可以在多个项目中 .

  • -1

    如果您只需要几页客户端数据绑定,我将使用Knockout和Javascript命名空间 .

    淘汰赛很棒,尤其是如果您需要简单的向后兼容性并且具有相当直接的页面 . 如果您使用的是第三方组件,Knockout的自定义绑定非常简单易用 .

    Javascript命名空间允许您保持代码的独立性和可管理性 .

    var myCo = myCo || {};
    myCo.page = {
        init: function(){ ... },
        ...
    }
    

    在加载其他脚本后的脚本标记中

    <script>
        myCo.init();
    </script>
    

    关键是,您在需要时使用您想要的任何工具 . 需要数据绑定?淘汰赛(或任何你喜欢的) . 需要路由? sammy.js(或任何你喜欢的) .

    客户端代码可以像您想要的那样简单或复杂 . 我尝试将Angular集成到一个带有现有专有框架的非常复杂的站点中,这是一场噩梦 . 如果你刚开始新的话,Angular很棒,但它有一个学习曲线,可以锁定你一个非常紧凑的工作流程 . 如果你不遵循它,你的代码可以真正快速纠结 .

相关问题