小编Sim*_*mon的帖子

使用nodejs进行Google身份验证

我正在尝试使用我的node.js服务器访问Google身份验证API,但我无法找到.基本上,我希望用户到达我的登录页面,单击身份验证按钮,然后服务器将他重定向到Google API,用户允许我的应用访问他的数据,然后Google API将用户重定向到我的网站授权令牌.

我已经设置了oauth2所需的网址,它似乎有效(如果我将其粘贴到我的网络浏览器中,它会在Google授权页面上重定向我).我看到这篇文章似乎回答了我的问题,但我不知道如何处理快速代码部分.

这是我正在使用的代码:

https.get(options, function(res) {
    var retrieved_data = '';
    res.on('data', function(data) { retrieved_data += data; });
    res.on('end', function() { 
        // FIXME
        client_response.writeHead(302, {"Content-Type" : "text/plain", "Location" : res.headers.location});
        client_response.end(retrieved_data);    
    });
});
Run Code Online (Sandbox Code Playgroud)

但是这个方法在我的客户端页面上返回一个错误(由我的ajax请求的错误字段引发).如果我在没有"位置"信息的情况下将HTTP代码更改为200,它会在客户端上显示"暂时移动"页面,其中包含一个按钮,可将我重定向到Google API授权页面.

有什么建议吗?

redirect oauth google-api node.js

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

强制数字输入为零

我正在写一个报警网络应用程序.我有两个数字输入,一个用于小时,一个用于分钟.因此,当我使用键盘箭头时,它们从0到23/59.是否有HTML本地方式使它们从00(01,02等)到23/59而不是?

我只担心UI方面,因为我的JS管理缺失的0无论如何.

编辑 - 根据要求:

是)我有的 :

当前

我想要的是 :

目的

而不是从0,1,2到59,我想在数字小于10(00,01,02到59)时自动获得前导0.

html html5 number-formatting

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

Stub模块函数从同一个模块调用

我无法找到一种方法来存储从同一模块中调用的函数这个函数被定义(存根似乎不起作用).这是一个例子:

myModule.js:

'use strict'

function foo () {
  return 'foo'
}

exports.foo = foo

function bar () {
  return foo()
}

exports.bar = bar
Run Code Online (Sandbox Code Playgroud)

myModule.test.js:

'use strict'

const chai = require('chai')
const sinon = require('sinon')

chai.should()

const myModule = require('./myModule')

