如何为node.js插件创建包装类

问题描述 投票:0回答:1

所以我是JavaScript的新手,并且有一个使用Node.js cookies module found here.的项目,我已经能够创建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的新手,所以我很迷路。任何帮助将不胜感激!
javascript node.js vue.js wrapper nuxt
1个回答
2
投票
我认为您不需要为此使用类-一个简单的包装器功能可能会满足您的需要。以下是创建一个小的工厂函数的方法,该函数创建绑定到特定上下文的包装器:

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为null或未定义,就可以了-返回的值就是defaultOptions。此处更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
© www.soinside.com 2019 - 2024. All rights reserved.