小编Jus*_*aat的帖子

JavaScript部分应用函数 - 如何只绑定第二个参数?

很抱歉,如果我遗漏了一些明显的东西,但我无法弄清楚如何在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()参数实际上是如何工作的.

javascript

38
推荐指数
3
解决办法
1万
查看次数

如何在伊斯坦布尔报道React jsx文件?

我正在尝试将现有的测试流程集成到现在包含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)

javascript mocha.js istanbul reactjs gulp

15
推荐指数
2
解决办法
6375
查看次数

gulp-mocha如何通过编译器标志?

我正在尝试使用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插件下看到编译器选项,所以我想我需要以某种方式通过管道附加文本来添加编译器?

javascript mocha.js gulp

9
推荐指数
4
解决办法
6842
查看次数

如何使用Lodash将数组分成多个组?

我试图找到一种简洁的方法,根据谓词将对象数组分成数组.

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函数来实现这一目标?

javascript lodash

9
推荐指数
1
解决办法
7429
查看次数

hackathon-starter 使用 Lusca - csrf 值在哪里计算/存储?

我对 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.js express

5
推荐指数
1
解决办法
2810
查看次数

Sinon - 如何存根嵌套函数?

抱歉,如果这是一个简单的问题,我对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)

request mocha.js node.js sinon chai

5
推荐指数
1
解决办法
1万
查看次数

Chart.js如何反转(交换)轴?

这个问题的灵感来看,我试图弄清楚如何交换折线图的轴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"但仍然看起来不正确.

javascript chart.js

5
推荐指数
1
解决办法
1691
查看次数

Spring JdbcTemplate如何记录异常参数?

使用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库?或者这是最干净的方式(或者上面的代码甚至是坏的)?

我有多个基本相同的方法,接受一个对象,将字段传递给查询并返回结果.

java spring spring-mvc jdbctemplate

3
推荐指数
1
解决办法
4948
查看次数

chrome.tabs.executeScript 与新的浏览器标签不起作用?

我正在尝试制作一个 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它永远不会被解雇,或者它在以某种方式发生负载后正在监听?

google-chrome google-chrome-extension

1
推荐指数
1
解决办法
2579
查看次数