所以我是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的新手,所以我很迷路。任何帮助将不胜感激!
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