小编Ale*_*exZ的帖子

全局匹配,排除所有JS文件

我是gulp.js的新用户.我想将所有非javascript文件移动到构建目录.我现在得到的是:

//Test copy
gulp.task('test-copy', function() {
    gulp.src(['myProject/src/**/*.!(js|map|src)'])
        .pipe(gulp.dest('myProject/build'));
});


//Results for various files
myProject/css/style.css //Copied - GOOD
myProject/html/index.html //Copied - GOOD
myProject/js/foo.js //Not Copied - GOOD
myProject/js/bar.min.js //Copied - BAD!
myProject/js/jquery-2.0.3.min.js //Copied - BAD!
myProject/js/jquery-2.0.3.min.map //Copied - BAD!
Run Code Online (Sandbox Code Playgroud)

如您所见,它只匹配文件路径字符串中的第一个点之后,而不是最后一个,如我所愿.如何修改glob搜索字符串以按照我的意愿行事?

glob pattern-matching node.js gulp

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

如果子组件的props不变,React是否仍然重新渲染它?

假设我在React中有以下父组件和子组件配对:

var ChildComponent = React.createClass({
    getDefaultProps: function(){
        return {
            a: 'a',
            b: 'b',
            c: 'c'
        }
    },

    render: function() {
        return (
            /* jshint ignore:start */
            <div className={'child' + (this.props.b ? ' modifierClass' : '')} something={this.props.a}>
                {this.props.c}
            </div>
            /* jshint ignore:end */
        );
    }
});


