2010-11-01 26 views
1

我们正在寻找一种方法来管理我们的asp控件(与RegisterClientScript系列一起使用)不断增加的javascript代码。经典的方法是将JavaScript编码为c#代码内的字符串常量,但现在它变得越来越大,并且您不希望在c#字符串中进行开发。在编译之前将外部文件中的代码转换/复制为字符串形式也有点荒谬。此外,在这些情况下,几乎相同的代码会与控件的每个实例进行多次发送。asp控件中的Javascript代码管理

其他重要的标准是让脚本自给自足,只有外部依赖于jquery & co,所以不需要在其他地方有控制特定的javascript文件。所有相关部分必须在一个地方。

我个人最好的选择到目前为止是有使用Javascript分为两个部分:
- 编译为嵌入的资源进入装配式的js文件“后面的代码”。这比字符串连接慢大约3倍,但是。此外,它还提供缓存和直接从文件的选项,无需重新编译进行调试。这部分每页包含控件内嵌一次。
- 微小的初始化代理函数使用特定于控件实例的参数调用主脚本。这些内容也是内联交付,但每个控件实例一次。

我确定我们不是唯一一个对此挠头的人。
那么你怎么做到这一点?

更新。 摆脱.net的具体情况,情况如下。 我们有一些100多个可重用的服务器端组件,每个组件都可能包含一些JavaScript客户端功能。这些控件当然不会在每个页面中使用,因此不希望将javascript包装到一个公共库中。另一方面,拥有20+对外部JavaScript文件的引用,每个文件的大小都是1-2Kb,这对于维护和流量的过度消耗也是头痛的问题。 这就是为什么我们想让组件知道并关心自己的JavaScript包含。另一方面,如果你有一个将这些组件分散到多个库中的项目,你并不想让它们依赖于某些特定的文件系统布局,这当然可能是标准化的,但它的责任太多了对于车辆轮胎来强制你的可乐选择在一个小餐馆,伊莫。

回答

2

如果您有几个控件重复使用的JavaScript代码 - 为什么您不想在外部的* .js文件中使用该代码?这将允许您保持格式化,但仍然提供最小化,gzip和客户端可超级缓存文件。

+0

我第二个这个......外部JS文件是我认为的方式,如果你需要来自服务器代码的任何客户端数据,使用“RegisterClientScript family”作为全局变量添加它。 – 2010-11-01 10:25:13

+0

我目前最好的选择是在编辑时将项目中的外部文件准确存在,但作为运行时的程序集中的嵌入式资源(在调试时从文件系统提供选项),所以我完全同意你关于外部文件。我们对部署dll文件和其他东西(并最终忘记或犯错)并不满意。 – durilka 2010-11-01 10:44:31

+0

我对.net开发并不太熟悉,但为了获得紧凑型可扩展JavaScript的所有优点,您需要将其放入外部* .js文件中。我会建议他们开始并保持外部文件,并在其中包含他们时引用他们的版本号,以便他们在necs时破坏缓存。否则它们会缓存很长时间。部署应该每次都包含所有静态内容js/css/images(根据需要进行优化以添加/更新)。 – scunliffe 2010-11-01 13:09:15