带有 SignalR 和 KnockoutJS 的大型项目的 Javascript

标签 javascript knockout.js requirejs

我很想知道其他团队如何在他们的项目中使用 Javascript。目前我有一个 MVC .Net 应用程序 - 使用面向服务的体系结构和 Entity Framework .. 等等等等 - 不是我真正想问的,但知道有用。对于客户端,我正在使用带 knockout 的信号器。 Knockout 需要你绑定(bind)一个 View 模型,然后 SignalR 参与进来,它会变得有趣。

为了将其拆分(并获取所有依赖项 Knockout、jQuery 等),我决定使用 RequireJS 并将其结构化如下:

|- \Js
   |- app.js (This actually creates a connection with signalr)
   |- config.js (requirejs.config - lists all the js libraries and then lists their dependancies)
   | - \App
       |- SomeFunction.js (Initialises the viewmodel and binds to the view)
       |- \ViewModel
          |- SomeViewModel.js (Consists of the view model)
          |- SomeOtherViewModel.ks (You get the idea...)

(我没有列出这些库,但它们列在 Js 文件夹内的 vendor 文件夹中)

我将文件拆分得如此之多的原因是因为 1000 多行 javascript 真的很难阅读,而且它使我的团队更容易处理项目的不同元素。但这确实有一个缺点——当我查看每个请求的流量时,它的 1.5mb 听起来还不错,但随着 javascript 文件的增长,它正成为一个日益严重的问题(特别是当我向应用程序 promise 时会更快!)

我曾尝试使用 vendor 库的缩小版本,但这实际上并没有产生太大影响。有没有人遇到过这个问题,你是如何克服这个问题的?我不确定如何精简 javascript(无需手动执行此操作)并仍然使用 requirejs 来管理依赖项。

谢谢

最佳答案

您可以使用 RequireJS 的 r.js 优化您的代码 optimizer .优化器知道如何优化 RequireJS 模块。它可以配置为保持 vendor 的东西完好无损。查看 r.js 的文档,尝试一下,如果遇到特定问题,请提出更多问题。对于如何使用它,没有放之四海而皆准的答案。

通过使用优化器,您可以显着减少网络请求的数量和传输的数据大小。在我正在开发的一个应用程序中,在我使用优化器之前,在远程服务器场上运行 Selenium 测试时,我遇到了测试超时,这已经足够重要了。优化后超时消失。

关于带有 SignalR 和 KnockoutJS 的大型项目的 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20216096/

相关文章:

javascript - 如何防止jquery验证表单只有一个按钮?

javascript - Node、express、jade 呈现的页面不与 knockout.js 进行数据绑定(bind)

javascript - require.js 错误加载依赖项

javascript - 是否可以强制 RequireJS 重新加载文本依赖项?

javascript - AngularJS 应用程序未启动

javascript - 在页面加载时自定义浏览器窗口

javascript - 清除 MIDI 输出缓冲区

javascript - 约束验证和 knockout 验证

javascript - 注册代码位于外部 JavaScript 文件中的 Grunt 任务

javascript - Materialize.css Modal 未在动态创建的元素上正确初始化