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



所以我是JavaScript的新手,并且有一个项目,我正在使用Node.js cookie模块在这里找到。我已经能够创建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的新手,所以我很迷茫。任何帮助将不胜感激!

我认为你不需要一个类 - 一个简单的包装函数可能会满足你的需要。下面介绍如何创建一个小工厂函数,该函数创建绑定到特定上下文的包装器:

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,覆盖默认选项(sameSite,安全(中已有的任何键,如果它们出现在options中。如果options为 null 或未定义,那很好 - 返回的值将只defaultOptions.更多信息在这里: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

最新更新