随笔-71  评论-634  文章-4  trackbacks-33

摘要:

    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 浪子 阅读(2802) 评论(35)  编辑 收藏 网摘 所属分类: 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" target="_new">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" target="_new">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[]并进行文件的修改跟踪。

  回复  引用  查看    
#22楼 2008-10-09 19:19 | Clingingboy      
恩,还是不错的
  回复  引用  查看    
#23楼[楼主] 2008-10-10 00:08 | 浪子      
目前已经升级到V3, 可以从 http://www.sourceforge.net/projects/scriptloader/" target="_new">http://www.sourceforge.net/projects/scriptloader/ 获取最新版本.我觉得你的场景就是ScriptLoader要解决的问题:)

--引用--------------------------------------------------
Clingingboy: 恩,还是不错的
--------------------------------------------------------

  回复  引用  查看    
#24楼 2008-12-02 01:46 | 侦探到此一游[未注册用户]
用来解决ext类库太大的问题应该不错啊,哈哈
我用框架页测试了ext类库还真的缓存,不过我使用的是SmartScript,
现在这个版本看得有点头大,规则很多哦

  回复  引用    
#25楼[楼主] 2008-12-02 19:31 | 浪子      
@侦探到此一游
^_^,是稍微多了些,不过使用上差不多:)

  回复  引用  查看    
#26楼 2008-12-02 22:33 | 侦探到此一游[未注册用户]
hi,老大,看了你的一些文章介绍,我还是决定使用v3版的好,
但是你的项目工程是2008的,而我现在又不想使用vs2008的,所以我打算把你的v3工程改成vs2005的,
现在粗粗的弄了一下,有不少ling名称空间错误,还有少部分语法错误,现在我想问一下,这个工程能否切换回vs2005的呢,如果我有能力的话.希望早点告诉我啊,因为你是最熟悉的,别让我浪费时间啊

  回复  引用    
#27楼[楼主] 2008-12-03 12:55 | 浪子      
@侦探到此一游
里面用了LINQ To XML.所以切回2005的话,要用XmlDocument改写下.
有些地方也使用LINQ To Object,也需要切换回以前的写法.

你可以把.Net 3.5中的几个核心dll (system.core.dll,System.data.linq.dll ,system.xml.linq.dll???,不是很确定是哪些dll,你可以自己查看下.csproj里面的引用,搞不定我再帮你看下) 拷贝过去,直接在vs2005里面引用,应该就可以了.

毕竟3.5也是基于2.0的,只不过新作了一些封装而已.

  回复  引用  查看    
#28楼 2008-12-03 23:22 | 侦探到此一游[未注册用户]
嗯,我已经处理得差不多了,我也是用XmlDocument处理的,其它的语法错误都好解决,
我如果用你所说的那些dll,那么这些dll中的代码语法会不会被CLR2.0支持啊,或许我多虑了,还真没有试过,哈哈,编写类库工程还是用低版本的好,兼容性会比较好

  回复  引用    
#29楼[楼主] 2008-12-03 23:47 | 浪子      
@侦探到此一游 CLR2.0 支持的 用3.5,主要是为了偷懒,哈哈,LINQ To XML 和LINQ To Object比较适合我这种懒人. 你下载release的文件就好了哦.svn上的,最近有些变动:)
  回复  引用  查看    
#30楼 2008-12-04 22:36 | 侦探到此一游[未注册用户]
好像没有看到release的文件哦
  回复  引用    
#32楼 2008-12-05 21:27 | 侦探到此一游[未注册用户]
@浪子
里面的文件我早翻了好几翻了啊,编译不了,主要是linq名称空间错误,我本来在微软下载个linq安装包想安装一下,可是安装错误,提示说我没有安装vs2005,真气坏了,我也懒得找原因了,时间就是金钱啊

我已经把你的代码重新转成vs2005的了,明年买新笔记本再来开始学vs2008

  回复  引用    
#33楼[楼主] 2008-12-08 09:09 | 浪子      
@侦探到此一游
其实不需要安装LINQ的,只要拷贝下那几个dll文件,引用改下就可以了.就好比现在很多的虚拟主机空间只支持2.0,但是可以拷贝3.0的dll进入bin,然后跑3.0的application一样:)

  回复  引用  查看    
#34楼 2009-01-12 10:26 | ziqiu.zhang      
很好的项目. 我们公司也是使用ASP.NET, 由于项目管理和开发没有监控, 目前的JS脚本已经很难维护了. 再加上又有人使用了JQuery,而我使用Dojo等第三方类库, 真的是十分庞大而复杂的JS文件引用关系. 为了整理网站的和程序的架构, 我也很希望找一个寻找一套维护JS文件的方式. 浪子的项目真的很适合我. 我加您的msn了希望通过. 以后多多向您请教, 希望实践到我的项目中来!

  回复  引用  查看    
#35楼[楼主] 2009-01-12 11:12 | 浪子      
@ziqiu.zhang
跟我以前用SmartScript的项目有点相似,不过你的比我的还复杂:),我们管理还好,只是调试的时候,ie老是缓存文件很不方便,因为很多逻辑写在js里面-_-!!!

  回复  引用  查看    



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1216099




相关文章:

相关链接: