one.asp 複数のプロジェクト、関数ライブラリ、クラスライブラリを1つのバージョンのメソッドに統合
2022-01-16 07:18:41
先日、one.phpを使ってプロジェクト全体を1つのphpファイルにパッケージ化したブログを書いたところ、一部のユーザーから「aspの全体版を書いてほしい」という要望がありました。
簡単な応用シナリオをあげると、XMLとJSONの出力に対応した小さなAPIシステムを開発しました。違いは、基本バージョン (dev/dev.asp) は Access にしか対応しておらず、VIP バージョン (dev/vip.asp) は Access + SQL Server に対応しているので、VIP バージョンでは現在のものに加えて sqlserver サポートを追加し、設定項目を追加する必要があることです。開発工程は、普通に開発すればいいだけです。
開発後、one.asp は index.asp と vip.asp の2つのバージョンにパッケージ化され、プログラム全体は別ファイルとなります。
次の図は、パース処理を示しています。
テストコード一式は、以下のサイトでご覧になれます。 oneasp.rar ダウンロード
コアとなるコードは以下の通りです。
' ====================================================
' Class name: One
' Author: mqycn
' Blog: http://www.miaoqiyuan.cn
' Source code: http://www.miaoqiyuan.cn/p/one-php
' Description: multi-project function library, class library unified into one version of the method
' ====================================================
Class OneAsp
Private FSO
Private Root
Private Sub Class_Initialize()
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
End Sub
Private Sub Class_Terminate()
Set FSO = Nothing
End Sub
Public Function Run(ByVal sourceFile, ByVal saveFile)
Run = "<hr><b>Input:</b>" & sourceFile & "<br><b>Result:</b>" & Save( saveFile, Include(sourceFile))
End Function
Public Function Include(ByVal path)
Dim tmpPath, tmpItem, arrPath, index
tmpPath = ""
arrPath = Split(path, "/")
For index = 0 To UBound(arrPath) - 1
tmpItem = arrPath(index)
tmpPath = tmpPath & tmpItem & "/"
Next
Include = Parse(tmpPath, arrPath(UBound(arrPath)))
End Function
Private Function Parse(ByVal root, ByVal fileName)
Call SetRoot(root)
Dim html
html = OpenRead(fileName)
Dim preg, pregResult
Set preg = New Regexp
preg.pattern = "<! --#include file=""([^""]*)""-->"
preg.global = True
preg.ignorecase = True
Dim htmlInclude
Set pregResult = preg.execute(html)
For Each htmlInclude In pregResult
html = Replace(html, htmlInclude, Include(root & htmlInclude.submatches(0)))
Next
Parse = "<% '" & root & fileName & " Start %" & ">" & vbCrLf & html & vbCrLf & & quot;<% '" & root & fileName & " End %" & "> " & vbCrLf
End Function
Private Function SetRoot(ByVal rootPath)
If Right(rootPath, 1) <> "/" Then rootPath = rootPath & "/"
Root = rootPath
End Function
Private Function RealPath(ByVal path)
RealPath = Server.Mappath(Root & path)
End Function
Private Function OpenRead(ByVal path)
Dim txtFile
Set txtFile = FSO.OpenTextFile(RealPath(path))
OpenRead = txtFile.ReadAll()
txtFile.close
On Error GoTo 0
End Function
Public Function Save(ByVal path, ByVal body)
Dim txtFile
Set txtFile = FSO.CreateTextFile(Server.Mappath(path))
txtFile.write body
txtFile.close
Set txtFile = Nothing
Save = path
End Function
End Class
また、Call new OneAsp.run (開発版、パッケージ版) を使って dev.asp に含まれる全てのコードを index.asp にパックするのは非常に簡単で、解析された内容だけを取得したい場合は Response.Write Server.Htmlencode(Call new OneAsp.include(development version)) で可能です。
関連
-
ASPで短い日付を0から長い2つの日付に書式設定する
-
iis7でaspの行番号が不正確な問題の解決法
-
SELECT ドロップダウンメニューで VALUE と TEXT 値を同時に取得する ASP コード
-
ASPでフォルダーの存在を検出し、存在しない場合は自動的に作成する方法
-
ASPメッセージプロンプト機能およびリターンまたはターン
-
perl で書かれた乱数話法プログラム (rand random function)
-
Perl 変数の使い方を説明するための Perl 構文
-
windows perlでフラッシュ後にスクリプトが終了しないようにする方法
-
Perl 構文による Perl 演算子の使用法ガイド
-
perlの尖ったブラケット演算子(<>)について
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
オンライン圧縮・解凍のためのASPコード
-
aspで仮想ディレクトリのルートパスを取得するコード
-
aspはプロジェクトの終了時刻を計算するためにWeekday関数を使用します。
-
asp バッチの追加・変更・削除操作のサンプルコード
-
msxml3.dll Error 800c0019 システムエラー:-2146697191 解決策
-
SharePoint Server 2019の新機能をご紹介します。
-
Perlの単一行コメントと複数行コメントの紹介
-
スペースがセパレータである場合の perl qw 問題の解決法
-
perl による生物学的突然変異のランダムシミュレーションコード
-
重複するコンテンツ(重複する行+重複するフィールドの配列)を削除するための perl スクリプトコード