понедельник, 19 августа 2019 г.

A programmer: JavaScript #15

Написал скрипт с для проверки длины имени и фамилии на стороне клиента. Файл javascript с использованием eventListener. Но получалось, что для двух разных полей (имени и фамилии) нужно писать два идентичных скрипта, что неправильно. Я решил заменить два скрипта на один, заменив, соответственно, eventListener в скрипте на onchange в тэге. Но получалась странная ситуация: судя по туториалам, надо или внешний скрипт подключать ко всей странице, или писать onchang, но тогда скрипт надо писать в html'e. Или-или.

Посоветовали (дословно): "во внешнем файле функцию имей, файл подключи, а функцию эту вызывай". И вот получилось!



Разумеется, файл был подключен, а в полях было указано:

onchange="listen('first_name')"
onchange="listen('last_name')"


День прожит не зря :)

среда, 14 августа 2019 г.

A programmer: JavaScript #14

Хотел я, значит, запустить веб-сервер на NodeJS на удаленном сервере, чтобы протестировать одну штуку. Ну а там крутится Apache, разумеется. Сделать это (как выяснилось после долгих разбирательств) можно. Но если всякие разные настройки Апача для конкретный папок можно прописывать в файле .htaccess, то конкретно эти настройки нельзя - только в httpd.config, доступ к которому - только root. Следовательно, или обходиться апачем, или искать хостинг, который поддерживает Node JS, или покупать выделенный сервер, где сам себе root и делай, что хочешь.

воскресенье, 4 августа 2019 г.

A programmer: JavaScript #13


Сегодня речь о нескольких нюансах, которые знатокам покажутся очевидными, но у меня вызвали затруднения в последние дни.

1.
Когда мы экспортируем модуль, экспортируется не функция, а объект:
module.exports = { message: message }

то есть когда мы хотим вызвать функцию message из этого модуля, надо писать не message();, а message.message();.

Разумеется, предполагается, что модуль импортирован:
var message = require('./module.js');

2.
В других языках ответ на этот вопрос находился быстро, а тут пришлось поискать, как сравнить два объекта (а не значения переменных). Ответ вот:
Object.is(value1, value2);

3.
Ну и по мелочи - проверять все мелочи. Например, не путать атрибуты html-формы "id" и "name". Или не забывать про urlencodedParser, когда пишешь обработчик для POST-метода (а то у меня был шок, когда body вообще не обнаруживалось). Или просто уточнять синтаксис.