首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么HotTowel会包含微风?

为什么HotTowel会包含微风?
EN

Stack Overflow用户
提问于 2013-02-24 07:27:06
回答 2查看 4.3K关注 0票数 11

从表面上看,这听起来像是一个愚蠢的问题,但为什么Hot Towel SPA Template要包含Breeze呢?

我在过去的几天里一直在学习热毛巾和它的依赖项,据我所知,模板中没有任何东西真正使用Breeze。也许这种情况会随着未来的发布而改变?

当然,Breeze是一个很好的库。但是它必然使用CRUD方法,并要求您以特定的方式设计您的ApiControllers。(元数据、SaveChanges等) see here

它还引导您使用Entity Framework。虽然这更多的是一种软依赖,因为Breeze还显示了a sample without it,它仍然引导您使用修改后的存储库模式来实现类似的模式。

如果您正在使用NoSQL数据存储或CQRS模式而不是CRUD,那么Breeze将变得非常难以使用。有一些替代的数据访问库可以在这种风格中很好地工作,比如AmplifyJS

但是热毛巾的其他部分都很棒!我特别喜欢杜兰多。所以问题来了,如果模板实际上没有进行任何数据访问-为什么要包含任何数据访问组件呢?没有Breeze会更好,如果最终用户想要使用Breeze,或者Amplify,或者其他任何东西-那么就这样吧。热毛巾的其余部分将继续作为一个伟大的SPA实现而大放异彩。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-25 02:31:56

马特-问得好。既然我创建了它,我想我应该回答:)

当我构建模板时,我的重点是提供足够的代码来让人们使用正确的工具,并提供足够的入门代码来指导方向。我不想让任何人窃取代码。我不喜欢让你沿着一条路径走下去,让你删除大量文件和代码并改变方向的模板。这些都是样品。

样品都很好。事实上,样本可以是优秀的(就像其他模板一样,我觉得它们更像是样本)。这些服务还有另一个目的:展示你如何做事情。

回到热毛巾模板...if我包含了使用微风的代码,我很想在客户端添加一个datacontext.js和一个model.js。它们将包含数据访问代码和用于在客户端扩展模型的代码。然后,我很想添加一个控制器、一些服务器端模型、一个ORM和一个数据库。在那里,我想要在多个屏幕中使用数据,这会导致我使用Breeze进行更多的击倒和缓存。然后,我可能会尝试添加编辑,这将导致更改跟踪。很快我就有了一个成熟的应用程序。或者更保守地说,我又有了一个样本。虽然这些方法将提供更多关于如何将这些组合在一起的指导,但它们不会帮助您使用模板“入门”,在模板中,您只需开始构建和添加自己的代码。即使我停止了其中的一些功能,它仍然走在一条需要你改变我做它的方式的道路上。

就目前而言,HotTowel在最真实的意义上非常接近于模板。您创建了一个新项目,然后就可以添加自己的代码了。

你可能会争辩说Breeze不应该出现在那里,因为我没有在模板中使用它。我也不使用moment.js,BTW。然而,我认为它们都是优秀的库,如果没有它们,我不想构建一个基于CRUD的SPA。正如你所说,微风是灵活的,所以你不需要走一条特定的路。

理解Breeze价值的最好方法是构建一个有其功能但没有Breeze的应用程序。然后,您可以看到这需要多少代码,以及它有多复杂。举一个这样的例子,看看我在Pluralsight的中级SPA课程,我就是这样做的:http://jpapa.me/spaps

所以你问“为什么是微风?”因为我强烈推荐它用于构建SPA。

谢谢你的邀请,祝你好运!

票数 18
EN

Stack Overflow用户

发布于 2013-02-25 04:24:02

谢谢你提出这个问题。

约翰,作为HT的作者,提供了一个答案。作为Breeze项目的负责人,我倾向于同意他的观点:)

HotTowel为您生成了一个可供构建的基础。这不是建筑本身。

它是用于特定类型应用程序的基础,即基于一组特定的协作JavaScript和ASP.NET技术的CRUD应用程序。微风是一个贡献者。但不是唯一的一个。Knockout具有MVVM设计和双向数据绑定,特别适合CRUD应用程序的典型数据输入任务。

当然,还有其他类型的水疗中心。有一类重要的应用程序主要呈现信息,并接受很少的用户输入。这类应用程序不会从数据绑定中获得太多好处,而且编写这些应用程序的人通常会对数据绑定怀有敌意,尤其是KO。

我的观点是,HT针对的是特定类别的应用程序...一个碰巧是非常成功的,至少从持续的受欢迎程度来看是这样的。它为构建这些应用程序的人提供了产品。对于其他类型的应用来说,这可能不是一个正确的起点。

通向Breeze的捷径确实是通过Web API、EF和关系数据库来实现的。去掉这些,你可以在服务器上写更多的代码(在客户机上写更多的代码)。对你来说,这可能是一个完美的权衡。

Breeze的作者希望让这条道路变得更容易。我不认为BreezeJS会让它变得更难,。我不明白你说的"Breeze变得很难使用“。你试过了吗?

您的客户端可以以您选择的任何方式与任何HTTP资源通信。使用现有的Web API控制器非常容易(尽管使用Breeze Web API控制器更容易)。如果您愿意,也可以使用amplify.js (顺便说一句,您可以让Breeze使用amplify进行AJAX调用)。如果你不想查询和保存数据,你甚至不需要使用Breeze EntityManager

BreezeJS的其余部分可能对您仍然有价值。在您弄清楚如何检索和存储数据以及您更喜欢Entity-ChangeSet样式还是Command/Query样式之后,还有很多工作要做。

你必须找到这些问题的答案:

  • 如何将原始的JSON数据塑造为可绑定的对象?
  • 如何保留这些对象并在多个屏幕上共享它们,而不会重复往返到服务器?
  • 将地址绑定到StatesAndProvinces的组合框时,如何从一个对象导航到相关对象?
  • 如何跟踪更改?
  • 如何验证它们?
  • 当应用程序“墓碑”时,您将如何将部分或全部数据存储在本地存储中?

微风可以帮助你处理这些琐事,即使你不希望它为你查询和保存。

如果你的回答仍然是“我会自己做这些,谢谢你”……从您的HotTowel项目中删除Breeze非常简单:

Uninstall-Package breeze.webapi

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15046939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档