feat: Support nested locale keys.
Example:
```js
{
model: {
user: {
name: 'Real Name',
createdAt: 'Joined At'
}
}
}
```
```js
ctx.__('model.user.name');
ctx.__('model.user.createdAt');
```
The before:
```js
{
'model.user.name': 'Real Name',
'model.user.createdAt', 'Joined At'
}
```
Benchmarks:
```
Deeps: 9
2 tests completed.
direct read a key x 85,993,593 ops/sec ±1.89% (96 runs sampled)
by nested x 4,203,837 ops/sec ±0.98% (93 runs sampled)
```
This commit is contained in:
134
benchmark/nested-value.js
Normal file
134
benchmark/nested-value.js
Normal file
@@ -0,0 +1,134 @@
|
||||
var Benchmark = require('benchmark');
|
||||
var benchmarks = require('beautify-benchmark');
|
||||
|
||||
var suite = new Benchmark.Suite();
|
||||
|
||||
function getNestedValue(data, key) {
|
||||
var keys = key.split('.');
|
||||
for (var i = 0; typeof data === 'object' && i < keys.length; i++) {
|
||||
data = data[keys[i]];
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
var resource = {
|
||||
'model.user.foo.bar.aa': 'Hello',
|
||||
model: {
|
||||
user: {
|
||||
fields: {
|
||||
name: 'Real Name',
|
||||
age: 'Age',
|
||||
a: {
|
||||
b: {
|
||||
c: {
|
||||
d: {
|
||||
e: {
|
||||
f: "fff"
|
||||
}
|
||||
},
|
||||
model: {
|
||||
user: {
|
||||
fields: {
|
||||
name: 'Real Name',
|
||||
age: 'Age',
|
||||
a: {
|
||||
b: {
|
||||
c: {
|
||||
d: {
|
||||
e: {
|
||||
f: "fff"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
post: {
|
||||
fields: {
|
||||
title: 'Subject'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
model: {
|
||||
user: {
|
||||
fields: {
|
||||
name: 'Real Name',
|
||||
age: 'Age',
|
||||
a: {
|
||||
b: {
|
||||
c: {
|
||||
d: {
|
||||
e: {
|
||||
f: "fff"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
post: {
|
||||
fields: {
|
||||
title: 'Subject'
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
post: {
|
||||
fields: {
|
||||
title: 'Subject'
|
||||
}
|
||||
},
|
||||
model: {
|
||||
user: {
|
||||
fields: {
|
||||
name: 'Real Name',
|
||||
age: 'Age',
|
||||
a: {
|
||||
b: {
|
||||
c: {
|
||||
d: {
|
||||
e: {
|
||||
f: "fff"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
post: {
|
||||
fields: {
|
||||
title: 'Subject'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var fullKey = 'model.user.fields.a.b.c.d.e.f';
|
||||
|
||||
console.log('Deeps: ', fullKey.split('.').length);
|
||||
|
||||
// console.log('getNestedValue:', getNestedValue(resource, fullKey));
|
||||
|
||||
suite
|
||||
|
||||
.add('direct read a key', function() {
|
||||
resource['model.user.foo.bar.aa'];
|
||||
})
|
||||
.add('by nested', function() {
|
||||
getNestedValue(resource, fullKey);
|
||||
})
|
||||
.on('cycle', function(event) {
|
||||
benchmarks.add(event.target);
|
||||
})
|
||||
.on('complete', function done() {
|
||||
benchmarks.log();
|
||||
})
|
||||
.run({ async: false });
|
||||
Reference in New Issue
Block a user