代码之家  ›  专栏  ›  技术社区  ›  durilka

ASP控件中的javascript代码管理

  •  1
  • durilka  · 技术社区  · 14 年前

    我们正在寻找一种方法来管理我们的ASP控件(与registerclientscript家族一起使用)不断增加的javascript代码。经典的方法是将javascript编码到C代码中的字符串常量中,但现在它变大了,您不想在C字符串中开发它。在编译之前,将代码保存在外部文件中并将其转换/复制为字符串形式也是有些荒谬的。另外,在这些场景中,几乎相同的代码与控件的每个实例一起发送多次。

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

    到目前为止,我个人最好的选择是将javascript分成两部分:
    -“代码隐藏”-类似JS文件,编译为程序集中的嵌入资源。这比字符串连接慢3倍,但是。此外,它还提供了缓存选项和直接从文件执行的选项,而无需重新编译以进行调试。此部分在包含控件的每页上以内联方式传递一次。
    -使用控制实例特定参数调用主脚本的微小初始化代理函数。它们也以内联方式传递,但每个控件实例传递一次。

    我敢肯定我们不是唯一一个为此感到头疼的人。
    你是怎么做到的?

    更新。 除去.NET的细节,情况如下。 我们有大约100多个可重用的服务器端组件,每个组件可能包含一些JavaScript客户端功能。当然,这些控件不在每个页面中使用,因此不需要将javascript打包到一个公共lib中。另一方面,对外部javascript文件(每个文件的大小为1-2kb)有20多个引用,这对于维护和流量过大都是很头疼的。 这就是为什么我们希望让组件了解并关心它自己的javascript包含。

    另一方面,如果您有一个将这些组件分布到多个库中的项目,那么您并不真正希望它们依赖于某些特定的文件系统布局,当然,这些文件系统布局可能是标准化的,但是对于一个汽车轮胎来说,在IMO的一家餐厅强制执行您的可乐选择是非常有责任的。

    1 回复  |  直到 9 年前
        1
  •  2
  •   scunliffe    14 年前

    如果有多个控件重复使用的javascript代码,为什么不在外部的*.js文件中使用它?这将允许您保持格式,但仍然提供最小化、gzip化和客户端可访问文件。