Отправка метода объекта в ответ NodeJS - PullRequest
1 голос
/ 12 января 2020

мои требования - отправить метод объекта в качестве ответа, используя express. Это сделано для того, чтобы я мог создать динамический c onClick js код во внешнем интерфейсе.

const data = {
  message: "Hi",
  click: () => {
    console.log("Hello world");
  }
};
res.send(data);

Я попытался отправить его, но метод не отправил. Журнал для приведенного выше примера кода в интерфейсе JS выглядит следующим образом.

{message: "Hi"}

Мой обходной путь - отправить всю функцию в виде строки, а затем использовать Конструктор функций для разобрать строку. Это сработало, но я читал другие записи на форуме, где говорилось, что разбирать строку как функцию - очень плохая практика.

Пожалуйста, предложите способы, с помощью которых я могу решить эту проблему.

1 Ответ

0 голосов
/ 12 января 2020

У вас есть два варианта:

  1. Используйте конструктор Function как есть. Это нормально если , вы можете доверять тому, кому вы получаете строку, из которой вы конвертируете в код. Чего не следует делать, так это использовать его, когда вам не нужно преобразовывать строку в функцию (например, есть лучший способ), или со строкой из источника, которому вы не можете доверять.

  2. Не отправлять динамические c обработчики вообще. Вместо этого используйте набор стандартных обработчиков в сценарии, который вы включаете в свою страницу:

    const handlers = {
        sayHi() {
            alert("Hello world");
        },
        doSomething() {
            // ...
        },
        doSomethingElse() {
            // ...
        }
    };
    

    и отправьте обратно имя обработчика ("sayHi", "doSomething", "doSomethingElse"), а не код обработчика. Затем вы используете обработчик через handlers[name].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...