This commit is contained in:
Ilya Kantor 2015-05-04 11:25:18 +03:00
parent 2a454aff13
commit ebb6e8ec41
7 changed files with 6 additions and 17 deletions

View file

@ -60,9 +60,7 @@
...Но как использовать на сервере шаблон с JavaScript, если его основной язык -- PHP, Ruby, Java? ...Но как использовать на сервере шаблон с JavaScript, если его основной язык -- PHP, Ruby, Java?
Эту проблему решили обошли быстро. Эту проблему можно обойти. На сервер, использующем PHP, Ruby, Java или какой-то другой язык, дополнительно ставится виртуальная машина [V8](http://code.google.com/p/v8/) и настраивается интеграция с ней. Почти все платформы это умеют.
На сервер, использующем PHP, Ruby, Java или какой-то другой язык, дополнительно ставится виртуальная машина [V8](http://code.google.com/p/v8/) и настраивается интеграция с ней. Почти все платформы это умеют.
После этого становится возможным запускать JavaScript-шаблоны и передавать им данные в виде объектов, массивов и так далее. После этого становится возможным запускать JavaScript-шаблоны и передавать им данные в виде объектов, массивов и так далее.

View file

@ -17,10 +17,6 @@
Замечания: Замечания:
<ul> <ul>
<li>Код не должен зависеть от конкретных размеров мяча и поля.</li> <li>Код не должен зависеть от конкретных размеров мяча и поля.</li>
<li>Текущий HTML/CSS нельзя менять, можно лишь "украшать" (анимация).</li>
<li>Вам пригодятся свойства `event.clientX/event.clientY`</li> <li>Вам пригодятся свойства `event.clientX/event.clientY`</li>
</ul> </ul>
P.S. Центрировать мяч можно и при помощи CSS, но JavaScript в перспективе позволит делать это гибче и определять позицию более динамически.

View file

@ -129,7 +129,7 @@ while (target != this) {
table.onclick = function(event) { table.onclick = function(event) {
var target = event.target; var target = event.target;
var td = event.target.closest('td'); var td = target.closest('td');
if (!td) return; // клик вне <td>, не интересует if (!td) return; // клик вне <td>, не интересует
// если клик на td, но вне этой таблицы (возможно при вложенных таблицах) // если клик на td, но вне этой таблицы (возможно при вложенных таблицах)

View file

@ -54,7 +54,7 @@ var event = new Event(тип события[, флаги]);
Но код, который генерирует событие, может предусматривать какие-то ещё действия после `dispatchEvent`. Но код, который генерирует событие, может предусматривать какие-то ещё действия после `dispatchEvent`.
Вызов `event.preventDefault()` является возможностью для обработчика событие сообщить в сгенерировавший событие код, что эти действия продолжать не надо. Вызов `event.preventDefault()` является возможностью для обработчика события сообщить в сгенерировавший событие код, что эти действия продолжать не надо.
В примере ниже есть функция `hide()`, которая при вызове генерирует событие `hide` на элементе `#rabbit`, уведомляя всех интересующихся, что кролик собирается спрятаться. В примере ниже есть функция `hide()`, которая при вызове генерирует событие `hide` на элементе `#rabbit`, уведомляя всех интересующихся, что кролик собирается спрятаться.

View file

@ -172,7 +172,7 @@ table.onmouseout = function(event) {
``` ```
[online] [online]
[codetabs height=450 src="mouseenter-mouseleave-delegation"] [codetabs height=480 src="mouseenter-mouseleave-delegation"]
[/online] [/online]
@ -194,7 +194,7 @@ table.onmouseout = function(event) {
[online] [online]
Детали кода вы можете посмотреть в примере ниже, который демонстрирует этот подход: Детали кода вы можете посмотреть в примере ниже, который демонстрирует этот подход:
[codetabs height=450 src="mouseenter-mouseleave-delegation-2"] [codetabs height=380 src="mouseenter-mouseleave-delegation-2"]
Попробуйте по-разному, быстро или медленно заходить и выходить в ячейки таблицы. Обработчики `mouseover/mouseout` стоят на `table`, но при помощи делегирования корректно обрабатывают вход-выход.[/online] Попробуйте по-разному, быстро или медленно заходить и выходить в ячейки таблицы. Обработчики `mouseover/mouseout` стоят на `table`, но при помощи делегирования корректно обрабатывают вход-выход.[/online]

View file

@ -67,11 +67,6 @@
</table> </table>
<textarea id="text"></textarea>
<input type="button" onclick="text.value=''" value="Очистить">
<script src="script.js"></script> <script src="script.js"></script>
</body> </body>

View file

@ -558,7 +558,7 @@ var compiled = _.template(tmpl, {sourceURL: '/template/menu-template'});
<ul> <ul>
<li>Шаблон -- это строка со специальными вставками кода `<% ... %>` или переменных `<%- expr ->`, `<%= expr ->`.</li> <li>Шаблон -- это строка со специальными вставками кода `<% ... %>` или переменных `<%- expr ->`, `<%= expr ->`.</li>
<li>Вызов `_.template(tmpl)` превращает шаблон `tmpl` в функцию, которой в дальнейшем передаются данные -- <li>Вызов `_.template(tmpl)` превращает шаблон `tmpl` в функцию, которой в дальнейшем передаются данные --
и она генерирует HTML с ними. Можно вызвать передать данные сразу в `_.template` вторым аргументом.</li> и она генерирует HTML с ними.</li>
</ul> </ul>
В этой главе мы рассмотрели хранение шаблонов в документе, при помощи `<script>` с нестандартным `type`. Конечно, есть и другие способы, можно хранить шаблоны и в отдельном файле, если шаблонная система или система сборки проектов это позволяют. В этой главе мы рассмотрели хранение шаблонов в документе, при помощи `<script>` с нестандартным `type`. Конечно, есть и другие способы, можно хранить шаблоны и в отдельном файле, если шаблонная система или система сборки проектов это позволяют.