摘要:
ScriptLoader是SmartScript的后续版本. 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?):
- 相对路径导入

- 绝对路径导入:

- 远程路径导入:

使用此方式导入的文件,会在每次初始化ScriptLoader的时候,重新更新远程的文件到本地.
-
虚拟文件聚合导入:
使用此方式的好处是,可以整合多个文件到一个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):
- 注册一个HttpHanlder,用来Handle脚本的载入:

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

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

- 注册一个ScriptLoader对象到Page上:

推荐使用服务端的注册方法
-
在程序中引入所需的js 模块:
或者
所有文件的下载地址:包括binary,src,quickstart:
http://sourceforge.net/project/showfiles.php?group_id=228776
或者可以从svn下载最新版本:
https://scriptloader.svn.sourceforge.net/svnroot/scriptloader
posted @ 2008-06-09 01:15
浪子 阅读(3373)
评论(35) 编辑 收藏
发表评论
还是不要再Handler中处理的好我觉得,提取出一个HttpModule比较好点,不过那样的话,可能不是所有页面都需要注册全部js,还需要区别对待。
我感觉也是写个HttpModule比较好,然后在多一个配置文件,类似于membership的配置文件,只不过是哪个页面包含那些js,或者那个文件夹下的文件包含那些js,这样可配置型更好点,侵入的更少点。
@布尔,JesseZhao
做到零侵入的话,好是好,不过相对就更麻烦点.
如JeseZhao所说,那配置就多了.为了方便可能还得开发更多的配置语法,那学习成本也就上升了.
而且这边的无侵入性,是针对脚本的,不是针对整个asp.net解决方案.所以,我觉得还是取个平衡点可能更好点.
是的,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>
好像和楼主的这个很类似。
--------------------------------------------------------
楼主,这个脚本管理器,客户端应该不缓存,每次都是 200请求
测试还真是不过关啊,确实有这个问题,将会在下个版本中修复,或者你也可以从svn中获得最新的代码,已经修复这个问题。
--引用--------------------------------------------------
try: 楼主,这个脚本管理器,客户端应该不缓存,每次都是 200请求
--------------------------------------------------------
受益颇深,转走了哈!!!
最喜欢你的编程意境,你一定攻无不克,呵呵
过奖,过奖^_^
--引用--------------------------------------------------
体彩: 受益颇深,转走了哈!!!
最喜欢你的编程意境,你一定攻无不克,呵呵
--------------------------------------------------------
LangZi.Scripts.ScriptLoader loader = LangZi.Scripts.ScriptLoader.RegisterInstance(this);
loader.Load("jquery");
建议缓存下loader对象,没具体看代码,loader.load是否每次都要去读config依次加载config内容?
@try
loader没有缓存,config的信息是单例的,再由FileWatcher监管。不需要担心重复读取:)
而Loader.load是在客户端进行了,一个链表而已:)
使用工具检测了下,按“f5”涮新 ,脚本还是返回200的,这个应该可以处理成304的。按“enter”,是cache了
谢谢反馈.
已经修改了程序,添加了Last-Modified和ETag的支持,对于F5的刷新模式,已经处理为304.
sourceforge似乎上不去,不过svn可以上,你可以从svn下载最新版本.
https://scriptloader.svn.sourceforge.net/svnroot/scriptloader
-引用--------------------------------------------------
try: 使用工具检测了下,按“f5”涮新 ,脚本还是返回200的,这个应该可以处理成304的。按“enter”,是cache了
--------------------------------------------------------
不知楼主是否能做稍微改动,把css也用此类似方式处理,其实css文件和js几乎应用场景都一样。
这样这个组件应用就比较广泛了。呵呵:)
@try:
本来在设计中,不过没有想到最优方案,所以暂时没有包含在当前的代码中,我会在下一次更新中包含此项内容。
--引用--------------------------------------------------
浪子: @try:<br>本来在设计中,不过没有想到最优方案,所以暂时没有包含在当前的代码中,我会在下一次更新中包含此项内容。<br>
--------------------------------------------------------
楼主什么时候更新 含css的方案啊
@try
sorry,最近比较忙,还没静下心来想css的相关最优设计,我会尽量找个时间做一次更新.
@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[]并进行文件的修改跟踪。
用来解决ext类库太大的问题应该不错啊,哈哈
我用框架页测试了ext类库还真的缓存,不过我使用的是SmartScript,
现在这个版本看得有点头大,规则很多哦
@侦探到此一游
^_^,是稍微多了些,不过使用上差不多:)
hi,老大,看了你的一些文章介绍,我还是决定使用v3版的好,
但是你的项目工程是2008的,而我现在又不想使用vs2008的,所以我打算把你的v3工程改成vs2005的,
现在粗粗的弄了一下,有不少ling名称空间错误,还有少部分语法错误,现在我想问一下,这个工程能否切换回vs2005的呢,如果我有能力的话.希望早点告诉我啊,因为你是最熟悉的,别让我浪费时间啊
@侦探到此一游
里面用了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的,只不过新作了一些封装而已.
嗯,我已经处理得差不多了,我也是用XmlDocument处理的,其它的语法错误都好解决,
我如果用你所说的那些dll,那么这些dll中的代码语法会不会被CLR2.0支持啊,或许我多虑了,还真没有试过,哈哈,编写类库工程还是用低版本的好,兼容性会比较好
@侦探到此一游
CLR2.0 支持的
用3.5,主要是为了偷懒,哈哈,LINQ To XML 和LINQ To Object比较适合我这种懒人.
你下载release的文件就好了哦.svn上的,最近有些变动:)
@浪子
里面的文件我早翻了好几翻了啊,编译不了,主要是linq名称空间错误,我本来在微软下载个linq安装包想安装一下,可是安装错误,提示说我没有安装vs2005,真气坏了,我也懒得找原因了,时间就是金钱啊
我已经把你的代码重新转成vs2005的了,明年买新笔记本再来开始学vs2008
@侦探到此一游
其实不需要安装LINQ的,只要拷贝下那几个dll文件,引用改下就可以了.就好比现在很多的虚拟主机空间只支持2.0,但是可以拷贝3.0的dll进入bin,然后跑3.0的application一样:)
很好的项目. 我们公司也是使用ASP.NET, 由于项目管理和开发没有监控, 目前的JS脚本已经很难维护了. 再加上又有人使用了JQuery,而我使用Dojo等第三方类库, 真的是十分庞大而复杂的JS文件引用关系. 为了整理网站的和程序的架构, 我也很希望找一个寻找一套维护JS文件的方式. 浪子的项目真的很适合我. 我加您的msn了希望通过. 以后多多向您请教, 希望实践到我的项目中来!
@ziqiu.zhang
跟我以前用SmartScript的项目有点相似,不过你的比我的还复杂:),我们管理还好,只是调试的时候,ie老是缓存文件很不方便,因为很多逻辑写在js里面-_-!!!