[OpenSource]ScriptLoaderV2:彻底改变你的编程习惯

简介:

摘要:

[OpenSource]ScriptLoader: 轻松管理你的js 类库一文发布后,有的园友反映,侵入性还是有点太强。昨天晚上半夜想到一个不错的点子,越想越睡不着,最终还是爬起来把ScriptLoader升级到了V2,这个版本将给你更便利的脚本文件组织体验,增加了自动关联、多语言支持途径、诱人的Syntactic Sugar,使用ScriptLoader将改变你以往的编程习惯^_^。

简介:

ScriptLoaderV2增加一些新特性:

  1. 对Aspx无侵入性的脚本引入机制。
  2. 多语言资源的支持途径。
  3. 让你更容易load module的Syntactic Sugar。

 

无侵入的脚本引入机制:

当前我们的脚本组织方式,一般是每个aspx都会通过script标签引入一些js核心类库,然后在aspx页面里面混杂一些当前页面所需的业务逻辑脚本。

image

这样子的写法导致js和我们的aspx进行了太紧密的结合,同时也不利于整个项目的维护。针对此,ScriptLoader提供了一个HttpModule来结合进行js的引入。当读入WebForm1.aspx的时候会自动帮你Load同目录下的WebForm1.aspx.js文件,因为是经过ScriptLoader导入的,所以具备ScriptLoader的特点,比如缓存,只要你的webForm1.aspx.js最后修改日期没有变,就可以一直利用客户端的缓存。

image

不过你可能会想到这样一种情况:

image

我们经常使用<%=this.TxtName.ClientID%>这种方法来获取服务端控件在客户端的唯一id,那这个情况在外部引入的js是没办法使用的,所以我引入了ScriptLoaderV2的第二个特性。

多语言资源的支持途径:

通过ScriptLoader.SetVariable方法进行赋值。

image

相关的方法还有

image

如果你用到了这个特性,那会产生侵入性了,如果你不想产生侵入性,你也可以使用Asp.Net原始的方法:

image

那这个特性跟多语言又有什么关系呢?

因为这其中有个方法是读取xml配置文件直接设置变量的,xml如下:

image

读入的代码:

image

因此,如果你想对这些变量做根据不同的语言做不同的赋值的话,就可以多写几个config,比如myVars-en-US.config,myVars-zh-cn.config,然后根据不同语言版本载入不同的变量,而js中需要做多语言的都用变量代替字符常量。

image 

当然这还有更好的集成方式,就是把页面组织结构改成如下形式

image

然后就像第一个特性一样,自动根据语言版本载入不同js或者config,目前未增加这个特性,因为还没有办法考虑到有些什么特殊情况,所以还不准备增加此特性,不过这个的修改也是很快的,如果你有需要可以自行下载代码,进行修改,如果能把你的应用情况反馈给我,那自然更好了。时机成熟,我会考虑直接集成进ScriptLoader的代码。

变量的问题解决了,但是每个业务逻辑的js不可能离开一些核心的js类库,比如例子中的image

我需要在当前页面引入jquery类库,那怎么办?为了解决这个问题,ScriptLoader增加第三个特性。

Syntactic Sugar:

所谓Syntactic Sugar,就是一种取巧的做法,有点像Vs2008中的自动属性

image

其实这不是标准的语言库支持的特性,是Vs2008这个IDE为我们提供的一种便利通道。在ScriptLoader中为了解决引入脚本的问题也加入类似的特性:

image

可以看到在WebForm2.aspx.js中的头部,使用了一个叫using的方法,引入了3个在我们lib.config中配置的js module。

这个Syntactic Sugar只能用在WebForm2.aspx.js这中类型的js中,不是所有js类库都可以使用,ScriptLoader会在为aspx页面注入ScriptLoader的时候,进行分析,然后自动帮你Load这些模块。核心的类库还是必须通过lib.config/user.config进行配置的,这样子你才可以使用using(moduleName)来引入这些脚本。

后记:

我是标题党,呵呵,不要批我的标题。

如果你使用ScriptLoader的这些特性,确实可以改善你的很多js文件组织体验。现在大部分js类库更加关心功能的封装,但是对于js文件的组织管理甚少关注,ScriptLoader就是为了填补这个空白而出现的。

后续的版本会增加更多让你心动的特性,比如ClientCacheManager :)

Examples包含在src发布包中,你也可以通过svn获取ScriptLoader最近的版本

Http://www.sourceforge.net/projects/scriptloader


