很抱歉,如果我遗漏了一些明显的东西,但我无法弄清楚如何在javascript中绑定函数的特定(第n个)参数.我学到的大部分函数式编程都来自Scala,所以我不确定这在JS中是否可行.
例如,我知道我可以执行以下操作来绑定第一个参数
var add = function (a, b) {
return a + b;
};
add(1, 3); //returns 4
var addThree = add.bind(null, 3); //this = null. a = 3
addThree(4); //returns 7
Run Code Online (Sandbox Code Playgroud)
但是我如何绑定第二个参数并保留第一个参数.换句话说,我怎么才能绑定'b'?
从我从mozilla可以看出 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind ,参数实际上是嵌套的,这使它看起来像必须是按特定顺序?(我很可能读错了)
编辑:我意识到这是一个人为的例子.我只是想学习以防万一我最终处理比添加2个数字更复杂的事情.我也试图理解bind()参数实际上是如何工作的.
我正在尝试将现有的测试流程集成到现在包含React,但我正在努力解决代码覆盖问题.通过以下项目/教程,我已经能够使我的单元测试工作正常 - https://github.com/danvk/mocha-react - http://www.hammerlab.org/2015/02/14/testing -react-Web的应用程序与-摩卡/
我一直在使用伊斯坦布尔来覆盖我的节点代码,它运行得很好.但是,我无法覆盖我在测试中使用的jsx文件.
这是一个现有的伊斯坦布尔任务的例子,它也可以在vanilla js上运行(节点后端代码)
var mocha = require('gulp-mocha');
var istanbul = require('gulp-istanbul');
gulp.task('test-api', function (cb) {
gulp.src(['api/**/*.js'])
.pipe(istanbul()) // Covering files
.pipe(istanbul.hookRequire()) // Force `require` to return covered files
.on('finish', function () {
gulp.src(['test/api/*.js'])
.pipe(mocha())
.pipe(istanbul.writeReports()) // Creating the reports after tests runned
.on('end', cb);
Run Code Online (Sandbox Code Playgroud)
我的问题(我认为)是我无法让伊斯坦布尔识别jsx文件,或者他们没有与测试中运行的文件进行比较.我尝试使用gulp -react模块将jsx预编译为js,以便伊斯坦布尔可以使用它,但我不确定它是否正常工作.它没有以某种方式被覆盖,我不确定问题出在哪里.
var mocha = require('gulp-mocha');
var istanbul = require('gulp-istanbul');
var react = require('gulp-react');
gulp.task('test-site-example', function (cb) {
gulp.src(["site/jsx/*.jsx"]) //Nothing is being reported by Istanbul (not being picked up) …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用gulp-mocha模块,但无法找出传递编译器标志的好方法.有没有办法在我的gulp任务中包含这个?也许在某个单独的管道中?
从命令行运行mocha的示例(工作正常)
mocha --compilers .:my_compiler.js test/**/*.js
使用gulp-mocha的例子(但我在哪里可以指定编译器)?
gulp.task('test', function () {
gulp.src(["test/**/*.js"], {
read: false
})
.pipe(mocha({
reporter: 'spec'
}))
.pipe(exit());
});
Run Code Online (Sandbox Code Playgroud)
我没有在gulp-mocha插件下看到编译器选项,所以我想我需要以某种方式通过管道附加文本来添加编译器?
我试图找到一种简洁的方法,根据谓词将对象数组分成数组.
var arr = [
{id: 1, val: 'a'},
{id: 1, val: 'b'},
{id: 2, val: 'c'},
{id: 3, val: 'a'}
];
//transform to below
var partitionedById = [
[{id: 1, val: 'a'}, {id: 1, val:'b'}],
[{id: 2, val: 'c'}],
[{id: 3, val: 'a'}
];
Run Code Online (Sandbox Code Playgroud)
我看到这个问题,使用普通JS提供了一个很好的概述,但我想知道是否有更简洁的方法来使用lodash做到这一点?我看到了分区功能,但它只将数组拆分为2组(需要它是'n'个分区).groupBy通过键将它分组为一个对象,我正在寻找相同但在数组中(没有键).
是否有一种更简单的方法可以嵌套几个lodash函数来实现这一目标?
我对 Node 很陌生,所以如果这是一个菜鸟问题,请原谅我。我正在尝试在 github 上使用 convert 这个项目来使用 ejs views ,但是很难理解他们是如何创建 csrf 令牌的。
我正在使用的种子项目 - https://github.com/sahat/hackathon-starter
使用 lusca 生成 csrf https://github.com/krakenjs/lusca
我在他们的种子项目中看到的代码(至少我认为是相关的)
var csrf = require('lusca').csrf();
/**
* CSRF whitelist.
*/
//app.js
var csrfExclude = ['/url1', '/url2'];
//original project uses jade
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade'); //i'm going to change this to ejs, but don't know where to get the csrf value(below) from
app.use(function(req, res, next) {
// CSRF protection.
if (_.contains(csrfExclude, req.path)) return next();
csrf(req, res, next);
});
app.use(function(req, …Run Code Online (Sandbox Code Playgroud) 抱歉,如果这是一个简单的问题,我对Node和Sinon来说相对较新.我正在努力弄清楚如何断言在Nodejs中调用嵌套的异步函数.
我正在使用mocha,chai,sinon和request(https://github.com/request/request),但我认为我在遗漏部分缺少一些基本的东西.
my_app.js中的示例 -
var request = require('request');
function MyModule() {
};
MyModule.prototype.getTicker = function(callback) {
request('http://example.com/api/ticker', function(error, response) {
if (error) {
callback(error);
} else {
callback(null, response);
}
});
};
exports.mymodule = new MyModule();
Run Code Online (Sandbox Code Playgroud)
在测试里面.我正在尝试将请求的调用存根,并提供一些虚拟数据返回.但是我在创建存根的行上不断收到错误"请求未定义".
var myApp = require('../my_app.js')
,assert = require("assert")
,chai = require('chai')
,sinon = require('sinon')
,expect = chai.expect;
describe('mymodule object', function() {
var mymodule = myApp.mymodule;
before(function(done) {
sinon.stub(request).yields(null, JSON.stringify({
price: '100 USD'
}));
done();
});
it('getTicker function should call request on example …Run Code Online (Sandbox Code Playgroud) 从这个问题的灵感来看,我试图弄清楚如何交换折线图的轴Chart.js.
例如,在Highcharts中我们有这个例子,虽然它是一个面积图.
是否可以在折线图上"交换"X轴和Y轴?
datasets: [
{
label: "data1a",
data: [1,2,3,4,5,1,2,3]
}
]
yAxes: [
{
type: "linear",
display: true,
position: "left",
}
]
Run Code Online (Sandbox Code Playgroud)
这是我从上面的链接修改的小提琴.我基本上试图移动它,使图形看起来旋转90度.我尝试将y位置更改为"top"但仍然看起来不正确.
使用Spring的JdbcTemplate,我一直在试图找出一种在DAO层中记录异常的简洁方法,但似乎无法弄明白.我想记录使用的SQL语句和 参数.
例如,addStoreSql是参数化语句
public int addStore(Store store) {
return jdbcTemplate.update(addStoreSql, store.getId(), store.getName());
}
Run Code Online (Sandbox Code Playgroud)
我做的事......
public int addStore(Store store) {
try{
return jdbcTemplate.update(addStoreSql, store.getId(), store.getName());
} catch (DataAccessException ex) {
logger.error("exception on deleting store - " + store.toString(), ex);
throw ex;
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,有没有办法在许多dao方法中编写任何清洁工具?可能在记录器级别或一些Spring库?或者这是最干净的方式(或者上面的代码甚至是坏的)?
我有多个基本相同的方法,接受一个对象,将字段传递给查询并返回结果.
我正在尝试制作一个 Chrome 扩展程序,该扩展程序在用户打开新标签时运行脚本。
我有以下基本代码,只要单击扩展按钮,它就会将页面涂成红色。
当我导航到实际网站时,它似乎工作正常(例如:在 stackoverflow.com 上,单击我的扩展程序图标,页面变为红色)。但是,如果我只是创建一个全新的选项卡并单击按钮,则会加载弹出窗口但页面永远不会改变颜色。
清单.json:
{
"manifest_version": 2,
"name": "ConsoleTap",
"version": "0.1.0",
"browser_action": {
"default_icon": "icon.png",
"default_popup": "menu.html"
},
"permissions": [
"tabs",
"<all_urls>",
"https://ajax.googleapis.com/"
]
}
Run Code Online (Sandbox Code Playgroud)
菜单.html:
<!doctype html>
<html>
<head>
<script src="menu.js"></script>
</head>
<body>
hello
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
菜单.js:
document.addEventListener('DOMContentLoaded', function() {
chrome.tabs.executeScript(null,{code:"document.body.style.backgroundColor='red'"});
});
Run Code Online (Sandbox Code Playgroud)
关于为什么页面不会更新新选项卡上的背景颜色的任何想法?我猜DOMContentLoaded它永远不会被解雇,或者它在以某种方式发生负载后正在监听?