http://a9engine.sf.net
学习和交流,分享个人经验,特将主页的js-driven心得整理到a9engine和a9text
如果希望有更高更多更好的应用,请大家多关注JSI(http://jsintegration.sourceforge.net/)
================================================================
1. a9engine 是什么?
a9engine是一套轻量级的js引擎,为web开发提供便捷的js管理.
a9engine的产生和应用都出于个人目的,这一点从名字上就可以看到:)
我本人很乐意分享自己的心得和成果,但不要试图期望我把a9engine做成产品.
1.1. a9engine 能做什么
1) 按需载入js
使用require方法,可以同步载入js,并选择释放的作用域.
2) 根据配置,自动解决js的依赖关系
根据包配置文件__info__.js,先于脚本载入所依赖的js
3) 脚本隔离,解决名词冲突.
当a.js和b.js都有Func方法时,可以使用a.Func和b.Func来防止方法覆盖
4) 合并脚本
可以把依赖的脚本,做为脚本的一部分放在同一个名词空间释放.
1.2. a9engine 不能做什么
1) 简单的脚本管理以外的事情,比如ui,算法,或复杂逻辑.
2) 完全跨浏览器问题.
1.3. 同类产品有哪些?
目前知道的有JSI,他是一个优秀的框架,同时提供了很多产品级的方案.
但我个人觉得,在我个人应用上有些大材小用了,甚至有些冗余和不灵活.
而且,在随后的a9text应用上,我更倾向于自己的a9engine.
2. a9engine 主要的目录结构:
| readme.txt 正在阅读的文本
| config.js 配置文件
| a9engine.js 核心脚本
|
+- __testdemo__ 各个功能的测试和演示
+- doc 文档
+- com/trydofor/a9text **重点内容
+- com/trydofor/a9js
| +- http
| | __info__.js 包描述文件
| | xhr.js XmlHttpRequest类
| +- code
| | __info__.js 包描述文件
| | des.js Des算法类
| | md5.js Md5算法类
| | encoder.js 编码转换类
| +- format
| | __info__.js 包描述文件
| | date.js 类是java中DateFormat类的功能
3. a9engine 约定和规则
*) js文件,编码为 UTF8(BOM),避免非ascii字符载入错误.
*) 使用空格(0x20)缩排,而不是tab(0x09),尽管这样会使文件庞大.
*) js中成员,需要var声明作用域,最大限度保持名词空间清洁.
*) 使用python和java的命名规则.
*) 包名尽量以字母开头,使用小写英数,否则以类路径导入时出错.
*) '__'开头和结尾的成员或文件,表示私有.
================================================================================
更多内容,请参看
源代码(*.js)
doc/
testdemo/