本文转自浪子博客园博客,原文链接:http://www.cnblogs.com/walkingboy/archive/2008/06/13/ScriptLoaderV2.html,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
机器学习/深度学习 人工智能 C++
《CMake:掌控 C++人工智能项目编译的魔法棒》
在 C++ 人工智能项目的开发中,CMake 作为一款强大的构建工具,能够高效管理项目的编译流程。本文深入探讨了如何利用 CMake 处理复杂的项目结构、管理库文件链接、定制编译选项、支持跨平台编译以及生成和管理构建系统,帮助开发者高效构建、扩展和维护 C++ 人工智能项目。
75 17
|
5月前
|
Rust 开发者
揭秘Rust编程:模块与包的终极对决,谁将主宰代码组织的新秩序?
【8月更文挑战第31天】在软件工程中,模块化设计能显著提升代码的可读性、可维护性和可重用性。Rust 作为现代系统编程语言,其模块和包管理机制为开发者提供了强有力的工具来组织代码。本文通过对比模块和包的概念及使用场景,探讨了 Rust 中的最佳实践。
64 2
|
5月前
|
Rust 编译器 开发者
Cargo:Rust的神秘助手,它将如何改变包管理游戏规则?
【8月更文挑战第31天】Rust的包管理器Cargo简化了依赖管理和构建过程,与编译器无缝集成,提供从依赖下载到编译构建的全套解决方案。通过`cargo new`创建项目后,编辑`Cargo.toml`文件即可轻松管理依赖。Cargo还支持自动生成文档、运行测试及发布代码,并通过`crates.io`平台方便查找和分享Rust库,是Rust生态系统中的重要工具,有助于提升开发者生产力。
72 1
|
5月前
|
编译器 开发工具 C语言
解锁QtCreator跨界神技!Windows下轻松驾驭OpenCV动态库,让你的跨平台开发如虎添翼,秒变视觉编程大师!
【8月更文挑战第4天】QtCreator是一款强大的跨平台IDE,便于创建多平台应用。本教程教你如何在Windows环境下集成OpenCV库至Qt项目。首先,下载匹配MinGW的OpenCV预编译版并解压。接着,在QtCreator中新建或打开项目,并在.pro文件中添加OpenCV的头文件和库文件路径。确保编译器设置正确。随后编写测试代码,例如加载和显示图片,并进行编译运行。完成这些步骤后,你就能在QtCreator中利用OpenCV进行图像处理开发了。
299 6
|
5月前
|
开发者 Ruby
神秘编程魔法惊现!Ruby 元编程究竟隐藏着怎样的力量?竟能让代码自我进化!
【8月更文挑战第31天】《Ruby元编程:让代码自我进化》介绍了Ruby元编程的魅力,通过动态修改代码结构和行为,实现代码自我进化。文章通过实例展示了如何使用`class_eval`动态添加属性和方法,以及通过别名修改现有方法。此外,还介绍了利用模块实现代码复用和扩展。元编程为开发者提供了极大的灵活性和创造力,使代码更加动态高效。
37 0
|
7月前
|
关系型数据库 应用服务中间件 PHP
程序员必知:学习Walle(一)
程序员必知:学习Walle(一)
182 0
|
8月前
|
IDE 算法 开发工具
Scratch编程v3.29.1少儿编程工具
SCRATCH是一款由麻省理工学院(MIT)媒体实验室开发的图形化编程语言和集成开发环境(IDE)。它的目标是让编程变得有趣、直观且易学,尤其是针对儿童和青少年群体。通过SCRATCH,用户可以通过拖放代码块的方式来创建动画、故事、游戏等多媒体项目,无需深入了解复杂的编程语法和结构。
135 2
|
存储 自动驾驶 测试技术
Mastering Makefile:模块化编程技巧与经验分享
在Linux项目管理中,Makefile是一个强大的工具,它可以帮助我们自动化编译和测试过程。然而,随着项目的增长,Makefile可能会变得越来越复杂,难以管理。在这篇文章中,我将分享一些模块化编程的技巧和经验,帮助你更好地管理你的Makefile。 使用反斜杠进行换行
115 0
|
安全 前端开发 索引
谈一谈|MkDocs介绍及应用
谈一谈|MkDocs介绍及应用
301 0
|
自然语言处理 Java 编译器
编译基础理论
  最近在读一本编译相关的书《两周自制脚本语言》,书中用Java来设计一种名为Stone的脚本语言。
编译基础理论