小编bus*_*ens的帖子

为什么扩展本机对象是一种不好的做法?

每个JS意见领袖都说扩展原生对象是一种不好的做法.但为什么?我们是否获得了性能?他们是否害怕有人以"错误的方式"做到这一点,并添加了可枚举的类型Object,几乎破坏了任何对象上的所有循环?

TJ Holowaychukshould.js为例.他增加了一个简单的getterObject,一切工作正常(来源).

Object.defineProperty(Object.prototype, 'should', {
  set: function(){},
  get: function(){
    return new Assertion(Object(this).valueOf());
  },
  configurable: true
});
Run Code Online (Sandbox Code Playgroud)

这真的很有道理.例如,可以扩展Array.

Array.defineProperty(Array.prototype, "remove", {
  set: function(){},
  get: function(){
    return removeArrayElement.bind(this);
  }
});
var arr = [0, 1, 2, 3, 4];
arr.remove(3);
Run Code Online (Sandbox Code Playgroud)

是否有任何反对扩展本机类型的论据?

javascript prototype prototypal-inheritance

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

仅运行一次CSS3动画(在页面加载时)

我正在制作一个由CSS3驱动的简单登陆页面.为了让它看起来很棒,有一个<a>很大的问题:

@keyframes splash {
    from {
        opacity: 0;
        transform: scale(0, 0);
    }
    50% {
        opacity: 1;
        transform: scale(1.1, 1.1);
    }
    to {
        transform: scale(1, 1);
    }
}
Run Code Online (Sandbox Code Playgroud)

为了让它更加精彩,我添加了一个悬停动画:

@keyframes hover {
    from {
        transform: scale(1, 1);
    }
    to {
        transform: scale(1.1, 1.1);
    }
}
Run Code Online (Sandbox Code Playgroud)

但问题来了!我分配了这样的动画:

a {
    /* Some basic styling here */

    animation: splash 1s normal forwards ease-in-out;
}
a:hover {
    animation: hover 1s infinite alternate ease-in-out;
}
Run Code Online (Sandbox Code Playgroud)

一切都运行得很好:<a>飞溅到用户脸上,当他徘徊时有一个很好的振动.一旦用户模糊,<a>平滑的东西突然结束并<a>重复splash动画.(这对我来说是合乎逻辑的,但我不想要它)如果没有一些JavaScript类Jiggery …

css css3 css-animations

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

在PHP中删除超过2天的所有文件的正确方法

只是好奇

        $files = glob(cacheme_directory()."*");
        foreach($files as $file)
        {
            $filemtime=filemtime ($file);
            if (time()-$filemtime>= 172800)
            {
                unlink($file);
            }
        }
Run Code Online (Sandbox Code Playgroud)

我只是想确定代码是否正确.谢谢.

php caching file

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

多语言快递应用

我想知道在express中相同布局中实现相同内容的多个版本/语言的最佳方法是什么.

我应该这样做吗?

app.get("/", function(req, res) {
    res.render(language + "/index");
});
Run Code Online (Sandbox Code Playgroud)

还是有更智能/更好的方式?

node.js express pug

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

在多个node.js HTTP进程之间共享一个端口

我有一个root服务器,上面运行着几个node.js项目.它们应该在自己的进程和目录中单独运行.考虑这个文件结构:

/home
+-- /node
    +-- /someProject      | www.some-project.com
    |   +-- index.js
    |   +-- anotherFile.img
    |   +-- ...
    +-- /anotherProject   | www.another-project.com
    |   +-- /stuff
    |   +-- index.js
    |   +-- ...
    +-- /myWebsite        | www.my-website.com
    |   +-- /static
    |   +-- index.js
    |   +-- ...
    +-- ...               | ...
Run Code Online (Sandbox Code Playgroud)

每个index.js应该开始与它的一个单独的处理cwd集合到它的父文件夹(someProject,anotherProject等).

想想ov vHosts.每个项目都会启动一个监听自己域名的Web服务器.而且存在问题.只有一个脚本可以启动,因为它们都尝试绑定到端口80.我深入研究了node.js API并寻找可能的解决方案:child_process.fork().

可悲的是,这不是很好.当我尝试将服务器实例发送到主进程(稍后发出请求)或者从主服务器requestresponse从主服务器到服务器的对象时,我得到错误.这是因为node.js在内部尝试将这些高级对象转换为JSON字符串,然后将其重新转换为其原始形式.这使得所有对象都失去了它们的引用和功能.

第二种方法 child.js

var http = require("http");