describe('myModule', () => {
  describe('bar', () => {
    it('should return foo', () => {
      myModule.bar().should.equal('foo') // succeeds
    })

    describe('when stubbed', () => {
      before(() => {
        sinon.stub(myModule, 'foo').returns('foo2') // this stub seems ignored
      })

      it('should return foo2', () => { …
Run Code Online (Sandbox Code Playgroud)

node.js

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

JSON.parse错误地解析/转换大数字

我的问题很简单,但我不确定是否有使用JSON.parse的"原生"解决方案.

我从API 收到这个字符串:

{ "key" : -922271061845347495 }
Run Code Online (Sandbox Code Playgroud)

当我在这个字符串上使用JSON.parse时,它变成了这个对象:

{ "key" : -922271061845347500 }
Run Code Online (Sandbox Code Playgroud)

如您所见,解析在数字太长时停止(您可以在此处检查此行为).它只有15个确切的数字,最后一个是四舍五入的,后面的那些被设置为0.是否有一个"原生"解决方案来保持确切的值?(这是一个ID所以我不能围绕它)

我知道我可以使用正则表达式来解决这个问题,但如果它存在,我宁愿使用"原生"方法.

javascript floating-point json numbers

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

在柴中测试错误类型

我目前正在测试我的应用程序chai.我想测试一个我的方法抛出的错误.为此,我写了这个测试:

expect ( place.updateAddress ( [] ) ).to.throw ( TypeError );
Run Code Online (Sandbox Code Playgroud)

这是方法:

Place.prototype.updateAddress = function ( address ) {
    var self = this;

    if ( ! utils.type.isObject ( address ) ) {
        throw new TypeError (
            'Expect the parameter to be a JSON Object, ' +
            $.type ( address ) + ' provided.'
        );
    }

    for ( var key in address ) if ( address.hasOwnProperty ( key ) ) {
        self.attributes.address[key] = address[key];
    }

    return self;
};
Run Code Online (Sandbox Code Playgroud)

问题是, …

javascript testing unit-testing chai

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

Javascript未显示 - Brunch.io - 早午餐

我刚刚开始使用brunch-with-brunch骨架(我只想要一个能够显示原生HTML/CSS/JS的本地服务器)的新brunch.io项目.

我自己创建了两个文件:index.html位于公共/包含标准doctype,head和body标签以及引用由位于public/javascripts/app.js的早午餐生成的app.js的脚本标签,如下所示:

<script type="text/javascript" src="javascripts/app.js"></script>
Run Code Online (Sandbox Code Playgroud)

由位于app /目录中的README.md文件指定,我在app /目录中编写特定于应用程序的文件.所以我在app /中有名为app.js的文件,其中包含:

console.log("OK");
Run Code Online (Sandbox Code Playgroud)

我用命令启动服务器:

brunch watch --server
Run Code Online (Sandbox Code Playgroud)

问题是我没有在js控制台中看到任何内容(服务器在localhost:3333上运行),尽管html被呈现的事实和public/javascripts/app.js(由早午餐生成)包含这些行(除其他外):

require.register("app", function(exports, require, module) {
    console.log("ok");
});
Run Code Online (Sandbox Code Playgroud)

这是怎么回事 ?

编辑:直接写在html脚本标签中的javascript工作正常.

brunch

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

方法应该有多安全?

当我写一些代码时,我想知道我的方法应该是多么安全.我应该相信我班级的用户吗?还是检查一切?这意味着参数类型检查可能不是一个好习惯,因为Javascript应该是鸭子类型.

基本上这会导致信任问题.有最好的做法吗?有隐含的"合同"吗?

示例:

CarsCollection.prototype.get = function ( index ) {
    return this.collection[index];
};
Run Code Online (Sandbox Code Playgroud)

要么

CarsCollection.prototype.get = function ( index ) {
    var self = this;

    if ( ! index ) {
        throw new ReferenceError();
    }

    if ( isNaN ( index ) ) {
        throw new TypeError();
    }

    return self.collection[index];
};
Run Code Online (Sandbox Code Playgroud)

javascript

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

Git - 分支状态(冻结、非活动等)

有没有办法将分支设置为inactiveor frozen?事实上,我不想删除我的分支,因为我将来可能会使用它,但该分支目前已冻结。

我知道我可以将分支的名称更改为类似的模式frozen/my-branch,但我想知道 git 中是否已经存在实现此目的的本机方法。

谢谢!

git

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

画一棵二叉树

我正在寻找一个js库,它允许用户绘制二叉树:添加/删除叶子,添加/删除父节点等。

我发现了很多库,但其中大多数仅用于数据可视化(例如:d3),而不是从浏览器中绘制。

这真的存在吗?

谢谢!

javascript binary-tree data-structures

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

几个CSS输出与grunt-contrib-compass

grunt-contrib-compass用来将我的SCSS文件处理成一个CSS文件.基本上,罗盘考虑所有匹配的SCSS文件app/styles/**/*.scss并将其编译成.tmp/styles/main.css.

我想将此行为分为:

  1. app/styles/specific/**/*.scss.tmp/styles/specific.css
  2. app/styles/**/*.scss.tmp/styles/main.css(忽略specific)

但是,我不知道如何配置关于我的配置文件的grunt非常简单:

options: {
    sassDir: '<%= yeoman.app %>/styles',
    cssDir: '.tmp/styles',
    imagesDir: '<%= yeoman.app %>/images',
    javascriptsDir: '<%= yeoman.app %>/scripts',
    fontsDir: '<%= yeoman.app %>/styles/fonts',
    importPath: '<%= yeoman.app %>/bower_components',
    relativeAssets: true
}
Run Code Online (Sandbox Code Playgroud)

我无法找出任何解决方案,特别是因为罗盘文档说明cssDir并且sassDir只允许字符串作为参数.这是否必须在其他任务中完成?

sass gruntjs compass-sass grunt-contrib-compass

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

Git 记录第一个父级并遵循

我想获取与文件相关的合并提交列表+在重命名文件时跟踪该文件。--first-parent尽管有和标志,我找不到实现此目标的方法--follow。当它们一起使用时,它们似乎无法按预期工作。

举个例子,假设我有一个名为foo.txt.

  1. master分支上,我将“hello”附加到该文件并提交消息commit: hello
  2. 我创建一个名为 的新分支branch-world,将“world”附加到foo.txt 并提交消息commit: world
  3. 我移动master并跑git merge --no-ff branch-world
  4. 我创建一个名为branch-rename、 run git mv foo.txt bar.txt、 commit 的新银行,并包含以下消息commit: rename
  5. 我移动master并跑git merge --no-ff branch-rename
  6. 我创建一个dummy.txt没有内容的新虚拟文件,并使用消息提交该文件commit: dummy

鉴于以下步骤:

  • git log --oneline给了我太多信息,因为我只想了解以下内容foo.txt

    cf0c1e4 (HEAD -> master) commit: dummy
    ca857ce Merge branch 'branch-rename'
    45ab4bc (branch-rename) commit: rename
    2057b9c Merge branch 'branch-world'
    46605f3 (branch-world) …
    Run Code Online (Sandbox Code Playgroud)

git

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

jQuery - 选择最准确的节点

我有这个HTML结构:

<ul>
    <li class="foo">
        content1
        <ul>
            <li class="foo">
                content2
                <ul>
                    <li class="foo">
                        content3
                        <!-- N levels of depth -->
                    </li>
                </ul>
            </li>
        </ul>
    </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我想<li>在click事件中检索第二个元素(包含"content2").我目前正在使用这种方法:

$('body').on('click', '.foo', function() {
    var $this = $(this);
    // Do something with the element
});
Run Code Online (Sandbox Code Playgroud)

但是,正如您可以猜到的,这也将选择父元素,因为它还包含一个foo类.我想选择最"准确"的节点而不触发父元素的事件(例如:如果我点击content3,它应该只触发该元素的事件,而不是他的父母).

有什么建议吗?

html jquery

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