Как создать класс-оболочку для плагина node.js - PullRequest
0 голосов
/ 08 февраля 2020

Итак, я новичок в JavaScript, и у меня есть проект, в котором я использую модуль cookie Node.js, найденный здесь. Мне удалось создать файлы cookie и правильно их настроить, например: Итак:

this.Vue.$cookies.set('cookieName', cookieValue, {
          sameSite: 'lax',
          secure: true
});

Однако я хочу создать функцию / класс-оболочку, чтобы я мог установить параметры sameSite: 'lax' и secure: true в качестве значений по умолчанию, и не должен пропускать их каждый раз, когда я вызываю set функция от этого модуля. Очевидно, я также хочу иметь возможность перезаписать эти параметры на что-то другое, если я хочу.

Просматривая примеры, которые я нашел в другом месте, я думаю, что класс должен выглядеть примерно так смутно так:

const cookies = require('cookie-universal-nuxt');

cookies(function ($) {

    const defaultOptions = {
        sameSite: 'lax',
        secure: true
    };

    return {
        get: function(name, options) {
            return $.cookies(name, options)
        },

        set: function (name, value, options) {
            $.cookies(name, value, // somehow options & defaultOptions are passed in and merged here)
        },
    };
});

Однако это может быть совершенно неверно. Как я уже сказал, я новичок в JS, поэтому я довольно растерян. Любая помощь будет принята с благодарностью!

1 Ответ

2 голосов
/ 08 февраля 2020

Я не думаю, что вам нужен класс для этого - простая функция-обертка, вероятно, сделает то, что вам нужно. Вот как создать небольшую фабричную функцию, которая создает оболочку, связанную с указанным c контекстом:

function makeSetCookie($) {
  return function(name, value, options) {
    const defaultOptions = {
      sameSite: 'lax',
      secure: true
    }; 

    $.set(name, value, Object.assign(defaultOptions, options));
 }
}

const setCookie = makeSetCookie(this.Vue /* or whatever */);
// and now you can use setCookie wherever

Вызывающая сторона может передавать или не передавать значение для параметра options. Строка Object.assign(defaultOptions, options) копирует все ключи / значения из options в defaultOptions, перезаписывая все ключи уже в defaultOptions (sameSite, secure), если они появляются в options. Если options равно нулю или не определено, это нормально - возвращаемое значение будет просто defaultOptions. Больше информации здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

...