var server = http.createServer(function(req, res) {
    // stuff...
});
server.listen(80); …
Run Code Online (Sandbox Code Playgroud)

linux http vhosts node.js

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

从TLS客户端hello中提取服务器名称指示(SNI)

如何从TLS客户端Hello消息中提取服务器名称指示.我很难理解这个关于TLS扩展的非常神秘的RFC 3546,其中定义了SNI.

到目前为止我已经理解的事情:

  • 当你输入缓冲区时,主机是utf8编码和可读的.
  • 主机前一个字节,它决定了它的长度.

如果我能找到该长度字节的确切位置,那么提取SNI将非常简单.但是我如何首先到达那个字节?

language-agnostic ssl protocols rfc binary-data

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

RegEx扩展拉丁字母(äöüèß)

我想在Node.js中做一些基本的字符串测试.假设我有一个表格,用户输入他们的名字,我想检查它是垃圾还是真名.

令人高兴的(或者可悲的是我的支票)我从世界各地获得用户,这意味着他们的名字包含非英文字符,例如ä ö ü ß é.我习惯使用,/[A-Za-z -]{2,}/但这与名字不匹配"Jan Buschtöns".

我是否必须手动将每个可能的非英语但拉丁字符添加到我的RegEx才能工作?我不希望RegEx喜欢100多个字符/[A-Za-z -äöüÄÖÜßéÉèÈêÊ...]{2,}/.

javascript regex utf-8 node.js

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

如何处理Node.js加密流中的块长度

我想加密输入流并通过TCP将其发送到另一台服务器.到现在为止还挺好.一切顺利,直到连接关闭.几乎在任何情况下都不满足192位所需的块大小,并且脚本崩溃wrong final block length,尽管我打开了自动填充.

在使用旧版界面时,似乎只有自动填充才有效.我在这里做错了吗?

var net = require("net")
  , crypto = require("crypto");

var credentials = { algorithm: "aes192", password: "password" }
  , decipher = crypto.createDecipher(credentials.algorithm, credentials.password)
  , cipher = crypto.createCipher(credentials.algorithm, credentials.password);

decipher.setAutoPadding(true);
cipher.setAutoPadding(true);

net.createServer(function(socket) {
  socket.pipe(socket);
}).listen(2000);

var socket = net.connect(2000);

socket.pipe(decipher).pipe(process.stdout);
process.stdin.pipe(cipher).pipe(socket); 

socket.write("Too short.");
socket.end();
Run Code Online (Sandbox Code Playgroud)

在我理想的Node.js世界中,当源流关闭时,(De-)密码流将自动填充最后一个块.我认为这是一个设计缺陷.

除了打开一个问题,我该如何规避这种行为呢?我是否必须在Socket和(De-)Cipher Streams之间放置一个字节计数器?

javascript cryptography stream node.js

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

node.js中存在奇怪的JSON.parse()错误

我正在node.js中通过TCP检索一些stringifyed JSON,想要解析它.所以我的方法与此类似.我缩短并简化了它,所以你不必知道周围的逻辑.

socket.on("data", function(data) {
    console.log(data.toString());               // Shows the original stringifyed version
    console.log(JSON.parse(data.toString()));   // Doesn't work
});
Run Code Online (Sandbox Code Playgroud)

完整的(美化的)JSON就是这样.如您所见,没有错误.

{
    "result": "success",
    "source": "chat",
    "success": {
        "message": "test",
        "time": 1331770513,
        "player": "silvinci"
    }
}
Run Code Online (Sandbox Code Playgroud)

JSON.parse(data.toString())总是把这个愚蠢的错误抛给我:

{"result":"success","source":"console","success":{"time":1331762264,"line":"20
^
SyntaxError: Unexpected token {
    at Object.parse (native)
    at Socket.<anonymous> (/home/node/api.js:152:35)    // irrelevant from here on
    at Socket.emit (events.js:67:17)
    at TCP.onread (net.js:347:14)
Run Code Online (Sandbox Code Playgroud)

所以我想:"JSON-String可能出现什么问题.让我们直接尝试.不应该工作." 惊喜,惊喜!有效.当我直接输入字符串时为什么它可以工作?

javascript json v8 node.js

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

如何获取Mongoose实例的所有模型的对象

我知道mongoose.model("myModel")返回myModel模型.但是我如何让Mongoose给我一个目前已注册的所有模型的数组/对象/列表?

我认为这有点是一个设计缺陷.

mongoose node.js

6
推荐指数
2
解决办法
7116
查看次数