代碼僅實作了 MVC模式和 json處理,算不上是框架,只是探討這種模式是否有助于理清開發思路。
實作了 模塊化,web 和 api 分開處理,提供 API 除錯頁面。
<%@ Language="JavaScript" codepage="65001" %><%
// 引導
function boot() {
var route = (Request.QueryString("r").Item || "").split("/");
var model = getModel(route), c = 0;
while(true) {
var op = (route[c++] || "List").toLowerCase();
if(!model[op]) return tojson({ err: "403 Object Not Found" });
if("function" != typeof model[op]) { model = model[op]; continue; }
var rs = model[op]();
return rs instanceof Object ? tojson(rs) : rs;
}
}
// 模塊定義
function getModel(route) {
// 展示 API 介面除錯界面
var showApi = function(apipath) {
if(!apipath) apipath = "Api";
sys.apipath = "?r=" + (Request.QueryString("r").item || "").replace(/\w+$/, "") + apipath + "/";
// 可以從此處下載:http://boomstone.net/AspLib/views/apidoc.html
%><!-- #include virtual="/AspLib/views/apidoc.html" --><%
};
var root = {
// 分類模塊
cata: {
api: {
Memo: [ "分類", "既可 ajax 呼叫,也可 通過 this.api 呼叫。" ],
ListDoc: [ "分類串列", "", "?r=Cata/Api/List" ],
list: function() { return { rows: new Array }; },
ShowDoc: [ "分類查看" ],
show: function() { return { title: "來自查看介面資料" }; },
SaveDoc: [ "分類保存" ],
save: function() { return { msg: "Save OK." }; },
DropDoc: [ "分類洗掉" ],
drop: function() { return { msg: "Drop OK." }; }
},
list: function() {
var rs = this.api.list();
return "此處 include 分類串列模板頁面: " + tojson(rs);
},
// ?r=Cata/Show/5
show: function() {
var rs = this.api.show();
return "Cata Show ID[" + ~~route[2] + "]: " + tojson(rs);
},
// ?r=Cata/ApiDoc
apidoc: function() { return showApi.call(this.api); }
},
// 資訊模塊
info: {
api: {
list: function() { return { rows: new Array }; },
show: function() { return new Object; },
save: function() { return { msg: "Save OK." }; },
drop: function() { return { msg: "Drop OK." }; }
},
list: function() { return "Info List"; },
show: function() { return "Info Show"; },
apidoc: function() { return showApi.call(this.api); }
}
}
return root;
}
// 全域函式定義
function tojson(str) {
if(sys.JSON) return sys.JSON.stringify(str);
return getJson().stringify(str);
}
function fromjson(str) {
if(sys.JSON) return sys.JSON.parse(str);
return getJson().parse(str);
}
function getJson() {
var doc = new ActiveXObject("htmlfile");
doc.write("<meta http-equiv='X-UA-Compatible' content='IE=edge' />");
return sys.JSON = doc.frames.JSON;
}
var sys = new Object;
Response.Write(boot());
%>
uj5u.com熱心網友回復:
所有功能都寫一級路由,和分模塊不限深度的路由對比,哪種更合適?感覺各有優缺點。小一點的專案,一級路由應該夠了。大一點的專案,分模塊比較合適,但 ASP 這種語言,感覺大一點的專案更適合用新的asp檔案去做不同模塊
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/271793.html
標籤:ASP
上一篇:那個大佬幫幫忙 DateTimePicker組件 點擊里面選擇時間要第二天的零點,不是默認當天的日期和時間,也不是默認顯示在上面,要點擊選擇時間觸發的
