我有以下功能来测试:
// ...
const local = new WeakMap();
export default class User {
// ...
async password(password) {
if (!password) return local.get(this).get('hash'); // remove this for security reasons!
if (password.length < 6) throw new Error('New password must be at least 6 characters long');
if (!password.match(passwordPattern)) throw new Error(`New password must match ${passwordPattern}`);
local.get(this).set('hash', await Password.hash(password));
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
现在我想用mocha,chai和chai-as- promise来测试这个函数做这个测试用例:
import chai from 'chai';
import chaiAsPromised from 'chai-as-promised';
import User from '../../../server/User';
chai.use(chaiAsPromised); …Run Code Online (Sandbox Code Playgroud) 我正在尝试编译一个Koa应用程序,并且Koa有断言检查以确保我将生成器函数作为中间件传递.但是,为了与前端代码保持一致,我想使用Babel从ES7编译我的服务器端代码.
是否有可能针对节点和谐而不是ES5?我没有在选项中看到任何有希望的东西,但选择目标似乎是能够使用编译器的标准事物.
更新
黑名单巴贝尔的再生器变换似乎没有效果,即使我正在使用stage: 1.
index.js:
require( "babel/register" )({
sourceMaps: "inline",
stage: 1,
blacklist: [ "regenerator" ],
optional: [ "asyncToGenerator" ]
});
var app = require( "./src/server" );
app.listen( process.env.port || 3000 );
Run Code Online (Sandbox Code Playgroud)
SRC/server.js:
import koa from "koa";
import router from "koa-router";
router.get( "/", function *( next ) {
this.body = "Hi!";
});
let app = koa();
app.use( router() );
export default app;
Run Code Online (Sandbox Code Playgroud)
执行: node --harmony index.js
node --version
v0.12.4
Run Code Online (Sandbox Code Playgroud) 这是我在github上最接近的
我的服务是
@Injectable()
export class TodoService {}
但我不确定如何使用ES2016装饰器将其注入我的组件.它甚至是可能的,还是装饰器特定于原型?我知道TS有一个emitDecoratorMetadata选择.
我在我的JSX中有这个:
<Options options={options} onOptionSelect={this.onOptionSelect.bind(this)} />
Run Code Online (Sandbox Code Playgroud)
但是,我发誓我已经看到了一些幻想,否定了.bind将回调方法传递给子React组件时的需要,我是对的吗?
这就是我一直在做的事情:
var props = { id: 1, name: 'test', children: [] }
//copy props but leave children out
var newProps = { ...props }
delete newProps.children
console.log(newProps) // { id: 1, name: 'test' }Run Code Online (Sandbox Code Playgroud)
有更清洁,更简单的方法吗?
javascript ecmascript-harmony ecmascript-6 babeljs ecmascript-7
我试图使用JavaScript语法ES7采用具有的WebPack和巴贝尔装载机(ES2015 + 0级的预置)的node.js服务器上.我已经让它与babel-node一起工作但是当我运行webpack时,我在async关键字上得到以下错误(9:22在async关键字之后):
ERROR in ./src/server.js Module parse failed: C:\dev\node-async-sample\src\server.js
Unexpected token (9:22) You may need an appropriate loader to handle this file type.
SyntaxError: Unexpected token (9:22)
Run Code Online (Sandbox Code Playgroud)
我把代码放在github上的https://github.com/qubitron/node-async-sample,有关如何使其工作的任何想法?
以下是src/server.js的相关代码段:
import express from 'express';
import http from 'request-promise';
let server = express();
server.get('/', async function(request, response) {
let result = await http('http://www.google.com');
response.send(result);
});
Run Code Online (Sandbox Code Playgroud)
.babelrc:
{
"presets": [
"es2015",
"node5",
"stage-0"
],
"plugins": [
"transform-runtime"
]
}
Run Code Online (Sandbox Code Playgroud)
和webpack.config.js:
module.exports = {
entry: [
'babel-polyfill',
'./src/server.js'
],
output: { …Run Code Online (Sandbox Code Playgroud) 我正在检查node.green并在解构,赋值 > 嵌套休息时使用以下示例函数:
function f() {
var a = [1, 2, 3], first, last;
[first, ...[a[2], last]] = a;
return first === 1 && last === 3 && (a + "") === "1,2,2";
}
console.log(f())Run Code Online (Sandbox Code Playgroud)
现在,我理解解构,但我无法弄清楚为什么要a改写[1, 2, 2]
也[...[a[2], last]] = a;回来了[1, 2, 1]
我很乐意使用Javascript ES6和ES7语法(特别是async/await,我的新朋友),而无需转换.这甚至是一种选择吗?它应该是一个选择吗?
这一切都取决于子问题:在Android和iOS上,Javascript引擎做了什么反应 - 本机有效使用?它取自设备本身?(在这种情况下,转换是唯一的选择......)或者它是由React Native提供的吗?
async-await ecmascript-6 react-native ecmascript-7 ecmascript-2017
基于MPJ的这段出色的“ 继承中合成”视频,我一直试图在TypeScript中制定合成。我想组成类,而不是对象或工厂函数。到目前为止,这是我的努力(在lodash的帮助下):
class Barker {
constructor(private state) {}
bark() {
console.log(`Woof, I am ${this.state.name}`);
}
}
class Driver {
constructor(private state) {}
drive() {
this.state.position = this.state.position + this.state.speed;
}
}
class Killer {
constructor(private state) {}
kill() {
console.log(`Burn the ${this.state.prey}`);
}
}
class MurderRobotDog {
constructor(private state) {
return _.assignIn(
{},
new Killer(state),
new Driver(state),
new Barker(state)
);
}
}
const metalhead = new MurderRobotDog({
name: 'Metalhead',
position: 0,
speed: 100, …Run Code Online (Sandbox Code Playgroud) 我正在实施Bambora 的Inline Checkout.授权步骤没有任何问题.但是当涉及到捕获付款时,我总是得到错误Transaction not found.
这就是我做的:
const options = {
headers: { Authorization: `Basic ${ apiKey }` },
};
const { payload } = {
amount
};
const { data } = await axios.post(`https://transaction-v1.api-eu.bambora.com/transactions/${ txnid }/capture`, payload, options);
Run Code Online (Sandbox Code Playgroud)
我也尝试过包含transactionoperations以下内容的请求:
const options = {
headers: { Authorization: `Basic ${ apiKey }` },
};
const { payload } = {
amount,
transactionoperations: [{ id: txnid }],
};
const { data } = await axios.post(`https://transaction-v1.api-eu.bambora.com/transactions/${ txnid }/capture`, …Run Code Online (Sandbox Code Playgroud) ecmascript-7 ×10
javascript ×6
babeljs ×3
ecmascript-6 ×3
node.js ×3
async-await ×2
angular ×1
babel ×1
bambora ×1
bdd ×1
class ×1
composition ×1
react-native ×1
reactjs ×1
testing ×1
typescript ×1
webpack ×1