所以我是 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 新手,所以我很迷茫。任何帮助将不胜感激!
最佳答案
我认为您不需要为此创建一个类 - 一个简单的包装函数可能就能满足您的需要。以下是如何创建一个小工厂函数来创建绑定(bind)到特定上下文的包装器:
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、安全)(如果它们出现在选项
中)。如果 options
为 null 或未定义,那没关系 - 返回的值将只是 defaultOptions
。更多信息请点击:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
关于javascript - 如何为 Node.js 插件创建包装类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60121161/