小编Dan*_*Dan的帖子

如何测试Grunt任务?理解和最佳实践

我有点不了解如何编写复杂的Gruntfile.js并将其与测试一起使用.我是否以正确的方式使用Grunt?我想请社区寻求帮助,并以其他方式做出贡献.

我正在为Grunt 写一个新任务,并希望在Github和npm上为广大观众推出它.我想为这项任务进行自动化测试(我想学习如何正确地完成它!).

我想测试不同的选项组合(现在大约15个).所以,我应该多次:

  • 运行清理
  • 使用下一个选项集运行我的任务
  • 运行测试并将选项对象传递给测试

一些非工作代码,以便更好地理解:

Gruntfile:

grunt.initConfig({

    test_my_task: {
        testBasic: {
            options: {
                 //first set
            }
        },
        testIgnore: {
            options: {
                //another set
            }
        },

        //...
    }

    clean: {
        tests: ['tmp'] // mmm... clean test directory
    },

    // mmm... unit tests.
    nodeunit: {
        tests: ['test/*.js']  //tests code is in 'tests/' dir
    }
});

grunt.registerTask('test', ['test_my_task']);
Run Code Online (Sandbox Code Playgroud)

我知道如何tmp/options给定对象时检查文件夹是否处于所需状态.

问题在于把事情放在一起.

我会问模板代码作为答案,npo需要放置工作示例.

PS:你可以提出另一个测试工具,nodeunit不是必须的.

PPS:垃圾,我现在可以用普通的javascript写这个!也许我错了,我想把Grunt放进单元测试中?但我想测试我的任务在真实环境中如何工作,从Grunt传递不同的选项......

unit-testing node.js nodeunit gruntjs

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

很好地理解CSRF的棘手问题

我和我的朋友喝啤酒.

来自维基百科:

在所有表单提交和副作用URL中要求使用特定于用户的秘密令牌可防止CSRF; 攻击者的网站无法在其提交的内容中加入正确的令牌

atacker可以间接使用浏览器cookie,但他不能直接使用它们!这就是为什么他不能使用cookie将cookie放入链接document.write()

让我们看一下如何生成注销链接.这是安全的方式吗?这个GET请求可以伪造吗?

function logout(){
     echo '<a href="?action=logout&sid='.htmlspecialchars($_COOKIE['sid']).'>Logout</a>';
}
Run Code Online (Sandbox Code Playgroud)

sid是为每个会话生成的会话ID

在服务器端,执行以下检查:

$_GET['sid']==$_COOKIE['sid']
Run Code Online (Sandbox Code Playgroud)

security xss

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

我应该在HTML5中附带/>或不附带标签吗?

首先,我查看了html5rocks.com的来源.看起来像受信任的网站 他们在那里关闭标签.

 <link rel="shortcut icon" href="/favicon.ico" />
Run Code Online (Sandbox Code Playgroud)

然后我看了HTML5demos,但他们没有

 <link rel="stylesheet" href="css/html5demos.css">
Run Code Online (Sandbox Code Playgroud)

html5

8
推荐指数
2
解决办法
277
查看次数

远程调试适用于iOS的Chrome

我正在尝试在Chrome for iPad上调试错误.我怎样才能做到这一点?

附加信息:

我知道如何调试适用于iOS的Safari.我现在还没有Mac.

  • 我是否需要MacOS X上的Safari来远程调试Chrome for iOS?

  • 桌面Chrome是否允许任何内容?

  • Chrome for iOS只是一个webview应用程序吗?

javascript safari macos webview ios

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

javascript:更改它们所应用到的数组的数组方法列表

我总是很难将这一点记在脑子里,而且我无法快速用谷歌搜索出来。这就是为什么我把这个问题放在这里。

每次我调用concat,sort或 之类的方法slice时,我都会问自己:它是创建并返回一个新数组,还是只是修改并返回它所应用到的数组?

:您能否列出更改原始数组的方法与构造并返回新数组的方法?

游戏中类似poppush没有的方法,它们的作用很明显。

javascript

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

将事件监听器附加到整个html文档的最佳方法

让我们考虑mousemove整个HTML文档的捕获问题.

我知道可以附加事件监听器的四个对象:

window,document,document.body,document.documentElement

经过简单的测试,在我看来,附加到它们中的任何一个都具有相同的效果.

$(window).on('mousemove', function(){console.log(1)})
Run Code Online (Sandbox Code Playgroud)

我想知道是否有任何我不知道的差异(性能,兼容性?)

html javascript jquery dom mouseevent

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

Serverless-webpack 部署脚本在 Webpack 4.8 中“挂起”,而在 3.12 中运行正常。

我正在使用无服务器和无服务器 webpack。webpack配置非常简单:

const path = require('path');
const nodeExternals = require('webpack-node-externals');

module.exports = {
    entry: {
        lambda: './lambda.js',
    },
    output: {
        libraryTarget: 'commonjs',
        path: path.join(__dirname, '.webpack'),
        filename: '[name].js',
    },
    target: 'node',
    externals: [nodeExternals()],
    module: {
        rules: [{
            test: /\.js$/,
            loader: 'babel-loader',
            include: __dirname,
            exclude: /node_modules/,
        }, {
            test: /\.json$/,
            loader: 'json-loader',
        }],
    },
    stats: "verbose",
};
Run Code Online (Sandbox Code Playgroud)

无服务器.yml:

plugins:
    - serverless-webpack
    - serverless-secrets-plugin
    - serverless-plugin-split-stacks
    - serverless-offline  

custom:
    webpack:
        webpackConfig: ./webpack.config.js
    stage: ${opt:stage, self:provider.stage}

provider:
    name: aws
    runtime: nodejs8.10

functions: …
Run Code Online (Sandbox Code Playgroud)

javascript node.js webpack serverless-framework serverless

8
推荐指数
0
解决办法
541
查看次数

内存泄漏使用socket.io

我发现在手动断开连接时套接字io服务器端没有完全销毁套接字.我在github上发现这个主题很有用.虽然我正在寻找一些阻止GC清理套接字的变量链接,但我在这里问一个问题.

如果这里有人遇到同样的问题,这将有很大帮助.

代码不起作用:

socket.on('disconnect', function(){
    socket.removeAllListeners();
});

///...................

socket.disconnect();
Run Code Online (Sandbox Code Playgroud)

但是,解决方法是使用受限制的库字段:

delete io.sockets[url];
io.j = [];
Run Code Online (Sandbox Code Playgroud)

javascript memory-leaks node.js socket.io

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

确定node.js中JSON格式对象的相等性

在node.js中比较两个JSON格式的对象数据的最有效方法是什么?

这些对象不包含"undefined"或函数,它们的原型是Object.

我听说如果在node.js中有JSON,那么有很好的支持

json node.js

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

通过JavaScript获取文本块的维度,而不是容器的`getBoundingClientRect`的大小

我想获得容器内的文本大小.让我们考虑一下容器有填充和边框的一般情况.

问题是getBoundingClientRect返回文本PLUS左边框和填充的大小,以防文本溢出.否则它只返回容器边框的大小.

在此输入图像描述

html javascript css dom

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