действительность классического ASP включает шаблон - PullRequest
0 голосов
/ 27 августа 2010

Вот шаблон, о котором я думаю в 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.

Я читал, что оператор if не имеет своей собственной области действия в классическом ASP, поэтому мне кажется, что рефакторинг не повлияет на поведение кода. 1031 *

Могу ли я попасть в узкое место, если одни и те же файлы включены в SSI несколько раз?

Большое спасибо за вашу помощь,

Джером Вагнер

Ответы [ 3 ]

2 голосов
/ 27 августа 2010

AFAIK Вы не можете включать код более одного раза (вы получите ошибки с дублирующими идентификаторами).

Я создаю классы, создавая их, если и когда это необходимо.

0 голосов
/ 01 сентября 2010

Включение SSI выполняется перед выполнением любого рендеринга страницы.Это означает, что 1.asp включается два раза, что дает вам проблемы с объявлениями переменных и всевозможными проблемами с ошибками.Этого следует избегать любой ценой.Вместо этого вы можете сделать (а это гораздо лучшая практика проектирования и программирования) - поместить код из 1.asp в Sub, после чего вы можете вызывать sub, когда этого требует логика.Если это более сложная проблема, вы можете создать классы для материала в 1.asp или разбить его на множество подпрограмм и функций.Гораздо чище и лучше для будущего обслуживания.

0 голосов
/ 27 августа 2010

Если вам нужно включить какой-либо фрагмент кода более одного раза, вы должны сделать его Sub или Function.По моему опыту, SSI используются для хранения этих подпрограмм и функций.Итак, что вы можете сделать, это создать Sub в 1.asp, а затем в main.asp сделать это:

...