随笔-68  评论-566  文章-4  trackbacks-30

摘要:

    ScriptLoaderSmartScript的后续版本. ScriptLoader可以让你通过一个单一的配置文件来管理你的所有js类库,包括自主开发与第三方类库,无需加入自己的任何代码.新版本的ScriptLoader拥有更多的特性和更好的性能.支持自动载入依赖脚本,自动更新版本,更新客户端缓存,同时支持客户端和服务端编程,使得js类库的载入更加透明化,更加易读.相信ScriptLoader一定会成为你开发Asp.net webstie的良好助手.

简介:

    ScriptLoader是一个无侵入性的脚本管理方案,使用它来管理你的众多脚本类库,不会产生大量的侵入性代码.同时,比起SmartScript增加了,"脚本依赖载入","版本自动更新","脚本灵活导入"等新特性,一定会让你耳目一新^_^.

    ScriptLoader使用LGPL开源协议,你可以访问ScriptLoader@sourceforge.net获得更多的信息.

 

Advance Features:

支持多种脚本导入方式(How to configure a javascript file as a module?):

  1. 相对路径导入

  2. 绝对路径导入:

  3. 远程路径导入:

    使用此方式导入的文件,会在每次初始化ScriptLoader的时候,重新更新远程的文件到本地.
  4. 虚拟文件聚合导入:

    使用此方式的好处是,可以整合多个文件到一个Module上,这样子引入脚本的时候就可以使用"javascript" 来代替"core"和"BrushJScript"了.

     

Configuration files(How to configure a dependence of a module?):

    ScriptLoader的配置信息放在<root>/Scripts/Config/底下,包含两个文件:

1、Lib.config:主要用于配置核心的js类库,如果你的开发团队同时使用很多相同的类库的话,这个配置文件将可以减少你们的重复工作和维护成本。(这个文件是必须的)

2、User.config:主要用于配置各自项目的独立js文件,主要跟业务相关。(这个文件是可选的)

    配置文件的格式如下:

    

Step by step (QuickStart):

  1. 注册一个HttpHanlder,用来Handle脚本的载入:

    请放心使用此HttpHandler,已经对普通的js引入进行了处理,不会影响原来的js引入方式:
  2. 配置JS相关类库


    如果你需要配置脚本的依赖关系,也需要在此时进行配置,比如:


  3. 注册一个ScriptLoader对象到Page上:

    推荐使用服务端的注册方法
  4. 在程序中引入所需的js 模块:


    或者

所有文件的下载地址:包括binary,src,quickstart:
http://sourceforge.net/project/showfiles.php?group_id=228776
或者可以从svn下载最新版本:
https://scriptloader.svn.sourceforge.net/svnroot/scriptloader

posted on 2008-06-09 01:15 浪子 阅读(2329) 评论(21)  编辑 收藏 所属分类: ScriptLoader/SmartScript

评论:
#1楼  2008-06-09 02:49 | 曲滨*銘龘鶽      
没看懂,标记一下明天看;
  回复  引用  查看    
#2楼  2008-06-09 08:59 | 布尔      
还是不要再Handler中处理的好我觉得,提取出一个HttpModule比较好点,不过那样的话,可能不是所有页面都需要注册全部js,还需要区别对待。
  回复  引用  查看    
#3楼  2008-06-09 09:43 | JesseZhao      
我感觉也是写个HttpModule比较好,然后在多一个配置文件,类似于membership的配置文件,只不过是哪个页面包含那些js,或者那个文件夹下的文件包含那些js,这样可配置型更好点,侵入的更少点。
  回复  引用  查看    
#4楼 [楼主] 2008-06-09 10:15 | 浪子      
@布尔,JesseZhao
做到零侵入的话,好是好,不过相对就更麻烦点.
如JeseZhao所说,那配置就多了.为了方便可能还得开发更多的配置语法,那学习成本也就上升了.

而且这边的无侵入性,是针对脚本的,不是针对整个asp.net解决方案.所以,我觉得还是取个平衡点可能更好点.

  回复  引用  查看    
#5楼 [楼主] 2008-06-09 10:16 | 浪子      
看来太久不blog也会生疏哦,写出来别人都看不懂了-_-!!!
你可以对照看下我以前的blog:http://www.cnblogs.com/walkingboy/archive/2007/02/07/SmartScript.html

或许会更好理解些.

--引用--------------------------------------------------
曲滨*銘龘鶽: 没看懂,标记一下明天看;
--------------------------------------------------------

  回复  引用  查看    
#6楼  2008-06-09 12:43 | 化石 [未注册用户]
看过一个叫JSI的项目:
http://www.xidea.org/project/jsi/
好像和楼主的这个很类似。
  回复  引用    
#7楼 [楼主] 2008-06-09 13:00 | 浪子      
是的,ScriptLoader的目的和JSI一样,都是为了管理引入的js类库的.
目前,ScriptLoader的功能比JSI弱,JSI有异步载入,同步载入功能,而ScriptLoader目前没有,但是ScriptLoader跟Asp.Net结合更紧密些,同时对版本和缓存的控制会更注重些.而JSI是个比较纯客户端的框架,JSI的新版似乎跟java有了部分结合.

