原创MVC模式ASP框架-Javascript版本
框架说明:
1.框架还没有完全开发好,完善了模板解析的主要功能,不过我在这里会不定期的更新直至整个框架的完成。
2.框架统一采用Javascript脚本语言开发,因为本人还是不习惯VBScript,实在抱歉。
3.框架采用MVC模式,动态生成缓存文件以供系统调用。
4.框架借鉴了PHP框架实现思路。
语法说明:
1.不再使用关键字var来定义变量了,而是采用$来直接定义变量,比如$sitename,目的是和客户端有所区分。
2.常量采用全大写的格式,比如$_SGLOBAL
3.系统频繁采用静态对象,比如$_SGLOBAL,$_SC,$_SCONFIG...目的是模拟PHP的关联数组,个人感觉它非常好用且结构清晰。
好了,暂时就这些,以后如有其它约定还会在这里补充的。
MVC系统一定有它的框架结构,我的框架结构如下:
./
admin - 后台管理目录
data - 系统缓存,数据库备份目录
/tpl_cache 模板生成的缓存都在这里了
image - 图像目录
source - 核心文件目录
template - 模板目录
/default 系统默认模板都在这里了(这个是必须要有的目录)
/image 模板相关的图像目录
/blue 自定义模板目录(自己都可以随意定义,可能还有好多其他的模板目录)
/...(其它的一些自定义模板目录就不一一举例了,具体格式可以参照default模板)
common.asp 网站公共文件
config.asp 网站配置文件
index.asp 网站入口文件
好,框架结构定下来了,不会有大的变动,只会有很细微的变动,也会在这里随时更新的。
下面我先把完成的一些代码贴出来。
common.asp - 网站公共文件
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="936"%>
<%
IN_RICHMOND = true;
X_VER = '1.0';
X_RELEASE = '20090401';
FSO = Server.CreateObject('Scripting.FileSystemObject');
XMLHTTP = Server.CreateObject("Microsoft.XMLHTTP");
STREAM = Server.CreateObject("ADODB.STREAM");
$_SGLOBAL = {
};
%>
<!--#include file = './config.asp'-->
<!--#include file = './source/function_common.asp'-->
<!--#include file = './source/function_template.asp'-->
<!--#include file = './source/class_database.asp'-->
<!--#include file = './source/class_data_grid.asp'-->
<%
//这里添加更多代码
%>
大家可以看到,首先是定义了网站的一些常量,其次包含了一些核心文件,比如公共函数库、模板、数据库、分页,后续可能还会加入更多这样的类库。
config.asp - 网站配置文件
<%
/**
* page build by Richmond 09-04-06
*/
//配置参数
$_SC = {
dbhost: '(local)',//服务器地址
dbuser: 'Richmond',//用户
dbpw: '******',//密码
dbname: 'database'//数据库
//...
};
$_SCONFIG = {
template: 'default'
//...
};
%>
配置文件就是定义静态对象来存储了。
./source/function_common.asp 网站公共函数库(后续会不断的更新)
<%
/**
* page build by Richmond 09-04-06
*/
//测字符串实际长度
String.prototype.tlength = function(){
$arr = this.match(/[^\x00-\xff]/ig);
return this.length + ($arr == null ? 0 : $arr.length);
}
//字符串左取
String.prototype.left = function($num, $mode){
if(!/\d+/.test($num)) return(this);
$str = this.substr(0, $num);
if(!$mode) return $str;
$n = $str.tlength()-$str.length;
$num -= parseInt($n/2);
return this.substr(0, $num);
}
//字符串右取
String.prototype.right = function($num, $mode){
if(!/\d+/.test($num)) return(this);
$str = this.substr(this.length-$num);
&nb