var ParentComponent = React.createClass({
    componentDidMount: function(){
        //After 10 seconds, change a property that DOES NOT affect the child component, and force an update
        setTimeout(function(){
            this.setState({foo: 'quux'});
            this.forceUpdate();
        }.bind(this), 10000);
    }

    getInitialState: function(){
        return {
            foo: …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-jsx

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

DOM替换元素上的整个样式属性(CSSStyleDeclaration)

我知道要替换单个样式,代码看起来像这样:

myDOMElement.style.height = '400px';
Run Code Online (Sandbox Code Playgroud)

但是,如果我想一举完全替换整个样式对象,从而加快速度并避免重绘,该怎么办?例如,我想这样做:

//Get the computed style
var computedStyle = window.getComputedStyle(myDOMElement);

//Change some stuff in that CSSStyleDeclaration without rendering
computedStyle.height = '10px';
computedStyle.width = '20px';
computedStyle.whatever = 'something';

//Apply the entirety of computedStyle to the DOM Element, thereby only redrawing once
myDOMElement.style = computedStyle;
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此代码时,我的新样式才会被忽略.我该怎么做才能解决这个问题?

javascript css dom

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

获取对象数据的浅拷贝的最快方法是什么?

请仅使用香草 JS

也就是说,它的输出应该是一个只包含数据的对象,而忽略原始的方法/原型。从 default 继承的复杂数据结构Object,如Array,可以以浅层方式复制,作为引用。我现在的做法是:

function shallowCopyObjectData(obj) {
  output = {};
  for (var i in item) {
    output[i] = obj[i];
  }
  return output;
};
Run Code Online (Sandbox Code Playgroud)

我见过的另一种方式是:

function shallowCopyObjectData(obj) {
  return JSON.parse(JSON.stringify(obj));
};
Run Code Online (Sandbox Code Playgroud)

最有效的方法是什么?

我制作了一个正在运行的 jsPerf 来比较速度。如果你想出了解决办法,请随意fork并添加:http : //jsperf.com/shallow-object-data-copy

编辑 @Barmar:我知道已经发布了一个类似的问题,但它询问了克隆对象的最快方法,这意味着保留构造函数、原型等的深层复制。这个问题询问了复制的最快方法顶层的数据

javascript

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

Firebase-admin无法预测的阅读时间

我有一个Firebase数据库,客户端通过在node.js上运行的REST API访问,然后使用firebase-admin节点客户端从我的firebase数据库中读取.对于我的大多数端点,需要几个并发数据库读取.例如,对于api/item/:itemKey终点,我需要拉item从数据库中,然后,一旦已收到,我同时向所有的嵌套的spec,panel,querytask与检索到的项目相关联的对象.这使得数据库调用连续两次"波动":第一项检索,然后检索嵌套在该项中的所有资源.

问题是这些调用的延迟非常难以预测.例如,以下是对同一端点的两次连续调用的日志,彼此在5秒内完成:

// START REQUEST 1
Endpoint activated (invocation #: 18) ("GET /api/items/:itemKey")
Firebase items READ Success ("id: -LDhjV8Hkievzbh5UVfz"): 78ms
Firebase specs READ Success ("id: -LDIezNhwWX8OmoWXZO3"): 72ms
Firebase specs READ Success ("id: -LDIezNqbVuvkpr9WEf8"): 73ms
Firebase panels READ Success ("id: -LDhjV5y1mAwPmJkE4d3"): 74ms
Firebase queries READ Success ("id: -LDhjV34aJlz_XFwOp6B"): 69ms
Firebase queries READ Success ("id: -LDhjV3QO1AM9UiCVdux"): 71ms
Firebase tasks READ Success ("id: -LDhjV34aJlz_XFwOp6C"): 71ms
Firebase tasks READ …
Run Code Online (Sandbox Code Playgroud)

database-performance node.js firebase firebase-realtime-database firebase-admin

7
推荐指数
0
解决办法
119
查看次数

单个Backbone模型实例可以同时存在于两个集合中吗?

我知道它的"this.collection"值只会显示第一个集合,但这与Backbone兼容吗?或者它会自动从之前的集合中删除吗?

var MyModel = Backbone.Model.extend({defaults: {test: '123'}});
var MyCollection1 = Backbone.Collection.extend({model: MyModel});
var MyCollection2 = Backbone.Collection.extend({model: MyModel});

var instance = new MyModel({
    test: '456'
});
MyCollection1.add(instance);
MyCollection2.add(instance);

console.log(instance.collection); //Returns "MyCollection1" only, not an array of all collections of which this model is a member
Run Code Online (Sandbox Code Playgroud)

上面的代码工作,我只是想知道我是否通过这样做打破任何事情(特别是与事件有关).

backbone.js

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

requireJS中的上下文和嵌套模块

我在requireJS中遇到了一些上下文问题.我想要的是在配置阶段(在我加载任何模块之前)创建一个上下文"mycontext",然后保持整个上下文.这很复杂,因为我很遗憾需要(< - ha!)为我的模块使用CommonJS语法.所以,如果这是我的基本文件,如下所示:

base.js

contextReq = require.config({
    context: 'mycontext',
    baseUrl: 'http://www.example.com/src/',
    paths:{
        jquery: 'http://ajax.cdnjs.com/ajax/libs/jquery/2.0.3/jquery.min',
    },
});

(function(){
    contextReq(['require', 'topModule'], function(require, topModule){
        topModule.initialize();
    });
})();
Run Code Online (Sandbox Code Playgroud)

然后,我加载topModule:

http://www.example.com/src/topModule.js

define(['require', 'jquery', 'nestedModule'], function (require) {
    var $ = require('jquery');
    var other = require('nestedModule');
});
Run Code Online (Sandbox Code Playgroud)

jQuery是否仍然只在mycontext中加载?如果我更进一步怎么办:

http://www.example.com/src/nestedModule.js

define(function (require) {
    var $ = require('jquery');
    var oneMore = require('someOtherModule');
});
Run Code Online (Sandbox Code Playgroud)

我们已经在这个上下文中访问了jquery,但是"someOtherModule"也会在这个上下文中加载,还是在全局"_"上下文中加载?在进行require调用之前,有没有办法检查模块是否已经加载?

谢谢!

javascript module requirejs

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

浏览器如何比较URL进行缓存?

具体来说,URL的哪些部分用于比较。假设我在提供CSS样式表https://www.example.com/a/b/test.css与相应的HTTP报头cache-controlmax-age等当用户进入到每个以下URL后,该人将担任缓存文件?

https://www.example.com/a/b/test.css
https://www.example.com/a/b/test.css?abc=123
https://www.example.com/a/b/test.css#abc=124
Run Code Online (Sandbox Code Playgroud)

基本上,我要问的是,当浏览器决定是否使用缓存的资源时,是否比较URL字符串的“搜索”和“哈希”部分。此外,这种比较逻辑在浏览器之间是否是一致的,还是某些标准的一部分?

browser caching cross-browser cache-control browser-cache

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

Chrome 扩展内容脚本之间的 postMessage 安全性如何?可能的替代方案?

根据MDN 上的这篇文章,使用 postMessage 在 chrome 中与内容脚本之间传递消息并不安全,因为无法正确定义源属性,并且其 targetOrigin 很难安全地传递到潜在的恶意站点。这仍然是真的吗?是否有其他方法可以确认收到消息的来源,并仅将消息发送到特定的内容脚本?或者除了完全使用内容脚本之外还有其他选择吗?

javascript security postmessage google-chrome-extension content-script

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