财神爱欢乐——春色满园_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 财神爱欢乐——春色满园

财神爱欢乐——春色满园

 2014/3/31 19:04:10  欢乐的财神  博客园  我要评论(0)
  • 摘要:前言:这个文章涉及大量的截图,我估计明早完成不了,特例晚间发布出来!春天来了,是个花开的季节!其实我对花一无所知,但是我懂得欣赏,无论是含苞待放的嫩绿,还是挂满枝头的梅红,还是落了一地的粉色,都是春天的气息!有时候我就在想,如果世界上只有一种颜色,那么无论这种颜色多么好看,最多也只能算个单调,就像你把屏幕壁纸设置为纯色,它能好看到哪里去呢?前面很多篇文章谈到程序员应该怎么去思考问题,今天,说到使软件领域更加丰富多彩,我们最需要做的就是把自己的软件公布出来,免费和大家共享,通过使用时收到的反馈
  • 标签:

  前言:这个文章涉及大量的截图,我估计明早完成不了,特例晚间发布出来!

  春天来了,是个花开的季节!其实我对花一无所知,但是我懂得欣赏,无论是含苞待放的嫩绿,还是挂满枝头的梅红,还是落了一地的粉色,都是春天的气息!有时候我就在想,如果世界上只有一种颜色,那么无论这种颜色多么好看,最多也只能算个单调,就像你把屏幕壁纸设置为纯色,它能好看到哪里去呢? 

  前面很多篇文章谈到程序员应该怎么去思考问题,今天,说到使软件领域更加丰富多彩,我们最需要做的就是把自己的软件公布出来,免费和大家共享,通过使用时收到的反馈,找到软件的不足,以及继续前进的方向! 

  关于这个话题,我思考了很久,本来想了很多的台词来鼓励大家公布各自的软件,但是终究还是纠结在一句话上:如果我自己都不能带头公布自己的作品,又怎么要求大家这么去做呢? 

  所以,特意找出了一份我的设计,花了一些时间,在最新的.net 4.5下编译通过,今天先简单演示一下用法,后续会慢慢的讲解其中涉及的方法和原理,还有,我会持续更新这个组件,并结合每个工作日的博文,做同步的探索和讲解。 

  好吧,这家伙叫CaiShen(可以简称CS),追求极致简化的ajax开发。使用方法如下

  1、  新建一个基于.net 4.5的web项目,项目名自定义(比如:WebTest)

  2、  引用CaiShen.dll

  3、  新建Global.asax文件,写入如下代码        

  4、  根目录下新建ajax目录,并在ajax目录内新建类文件,写入代码,如:

  5、  根目录下建立html文件,写入代码

  6、  尝试运行(代码里打了断点为了看x的值)

  以上就是我的CaiShen组件,它成功的接收到了后台传来的自定义对象(x=1,y=2),而你需要做的就是引入jquery 和一个虚拟js文件“/jspackage”,然后,在后台写一个类justForTest,类里有个方法test,于是前台js的$A对象里就对应的有justForTest.test方法,关键是:这一切是自动的!也就是在后台写方法,前台自动生成可执行代码。 

  请原谅我占用了四个全局变量 $A、 $B 、$C 、$D,其中只有$A对你有用,其他都是保留名称。$A是全局入口,任何在ajax目录下的类都会被“编译”为$A的属性,每个类的方法都会被“编译”成对应属性的方法,比如justForTest类和它的test方法,就“编译”成了$A.justForTest.test方法,很容易理解吧! 

  恩,参数的部分也是自动的,比如上图中的”hehe”这个字符串就被自动“注入”到后台的test方法里,你可以理解为对号入座!

  恩,返回值的部分也是自动的,后台只要return一个obj,不管是预定义的还是匿名的,都会被自动包装成js对象,就像上图中的{x:1,y:2}。这里是同步执行的,就好像在调用c#的代码一样,不过除此之外,函数还能异步执行,需要做的就是给方法加入一个回调函数,比如

  

  于是,只要是加了回调函数的表达式就会异步执行,返回的对象会被填入function的第一个参数里!否则,函数就同步执行,是不是很直观呢? 

  现在后台的那些方法全部被前台搞定了,这就足够了么?答案是否定的,你可能已经注意到了:后台的类或者方法上面有一堆特性,比如JsNoteForClass、JsNoteForMethod、JsNoteForParameter等等,它们的作用就是便于开发时拥有全面的引导。 

  我们新建一个html文件继续,写入如下代码并运行看效果

 

  注意到我们这回引入的是http://localhost:1928/jsfortest 这个js文件,这个虚拟js文件在你输入$A并打点号的同时,就列出了justForTest这个成员(还有其他自带的成员,如toString,请自动忽略之),把光标移到justForTest上去,会看到一段提示文本“测试用的”,而这段文本正是前面写在JsNoteForClass里面的,你应该懂那些特性标注是干什么的了吧!让我们继续

 DBA3BE856B.png" alt="" />

  可以看到选择了justForTest之后再打点号,就自动列出了test方法,光标移上去就看到了JsNoteForMethod里面标注的话语,让我们继续

 

  可以看到,选择了test之后,打括号,就出现了参数列表,并且每个参数都标注了JsNoteForParameter里面的话语,仔细看的话,haha参数变成了String_haha ,它告诉我们haha是个字符串类型。 

  说到这里你可能就已经明白了,”/jspackage”是运行时候用的,”/jsfortest”是开发的时候用的,它提供了完备的智能提示文档,详尽到每个类、每个方法、每个参数、每个类型! 

  当然了,不仅仅可以有一个类,所有在ajax下的类,都会加入$A,它们被原样“编译”为$A的属性,就这么简单。 

  需要说明的是,Global文件里,继承了CaiShen组件的 Web.Global类,需要重写preAll方法,有一点很重要的是:一定要执行setInfo(你的项目的命名空间),其实这个方法还有很多重载,比如可以修改ajax目录的名称(默认是”ajax”,这也是为什么要建立ajax目录)。当然了,默认的命名空间是”web”,如果你的项目正好叫这个名字,就不必重写preAll方法了,虽然这几率不大! 

  我把测试的web项目打包提供下载,你可以试试、看看、玩玩,同时CaiShen.dll也在里面哦! 

  来吧,have a try!

 下载地址:http://files.cnblogs.com/caishen/WebTest2014-03-30-21-10-40.rar

  • 相关文章
发表评论
用户名: 匿名