0

ASP で考えているパターンを次に示します。

を含むファイルmain.aspがあるとします。

<!--#include file="1.asp"-->

1.asp のコード

   ...my code...

これを次のようにリファクタリングすることは有効だと思いますか?

main.asp

Dim defined_1_asp = false
<!--#include file="1.asp"-->

1.asp

if (not defined_1_asp) then
    defined_1_asp = true
    ...my code...
end if

このようにして、一度だけ実行されるようにしながら、すべての SSI インクルードをリファクタリングできました。もちろん、インクルードの内容は含まれますが、実行は if によって保護されます。

従来の ASP ではifステートメントに独自のスコープがないことを読んだので、リファクタリングによってコードの動作が影響を受けることはないように思われます。

同じファイルが複数回 SSI インクルードされている場合、ボトルネックになりますか?

ご協力ありがとうございました。

ジェローム・ワグナー

4

3 に答える 3

2

私の知る限り、コードを複数回含めることはできません(識別子が重複するとエラーが発生します)。

クラスを作成し、必要に応じて作成します。

于 2010-08-27T13:16:01.983 に答える
0

コードを複数回含める必要がある場合は、それを Sub または Function にする必要があります。私の経験では、SSI はこれらの Sub と Function を格納するために使用されます。したがって、1.asp で Sub を作成し、main.asp でこれを行うことができます。

<!--#include file="1.asp"-->

Dim defined_1_asp = false

Call MySub

サブは次のようなものです

If Not defined_1_asp Then
  ...code here...
End Sub
于 2010-08-27T13:59:20.030 に答える
0

SSI インクルードは、ページのレンダリングが完了する前に行われます。つまり、1.asp が 2 回含まれているため、変数の宣言とあらゆる種類のエラーの問題が発生します。それはなんとしても避けるべきです。代わりにできること (そして、はるかに優れた設計とプログラミングの実践です) は、1.asp のコードを Sub に配置することです。これにより、ロジックで必要なときにいつでも sub を呼び出すことができます。それがより複雑な問題である場合は、1.asp のクラスを作成するか、それを多くのサブと関数に分割することができます。よりクリーンで、将来のメンテナンスに適しています。

于 2010-08-31T21:08:21.833 に答える