26
2019.2
单文件入口
作者: POPASP
采用单文件入口进行项目部署和访问,无论完成什么功能,一个项目都有一个统一(但不一定是唯一)的入口。应该说,所有项目都是从入口文件开始的,并且所有的项目的入口文件是类似的,入口文件中主要包括:
* 引入框架 (必须)
* 引入函数文件或外部文件(可选)
* 定义项目路径 (必须)
* 定义框架路径 (根据情况而定)
* 执行框架入口函数(必须)
下面,我们从建站到使用,详细讲解一下。
### 1、创建网站用的文件夹
创建一个文件夹“D:/asp/studypop/”
### 2、添加网站
在IIS中添加一个网站,如下所示:
[](http://www.popasp.com/images/31/021.jpg "在IIS中创建一个网站")
### 3、进行asp设置
[](http://www.popasp.com/images/31/022.jpg "在IIS中创建一个网站")
图中红框的内容如果为false,则需要把它们设置为true。
### 4、建立入口文件
下载POPASP3.1,并放在studypop的上级目录,然后创建一个入口文件“D:/asp/studypop/index.asp”,内容如下
```brush:vbscript
<%
'项目路径,2.3版本以前用 Const APP_PATH = "./home"
'项目文件夹,部署项目时,不要手工创建home文件夹,否则无法进行项目部署
POP_MVC.appPath = "./home"
'在使用多文件入口,项目部署时使用POP_MVC.start,部署完后用POP_MVC.run
'而采用单文件入口,项目部署完成前后start方法不变。
POP_MVC.start
%>
```
### 5、项目部署
打开浏览器,输入地址并运行:
` http://127.0.0.1:1254/index.asp `
就会看到欢迎页面:
[](http://www.popasp.com/images/31/023.jpg "POPASP项目部署")
项目部署后,会在网站根目录下生成一些文件(夹)。
再次刷新,会看到POPASP的控制台。
[](http://www.popasp.com/images/31/024.jpg "POPASP项目部署")
入口文件并不一定都是指index.asp 文件,因为我们可以为不同的项目创建不同的入口文件,例如,前台项目的入口文件为index.asp ,后台项目的入口文件可能是admin.asp。
单文件入口与多文件入口不同,它采用的类似ThinkPHP框架的架构,而多文件入口是自创的一套模式,单文件入口不需要使用多文件入口的`Call A_("类名/方法名")` 。
POPASP1.X框架采用单文件入口,POPASP2.X~3.0采用多文件入口,POPASP3.1之后可以采用多文件入口与可以采用单文件入口,但是单文件入口有诸多好处,所以3.1的帮助文档不再讲解多文件入口,而只讲单文件入口,如果想了解多文件入口,请查阅[POPASP2.3帮助文档][POPASP2.3帮助文档]
[POPASP2.3帮助文档]: http://www.popasp.com/?api23。
### iaspcms 入口文件举例
对于具体项目的入口文件,往往不可能仅仅只有几行代码。我们以popasp3.1制作的iaspcms举例,它的入口文件代码如下:
```brush:vb
<%
'如果给该文件重命名,系统将无法正常运行
'指定框架路径
POP_MVC.mvc_dir = "admin123/popasp_3.1/"
POP_MVC.appPath = "admin123/home"
'内存缓存
'application.contents.removeAll
'POP_MVC.applicationOn = 1
dim setting,config
POP_MVC.init
POP_MVC.config("sitePath") = POP_MVC.root_path
POP_MVC.config("DB_PATH") = POP_MVC.config("sitePath") & POP_MVC.config("DB_PATH")
'得到配置
set config = B_("Config").field("ConfigName,ConfigValue").getObject2
'配置表验证
if config is nothing then
POP_MVC.exit( "网站配置表被破坏,无法打开" )
end if
'网站禁用
if config.siteMode = 0 then POP_MVC.exit( config.siteHelp )
Private script_name,home_page,LanguageAlias,entranceasp
script_name = LCase(POP_MVC.file.basename( Array(POP_MVC.vars("SCRIPT_NAME") , 1) ))
'得到首页与语言
if script_name = "popasp_inc" then
LanguageAlias = ""
elseif script_name = "index" or script_name = "default" then
home_page = "./index.html"
elseif script_name = "wap" then
home_page = "./wap/index.html"
POP_MVC.config("isWap") = 1
elseif inStr(script_name , "wap" ) > 1 then
LanguageAlias = left( script_name , len(script_name) - 3 )
home_page = "./" & LanguageAlias & "/wap/index.html"
POP_MVC.config("isWap") = 1
else
LanguageAlias = script_name
home_page = "./" & LanguageAlias & "/index.html"
end if
'打开静态页面
if config.runMode = 1 and Request.QueryString = "" then
if POP_MVC.file.isFile( home_page ) then
response.write POP_MVC.file_get_contents( home_page )
response.end
end if
end if
if LanguageAlias = "" then
set setting = B_("Language").where("IsDefault=1").getObject
POP_MVC.config("ENTRY_PAGE") = POP_MVC.config("INDEX_PAGE")
else
set setting = B_("Language").where("Alias = '" & LanguageAlias & "'").getObject
POP_MVC.config("ENTRY_PAGE") = LanguageAlias & ".asp"
end if
'网站未设置默认语言
if setting is nothing then
POP_MVC.exit( "网站未设置有效语言" )
end if
'该语言网站关闭
if setting.LanguageStatus = 0 then
POP_MVC.exit( setting.LanguageName & " 网站关闭" )
end if
if POP_MVC.config("isWap") = 1 then
setting.htmlFilePath = "wap"
if LanguageAlias = "" then
POP_MVC.config("ENTRY_PAGE") = "wap.asp"
else
POP_MVC.config("ENTRY_PAGE") = LanguageAlias & "wap.asp"
end if
else
if LanguageAlias = "" then
POP_MVC.config("ENTRY_PAGE") = POP_MVC.config("INDEX_PAGE")
else
POP_MVC.config("ENTRY_PAGE") = LanguageAlias & ".asp"
end if
end if
'水印
if config.waterType = 1 then
POP_MVC.config("WATERMARK_PATH") = config.waterMarkFont
else
POP_MVC.config("WATERMARK_PATH") = config.waterMarkPic
end if
POP_MVC.start
%>
```