Javascript与带有SignalR和KnockoutJS的大型项目
我很想知道其他团队是如何在他们的项目中使用Javascript的。目前我有一个MVC.Net应用程序-使用实体框架的面向服务的体系结构。。废话废话-不是我想问的问题,但知道有用。对于客户端,我使用了signar和knockout。Knockout需要您绑定一个视图模型,然后Signaler参与进来,它会变得有趣 为了将其拆分(并获取所有依赖项Knockout、jQuery等),我决定使用RequireJS并将其结构化如下:Javascript与带有SignalR和KnockoutJS的大型项目,javascript,knockout.js,requirejs,Javascript,Knockout.js,Requirejs,我很想知道其他团队是如何在他们的项目中使用Javascript的。目前我有一个MVC.Net应用程序-使用实体框架的面向服务的体系结构。。废话废话-不是我想问的问题,但知道有用。对于客户端,我使用了signar和knockout。Knockout需要您绑定一个视图模型,然后Signaler参与进来,它会变得有趣 为了将其拆分(并获取所有依赖项Knockout、jQuery等),我决定使用RequireJS并将其结构化如下: |- \Js |- app.js (This actually c
|- \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文件夹中的供应商文件夹中)
我之所以把这些文件分割得如此之多,是因为1000多行javascript确实很难阅读,而且它使我的团队更容易处理项目的不同元素。但这确实有一个缺点——当我查看每个请求的流量时,它的1.5mb听起来并不坏,但随着javascript文件的增长,它正在成为一个越来越大的问题(特别是当我承诺应用程序会更快时!)
我曾尝试使用供应商库的缩小版本,但这并没有产生多大影响。有没有人遇到过这个问题,你是如何克服的?我不确定如何精简javascript(不手动执行此操作)并仍然使用requirejs来管理依赖项
谢谢您可以使用RequireJS'
r.js
优化您的代码。优化器知道如何优化RequireJS模块。可以将其配置为使供应商的资料保持原样。查看r.js
的文档,尝试一下,如果遇到具体问题,可以问更多问题。对于如何使用它,没有一刀切的答案
通过使用优化器,您可以显著减少网络请求的数量和传输的数据的大小。在我正在开发的一个应用程序中,在使用优化器之前,我在远程服务器场上运行Selenium测试时出现了测试超时,这一点非常重要。优化后超时消失。我已经考虑过这一点,但我不确定如何将其包括在构建过程中。你把javascript构建过程和项目构建过程分开了吗?我不知道你的意思。您的问题是否与.Net项目的结构和构建方式密切相关?我使用
make
来构建我的东西,我只在Linux中构建了它。从第一天开始,我就有了一个名为build/standalone
的目标,它将我的代码与外部代码组合成一棵JS代码树。出于优化目的,我添加了一个build/standalone optimized
目标,在build/standalone
中的文件上运行r.js
,以创建一个优化版本。我认为我的结构是问题的一部分,我可能需要查看它的结构,然后使用r.js缩小项目。。。谢谢你在这方面的意见。