问题标签 [hottowel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
690 浏览

c# - 如何在 MVC 中处理耗时的服务器端初始化?

我目前开始了一个小项目,体验 JS 和 HTML5 的世界。

几个月前我已经尝试过了,但我停止了,因为我没有足够的时间从头开始创建 MVC 单页应用程序。有太多的概念和模式,必须理解,如果我在日常工作中缺乏使用,我会后悔失去所有这些知识。使用它或失去它!

昨天我刚刚在 John Papa 的博客上发现了这篇文章,我认为这将是一个很好的开始。基本上,它是一个名为HotTowel的 MVC 模板,它实现了已经很不错的概念,如数据绑定、缩小等。我会在我目前需要的范围内体验代码,并会在需要时进一步体验它。

我想构建一个应用程序,用于从我现有的数据模型项目中获取数据。在我们的 Silverlight 应用程序中,我们通过预加载和初始化字典和其他属性以及调用异步 Init()方法(例如,下载包含自定义代码的 XML 文件并将它们放入字典)来引导它。MEF 用于摆脱不方便的依赖项。

据我了解,服务器端初始化必须Application_Start()在 Global.asax 文件中的方法中完成。我想知道如何在这种方法中等待异步调用?最佳做法是什么?我在客户端的查询在很大程度上依赖于这些类的初始化。有哪些选择?

我的想法如下:

  • Application_Start()触发并忘记异步初始化过程。如果我在初始化完成之前执行一个请求(我猜是在控制器上),我必须等待初始化过程的回调并在它到达时立即开始查询。这样做的好处是,初始化运行,而用户已经可以浏览应用程序。
  • 我会实现某种惰性初始化。一旦提出第一个请求,我就会处理初始化。不过,第一个请求可能需要很长时间。
  • 我会在Application_Start(). 到目前为止,我看到的主要缺点是浏览器窗口对用户来说似乎是冻结的。如果可以让用户跟踪当前的初始化状态(某种闪屏),我会对这个解决方案感到满意。

虽然我不知道他们中的任何一个人将如何具体工作,但如果你们中的任何人能给我一些关于如何以及从哪里开始的建议,我会很高兴。

0 投票
6 回答
6634 浏览

ember.js - emberjs 开头的“加载屏幕”

我不知道,如果你看过这个演示应用程序:http: //www.johnpapa.net/hottowel/但是一旦你启动它,你会在开始时看到一个非常漂亮的加载屏幕,就像你在任何更大的屏幕上一样桌面应用程序/游戏。

所以我自己没有机会正确地浏览代码,但我最近开始使用 Emberjs,我觉得为我正在构建的整个 SPA 加载所有 js 代码可能在秒区。

我现在的问题是,如何使用 emberjs 实现这样的加载屏幕?还是有更好的方法来解决这个问题?(我不认为 requirejs 会是一个解决方案,虽然我可能是错的)

0 投票
2 回答
1229 浏览

asp.net-mvc-4 - 无法使用 ASP.NET 热毛巾水疗模板的 ace 编辑器工作

我是 web 开发的新手,所以请怜悯 :) 我已经使用热毛巾模板 ( http://nuget.org/packages/HotTowel/ ) 创建了一个新的 ASP.NET 项目并添加了

到 index.cshtml。另外,我将 home.html 修改为如下所示:

最后,我更改了 home.js:

当我运行应用程序时,Chrome 告诉我 ace.js 有一个 Uncaught TypeError: Cannot read property 'env' of null。当然,主屏幕不会出现。我应该怎么做才能让它工作?

0 投票
3 回答
3378 浏览

c# - 如何让 WebAPI HelpPage 包与 HotTowel 模板一起使用?

我正在试用 John Papa 的新热毛巾模板。它真的很漂亮,但我在让它与我习惯的 Web API 配合使用时遇到了一些困难。

我能够解决路由问题,但我仍然无法让Microsoft.AspNet.WebApi.HelpPage包工作。

这是我所做的:

  • 安装热毛巾 VSIX
  • 新的 ASP.NET MVC4 项目 - 热毛巾 SPA 模板
  • 构建,运行 - 工作。
  • 右键单击Controllers文件夹,添加名为TestController.
  • 选择“空 API 控制器”模板。
  • 在 TestController 中编写以下操作:

    /li>
  • 构建,运行。

  • 尝试 URL/api/test获取错误 404The resource cannot be found.
  • 试试网址/api/test/gettestdata。作品。

然后我注意到BreezeWebApiConfig.cs已经改变了默认的api路由,并且需要{action},所以我添加了默认的api路由:

现在,当我尝试 URL 时/api/test,它可以工作。

现在我想使用帮助包。

  • 添加Microsoft.AspNet.WebApi.HelpPagenuget包。
  • 添加AreaRegistration.RegisterAllAreas();Global.asax.cs
  • 构建,运行。

当我尝试访问 URL/Help时,出现以下错误:

在不破坏 HotTowel 模板的情况下解决此错误的正确方法是什么?

这些中的任何一个都应该被视为错误吗?

0 投票
2 回答
4274 浏览

breeze - 为什么 HotTowel 包含微风?

从表面上看,这听起来像是一个愚蠢的问题,但为什么Hot Towel SPA 模板完全包含Breeze

最近几天我一直在学习 Hot Towel 及其依赖项,据我所知,模板中的任何内容都没有真正使用 Breeze。也许这会随着未来的一些版本而改变?

当然,Breeze 是一个很好的图书馆。但它受 CRUD 方法的约束,需要您以特定的方式设计 ApiController。(元数据、SaveChanges 等)请参见此处

它还引导您使用实体框架。虽然这更像是一种软依赖,但由于 Breeze 还展示了一个没有它的示例,它仍然会引导您使用修改后的存储库模式来实现类似的模式。

如果您使用的是 NoSQL 数据存储或 CQRS 模式而不是 CRUD,那么 Breeze 将变得非常难以使用。有用于数据访问的替代库在这种风格下运行良好,例如AmplifyJS

但是热毛巾的其余部分非常好!我特别喜欢杜兰达尔。那么问题来了,如果模板实际上没有进行任何数据访问——为什么要包含任何数据访问组件呢?最好在没有 Breeze 的情况下发布它,如果最终用户想要使用 Breeze、Amplify 或其他任何东西 - 那就这样吧。Hot Towel 的其余部分将继续作为出色的 SPA 实施而大放异彩。

0 投票
1 回答
263 浏览

knockout.js - 我升级到了 knockoutjs 2.2.1 和 jquery 1.9,koExtenalTemplates 坏了

我可以看到注入器加载模板并将其设置在可观察的模板中,但渲染不会发生。它只显示“正在加载”,但它调用 afterRender 方法。模板就像

当模板加载时,数组中已经有很少的可观察对象。但不会被渲染。但是如果单击刷新按钮并清理并重新加载阵列。它表现得很好。

这在 ko 2.2.0 和 jquery 1.8 上运行良好... KoExternalTemplate 是否因此更新而损坏?

编辑:重现步骤:

  1. 使用 HotTowel SPA 模板开始一个新项目(如果您还没有,请在 google 中搜索此模板)
  2. 通过 NuGet 添加 koExternalTemplate,它还将安装交通警察和 infiser。
  3. 更新 BundleConfig.cs 以添加 TrafficCop、infuser 和 koExternalTemplate
  4. 在项目的根目录下创建一个文件夹名称 Templates 添加一个模板文件。使用注入器配置更新主 js 以指向模板和文件模式(如果你知道一点 koExternalTemplate 你知道我在说什么)。
  5. 在 home/details html 中包含模板并启动应用程序。

结果:您只会看到“正在加载...”代替您的模板,并且模板不会被渲染。

0 投票
3 回答
1712 浏览

binding - 在 Hot Towel App 中使用 Knockout 绑定 observable

我刚刚开始了一个新的Hot Towel SPA项目,但在使用 ViewModel 敲除进行绑定时遇到了麻烦。

我的视图模型如下所示:

视图如下所示:

但是标题总是以垃圾结尾(即函数的代码,例如使用调试器时:FUNCTION D(){IF(0<ARGUMENTS.LENGTH) [...])

如果我将绑定更改为“data-bind="text:title()”,它会起作用,但我意识到这不会绑定可观察对象,只会绑定值。因此,当使用此类绑定进行表单时,它不会t 更新 observable,我无法保存该值。

我找到了似乎使用与我完全相同的代码的示例,但我不明白为什么它不起作用。

0 投票
4 回答
6033 浏览

javascript - 在 HotTowel SPA 中使用 Durandal 定义模块的 jQuery 依赖项

我正在兜圈子,试图理解 RequireJS 以及如何使用它来加载当我尝试在模块中使用它们时不显示为未定义的依赖项。

我从 John Papa 的 Pluralsight“带有 HTML5 的 SPA”课程开始。我从来不明白的是,为什么需要在脚本标签中指定每个库,而我认为 AMD 在 requireJS 中的全部意义在于您将责任移交给它及其 data-main 属性以异步加载需要什么。该课程中提出的解决方案令人倍感困惑的是,它没有遵循 RequireJS 文档中记录的整个数据主设置。

再过几个月,我们现在有了带有 Durandal 的“热毛巾”模板、一个示例“服务”模块、一个遵循 RequireJS 文档的设置和一个相当容易理解的入门应用程序。唯一能敲响警钟的是,大多数库都位于通常的“脚本”文件夹中,而 Durandal 与应用程序逻辑一起位于完全独立的“应用程序”文件夹中。如果我从pluralsight SPA 课程中学到一件事并使用requireJS,那就是将东西从单个文件夹中移出,事情很快就会变得非常混乱。

无论如何,新模板工作正常。模块依赖关系很好,视图和视图模型是绑定的,并且有一个示例记录器模块,其模块依赖于 Durandal 模块(即在应用程序文件夹中),效果很好。根据 Hot Towel 模板中的代码添加另一个使用 jQuery 和 mockJson 的简单模块应该很简单,对吧?呃,不,不是真的。

这是一个非常简单的声明,用于在“app/services”文件夹中启动我的模块“dataservice.js”

当我尝试在我的代码块中访问它时,我当然会为 $ 得到“未定义”。因此,在阅读了太多令人困惑的文献之后(其中大部分最终都以评论说“这在 jquery xxxx 中发生了变化,因此不再相关”),我有以下问题:

  1. 当我监控网络流量时,我可以看到 jQuery 库正在正确下载,如果我将其添加到 BundleConfig.cs 中定义的“供应商”捆绑包中,mockJSON 也是如此,所以 jQuery 在那里并在我的浏览器中等待,即使我没有我自己没有给它一个模块定义。要摆脱模块文档中的“未定义”引用似乎意味着我需要添加如下内容:

    (“文本”声明已经存在。我刚刚添加了 jquery 别名)这导致我的模块有一个函数而不是“未定义”,它解决了部分问题,除了它导致我已经复制的脚本的第二个副本由于 Hot Towell 模板“供应商”捆绑包而下载。出于明显的原因,我不想下载两份 jQuery,那么我该如何解决这个问题?

  2. 我已将 mockJSON 库添加到我的“供应商”捆绑包中,这通常使用 $.mockJSON 来引用,我无法做任何事情来使其有效。即使我使用与 jquery 相同的过程对脚本的引用进行了破解,我使用 'require.config({paths:' 声明我得到了未定义,更不用说已经提到的'库被下载了两次'的问题. 如何获得定义的库依赖项,以便在模块中使用该库?

  3. 我猜所有这些痛苦都与 requireJS 是关于下载异步模块的事实有关,但 jQuery 和 mockjson 是同步的,所以我必须通过其他方式下载它们(捆绑硬编码参考)但这仍然意味着我的 requireJS模块需要一种将它们声明为依赖项的方法,而我尝试过的任何方法都不起作用。我关于这是一个同步/异步问题的假设是否正确?我曾希望在 Durandal 中找到至少一个使用 jQuery 的示例应用程序,最好是一个 jquery 插件,但我只能看到使用 Durandal 模块而不是其他任何东西的模块代码。所有这些库都在 requireJS 的主根之外的事实可能会加剧问题,因为我不得不求助于其中包含“../”字符串的路径来获取引用。

  4. 我知道 requireJS 在定义命令上使用“约定优于配置”,因此如果我错过了模块 ID,那么它会根据模块源文件名和使用 data-main 指定的已定义根文件夹的路径假定一个 ID。然而,Durandal 在其代码中引用了一个名为“入口”的模块。这个模块不在根文件夹中,而是在一个名为“Durandal/transitions/entrance.js”的文件夹中,所以我很困惑为什么对它的任何引用都是“入口”而不是“Durandal/transitions/entrance”。它在哪里被别名?

  5. 最后(hoorah)我还没有掌握将依赖项指定为定义语句的第一个参数(字符串数组)与省略这些依赖项之间的细微差别,但是在模块工厂中,它成为第一个参数,指定类似 var system = require('../system') - 为什么我会优先使用一种形式而不是另一种形式。我看到这两种类型在示例应用程序中混合在一起,但不明白为什么。

PS:当我编辑此条目时,我看到编号为 1 到 5 的五个问题。当我查看它时,我看到它被渲染为 1,然后是 1 到 4。一些奇怪的 HTML 编辑器与渲染错误,无论我尝试什么格式,我都没有'无法修复,所以请发表任何评论,就好像有五个问题编号为 1 到 5 而不是 2 个编号为 1 和三个编号为 2 到 4!)

0 投票
1 回答
368 浏览

css - 使用 Bootstrap 流体样式时,Durandal/Hot Towel 模板将 body max-width 设置为 1100px 的原因是什么?

在使用带有 Durandal 的“Hot Towel”SPA 模板时,值得注意的是,视图位于宽度为 1100 像素的中间窗口中,而不是使用所有可用空间。

然而,applicationHost 中的所有视图都设置为使用来自 Twitter“流体”样式的 Bootstrap。实际上,在 body 标签上设置的硬编码最大宽度使所有这些流畅的样式变得多余且毫无意义。

覆盖 app.css 中设置的主体样式很容易(假设将其设置为高得离谱的值不会有副作用)但我只是想知道是否有人知道在模板中以这种方式设置它的原因,因为它正在取消尝试实现所有那些 Bootstrap“*-fluid”样式试图实现的响应式设计的所有好的工作。

0 投票
1 回答
3286 浏览

asp.net-mvc-4 - 如何在 ASP.NET MVC 4 上使用带有 SPA 热毛巾模板的本地数据库

我可能是 MVC 上最缺乏经验的人,更不用说 Hot Towel SPA 了,但我希望我能基于这些技术生产一个系统。

我已经阅读了 Breeze 网站和 John Papa 的所有文档,但我只是不知道如何创建与我的数据库的交互以及检索数据和显示数据、添加或编辑数据,包括删除数据。

我必须在屏幕上构建一个带有大约 5 个网格的仪表板,以显示实时数据,因为它需要进行一些时间计算。

到目前为止,我有 2 天的时间是修改了热毛巾模板以显示我的项目名称,并且我更改了热毛巾图标。我只是无法理解这些东西......两年来,我一直是 3 层架构的 ASP.NET 网站开发人员。

谁能给我有关如何通过此模板传递数据的指南?