javascript - 如何为 node.js 插件创建包装类
问题描述
所以我是 JavaScript 新手,并且有一个项目,我正在使用此处找到的 Node.js cookie 模块。我已经能够创建cookie并正确设置它们,如下所示:
this.Vue.$cookies.set('cookieName', cookieValue, {
sameSite: 'lax',
secure: true
});
但是,我想创建一个包装函数/类,这样我就可以将sameSite: 'lax'
andsecure: 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
推荐阅读
- javascript - lodash debounce 忽略空格键
- php - 如何将 Prestashop 与外部数据库连接?
- python - 使用 python-docx 复制带有图像的表
- python - python 装饰器用另一个装饰器包装并修改函数 args
- c# - ASP.NET 6 + Identity + Sqlite,services.AddDbContext() 怎么样?
- java - Java java.io.IOException:HTTP/1.1 标头解析器未收到任何字节
- javascript - 无法使用 php 将表单用户输入发送到电子邮件?
- node.js - 如何上传 MERN 文件夹中的图片?
- python-3.x - 我正在尝试使用 graphics.py 执行边界填充算法。是否有任何适当的方法来获取和放置像素颜色?
- wso2 - WSO2 API Manager - PizzaShack 网站在登录后给出 HTTP 500 内部错误