使 Ramda.js 函数全局可访问(没有 R. )
making Ramda.js functions globally accessible (without R. )
我想在不键入的情况下使用 Ramda.js 函数 R.
我尝试将所有函数添加到全局范围,但它不起作用,这是我的尝试
const R = require('ramda'); // R is an object containing lots of functions
for(let x in R) {
global.x = x;
}
另外,我想知道如何使用 Ramda 库本身来做到这一点。
确保您设置的是 属性 调用 x,而不是 x 属性:
此外,请务必将 R[x]
的值赋值回去,而不是 属性 名称 x
global[x] = R[x];
您也可以尝试遍历 getOwnPropertyNames:
for (const prop of Object.getOwnPropertyNames(R)) {
global[prop] = R[prop]
}
或者,如果适用,只需将您需要的属性解构到您的范围内:
const {someProp, someOtherProp} = R;
根据评论,虽然我不同意输入额外的 2 个字符会被称为大惊小怪,但这就是您的感受。
就像@uber5001 提到的 de-structure 技术,这是一种方法,但这意味着您首先需要将整个 ramda 函数 require
转换为 R
然后检索您需要的函数。
您也可以require
仅需要的功能:
const uniq = require('ramda/src/uniq')
const zip = require('ramda/src/zip')
// and so on
HTH
将 Ramda 的所有函数设置为全局变量可能会有风险。 Ramda 有很多功能,其中一些可能会覆盖您现有的全局变量。一个更好的做法(仍然被认为是一个不好的做法,因为你仍然可以 shadow-name 变量)是 with
语句,它在不覆盖你的外部范围变量的同时解构对象的所有属性。
with(R) {
pipe(
map(x => x ** 2),
filter(x => x > 24)
)([3, 4, 5, 6]); // => [25, 36]
}
注意 with 语句在严格模式下被禁用。
我想在不键入的情况下使用 Ramda.js 函数 R.
我尝试将所有函数添加到全局范围,但它不起作用,这是我的尝试
const R = require('ramda'); // R is an object containing lots of functions
for(let x in R) {
global.x = x;
}
另外,我想知道如何使用 Ramda 库本身来做到这一点。
确保您设置的是 属性 调用 x,而不是 x 属性:
此外,请务必将 R[x]
的值赋值回去,而不是 属性 名称 x
global[x] = R[x];
您也可以尝试遍历 getOwnPropertyNames:
for (const prop of Object.getOwnPropertyNames(R)) {
global[prop] = R[prop]
}
或者,如果适用,只需将您需要的属性解构到您的范围内:
const {someProp, someOtherProp} = R;
根据评论,虽然我不同意输入额外的 2 个字符会被称为大惊小怪,但这就是您的感受。
就像@uber5001 提到的 de-structure 技术,这是一种方法,但这意味着您首先需要将整个 ramda 函数 require
转换为 R
然后检索您需要的函数。
您也可以require
仅需要的功能:
const uniq = require('ramda/src/uniq')
const zip = require('ramda/src/zip')
// and so on
HTH
将 Ramda 的所有函数设置为全局变量可能会有风险。 Ramda 有很多功能,其中一些可能会覆盖您现有的全局变量。一个更好的做法(仍然被认为是一个不好的做法,因为你仍然可以 shadow-name 变量)是 with
语句,它在不覆盖你的外部范围变量的同时解构对象的所有属性。
with(R) {
pipe(
map(x => x ** 2),
filter(x => x > 24)
)([3, 4, 5, 6]); // => [25, 36]
}
注意 with 语句在严格模式下被禁用。