Javascript 如何为node.js插件创建包装类
因此,我是JavaScript新手,有一个项目,我正在使用我已经能够创建cookie并正确设置它们,如下所示:Javascript 如何为node.js插件创建包装类,javascript,node.js,vue.js,wrapper,nuxt.js,Javascript,Node.js,Vue.js,Wrapper,Nuxt.js,因此,我是JavaScript新手,有一个项目,我正在使用我已经能够创建cookie并正确设置它们,如下所示: this.Vue.$cookies.set('cookieName', cookieValue, { sameSite: 'lax', secure: true }); 但是,我想创建一个包装函数/类,这样我就可以将sameSite:'lax'和secure:true选项设置为默认值,而不必每次从该模块调用set函数时都将它们传递进来。显然,如
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
调用方可以传递或不传递
选项
参数的值。行Object.assign(defaultOptions,options)
将options
中的所有键/值复制到defaultOptions
,如果它们出现在options
中,则覆盖defaultOptions(sameSite,secure)中已经存在的所有键。如果options
为null或未定义,则可以-返回的值仅为defaultOptions
。这里有更多信息:我认为您不需要一个类来实现这一点-一个简单的包装器函数可能会满足您的需要。下面介绍如何创建一个小工厂函数,创建绑定到特定上下文的包装器:
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
调用方可以传递或不传递
选项
参数的值。行Object.assign(defaultOptions,options)
将options
中的所有键/值复制到defaultOptions
,如果它们出现在options
中,则覆盖defaultOptions(sameSite,secure)中已经存在的所有键。如果options
为null或未定义,则可以-返回的值仅为defaultOptions
。这里的更多信息:我很感激这个建议,但我应该更清楚地说,我想保持方法的非静态性。我要取消这些设置的上下文/对象并不总是完全是this.Vue
,我不想将参数传递给指定上下文的静态函数。我想要的东西就像我最初询问的那样,$
在哪里表示方法将被取消的上下文。这将无法正常工作,因为This.Vue.$cookies
中的This
值在setCookie()
函数中不正确。编辑它以反映注释中给出的要求。希望这是有帮助的!我很欣赏这个建议,但我应该更清楚地说,我想保持方法的非静态性。我要取消这些设置的上下文/对象并不总是完全是this.Vue
,我不想将参数传递给指定上下文的静态函数。我想要的东西就像我最初询问的那样,$
在哪里表示方法将被取消的上下文。这将无法正常工作,因为This.Vue.$cookies
中的This
值在setCookie()
函数中不正确。编辑它以反映注释中给出的要求。希望这是有帮助的!