类似的框架还有google.loader,jsloader等等. 不过目前for asp.net暂时应该还只有ScriptLoader.

--引用--------------------------------------------------
化石: 看过一个叫JSI的项目:
<a href="http://www.xidea.org/project/jsi/" target="_new" rel="nofollow">http://www.xidea.org/project/jsi/</a>
好像和楼主的这个很类似。
--------------------------------------------------------

  回复  引用  查看    
#8楼  2008-06-09 19:51 | try      
楼主,这个脚本管理器,客户端应该不缓存,每次都是 200请求
  回复  引用  查看    
#9楼  2008-06-09 23:32 | 戴尔笔记本电脑 [未注册用户]
这个JS类库看起来不错,研究中,谢谢博主分享!
  回复  引用    
#10楼 [楼主] 2008-06-10 09:40 | 浪子      
测试还真是不过关啊,确实有这个问题,将会在下个版本中修复,或者你也可以从svn中获得最新的代码,已经修复这个问题。

--引用--------------------------------------------------
try: 楼主,这个脚本管理器,客户端应该不缓存,每次都是 200请求
--------------------------------------------------------

  回复  引用  查看    
#11楼  2008-06-10 13:32 | 体彩 [未注册用户]
受益颇深,转走了哈!!!
最喜欢你的编程意境,你一定攻无不克,呵呵
  回复  引用    
#12楼 [楼主] 2008-06-10 22:44 | 浪子      
过奖,过奖^_^
--引用--------------------------------------------------
体彩: 受益颇深,转走了哈!!!
最喜欢你的编程意境,你一定攻无不克,呵呵
--------------------------------------------------------

  回复  引用  查看    
#13楼  2008-06-30 13:48 | try      
LangZi.Scripts.ScriptLoader loader = LangZi.Scripts.ScriptLoader.RegisterInstance(this);
loader.Load("jquery");

建议缓存下loader对象,没具体看代码,loader.load是否每次都要去读config依次加载config内容?
  回复  引用  查看    
#14楼 [楼主] 2008-06-30 16:14 | 浪子      
@try
loader没有缓存,config的信息是单例的,再由FileWatcher监管。不需要担心重复读取:)

而Loader.load是在客户端进行了,一个链表而已:)


  回复  引用  查看    
#15楼  2008-07-02 17:33 | try      
使用工具检测了下,按“f5”涮新 ,脚本还是返回200的,这个应该可以处理成304的。按“enter”,是cache了
  回复  引用  查看    
#16楼 [楼主] 2008-07-02 21:13 | 浪子      
谢谢反馈.

已经修改了程序,添加了Last-Modified和ETag的支持,对于F5的刷新模式,已经处理为304.

sourceforge似乎上不去,不过svn可以上,你可以从svn下载最新版本.
https://scriptloader.svn.sourceforge.net/svnroot/scriptloader

-引用--------------------------------------------------
try: 使用工具检测了下,按“f5”涮新 ,脚本还是返回200的,这个应该可以处理成304的。按“enter”,是cache了
--------------------------------------------------------

  回复  引用  查看    
#17楼  2008-07-06 14:57 | try      
不知楼主是否能做稍微改动,把css也用此类似方式处理,其实css文件和js几乎应用场景都一样。

这样这个组件应用就比较广泛了。呵呵:)
  回复  引用  查看    
#18楼 [楼主] 2008-07-07 08:39 | 浪子      
@try:
本来在设计中,不过没有想到最优方案,所以暂时没有包含在当前的代码中,我会在下一次更新中包含此项内容。

  回复  引用  查看    
#19楼  2008-07-28 20:54 | try      
--引用--------------------------------------------------
浪子: @try:<br>本来在设计中,不过没有想到最优方案,所以暂时没有包含在当前的代码中,我会在下一次更新中包含此项内容。<br>
--------------------------------------------------------

楼主什么时候更新 含css的方案啊

  回复  引用  查看    
#20楼 [楼主] 2008-07-28 22:45 | 浪子      
@try
sorry,最近比较忙,还没静下心来想css的相关最优设计,我会尽量找个时间做一次更新.
  回复  引用  查看    
#21楼 [楼主] 2008-08-01 13:23 | 浪子      
@try
已经更新了,请从http://sourceforge.net/project/showfiles.php?group_id=228776&package_id=286201 下载新版本,因为时间关系只有简单的example。

新版本增加了对css的导入支持,和自动监视客户端浏览器是否支持gzip/deflate,如果支持,则会返回压缩后的脚本,减少网络流量。同时有别于
context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
context.Response.AppendHeader("Content-encoding", "gzip");的即时压缩方式,而是做到一次压缩多次使用的机制,缓存压缩过的byte[]并进行文件的修改跟踪。
  回复  引用  查看    

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-06-10 13:25 编辑过