Преимущество проверки на стороне сервера с помощью проверки на стороне клиента заключается в том, что проверка на стороне клиента может быть обойдена / изменена:
Короче - всегда всегда проверяйте серверную сторону, а затем рассматривайте проверку на стороне клиента как добавленную «дополнительную», чтобы улучшить работу конечного пользователя .
VARIABLE = value
установка Normal переменной - оценивает в нем, рекурсивно расширены, когда переменная используется, не, когда это объявило
VARIABLE := value
, Установка переменной с простым расширением значений внутри - оценивает в нем, расширены во время объявления.
VARIABLE ?= value
Установка переменной, только если это не имеет значения
VARIABLE += value
Добавление предоставленного значения к существующему значению (или установка на то значение, если переменная не существовала)
Когда Вы используете VARIABLE = value
, если value
на самом деле ссылка на другую переменную, то значение только определяется, когда VARIABLE
используется. Это лучше всего проиллюстрировано с примером:
VAL = foo
VARIABLE = $(VAL)
VAL = bar
# VARIABLE and VAL will both evaluate to "bar"
, Когда Вы используете VARIABLE := value
, Вы получаете значение value
, как это теперь . Например:
VAL = foo
VARIABLE := $(VAL)
VAL = bar
# VAL will evaluate to "bar", but VARIABLE will evaluate to "foo"
Используя VARIABLE ?= val
средства, что Вы только устанавливаете значение VARIABLE
, если VARIABLE
уже не установлен. Если это уже не установлено, установка значения задерживается, до VARIABLE
используется (в качестве в примере 1).
VARIABLE += value
просто добавляет value
к [1 113]. Фактическое значение [1 114] определяется, как это было, когда это было первоначально установлено, с помощью или =
или :=
.
Используя [1 128] =
причины переменная, которой присвоят значение. Если переменная уже имела значение, она заменяется. Это значение будет расширено, когда оно будет использоваться. Например:
HELLO = world
HELLO_WORLD = $(HELLO) world!
# This echoes "world world!"
echo $(HELLO_WORLD)
HELLO = hello
# This echoes "hello world!"
echo $(HELLO_WORLD)
Используя [1 129] :=
подобно использованию =
. Однако вместо значения, расширяемого, когда это используется, это расширено во время присвоения. Например:
HELLO = world
HELLO_WORLD := $(HELLO) world!
# This echoes "world world!"
echo $(HELLO_WORLD)
HELLO = hello
# Still echoes "world world!"
echo $(HELLO_WORLD)
HELLO_WORLD := $(HELLO) world!
# This echoes "hello world!"
echo $(HELLO_WORLD)
Используя [1 130] ?=
присваивает переменной значение эквивалентность , переменная не была ранее присвоена. Если переменной ранее присвоили пустое значение (VAR=
), это все еще считают установленным , я думаю . Иначе, функции точно как =
.
Используя [1 131] +=
похож на использование =
, но вместо того, чтобы заменить значение, значение добавляется к текущему с промежуточным пространством. Если переменная была ранее установлена с [1 111], она расширена , я думаю . Получающееся значение расширено, когда оно используется , я думаю . Например:
HELLO_WORLD = hello
HELLO_WORLD += world!
# This echoes "hello world!"
echo $(HELLO_WORLD)
, Если бы что-то как [1 112] использовалось, рекурсия закончилась бы, который, скорее всего, закончил бы выполнение Вашего Make-файла. Если бы A := $(A) $(B)
использовались, результат не был бы тем же самым как использование +=
, потому что B
расширен с [1 116], тогда как +=
не заставил бы B
быть расширенным.