Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

node杂记 #3

Open
coxo opened this issue Dec 11, 2015 · 5 comments
Open

node杂记 #3

coxo opened this issue Dec 11, 2015 · 5 comments
Labels

Comments

@coxo
Copy link
Member

coxo commented Dec 11, 2015

💯 record 1:
一些原则和设计模式的字面定义Node.js平台及其
生态系统;最奇特的可能是它的异步性和它的
编程风格让回调的大量使用。然而,还有其他
平台的基本组成部分,例如,它的模块
系统,它允许多个版本的相同依赖共存于一个
应用,和观察者模式,由EventEmitter类实现,
这完全符合回调处理异步代码。
因此,重要的是,我们首先深入到这些基本原则和
模式,不仅是为了写正确的代码,而且要能有效的
解决更大更复杂的问题的设计决策。
另一方面,刻画了Node.js是哲学。接近Node.js
其实不仅仅是学习一门新技术,它还包括一个
文化与社会。我们将看到如何影响我们的方式
设计我们的应用程序和组件,以及它们与那些相互作用的方式
社区创建。

@LeoHuiyi
Copy link
Member

:bowtie:👍

@kitebear
Copy link
Member

不错不错 哲学思维

@coxo
Copy link
Member Author

coxo commented Dec 11, 2015

record 2: 👍

var EventEmitter = require('events').EventEmitter;
var fs = require('fs');
function findPattern(files, regex) {
    var emitter = new EventEmitter();
    files.forEach(function(file) {
        fs.readFile(file, 'utf8',
        function(err, content) {
            if (err) return emitter.emit('error', err);
            emitter.emit('fileread', file);
            var match = null;
            if (match = content.match(regex)) match.forEach(function(elem) {
                emitter.emit('found', file, elem);
            });
        });
    });
    return emitter;
}

@tudousi
Copy link
Member

tudousi commented Dec 11, 2015

因为js单线程的原因所以有了回调这种多任务的处理方式和Event,可以用很多奇特的写法编写js程序,这是js的魅力所在

@VaJoy VaJoy added the node label Dec 11, 2015
@coxo
Copy link
Member Author

coxo commented Dec 30, 2015

jQuery的事件系统设计的稍微复杂了一些,实际上你绑定的句柄会与当前节点进行关联。这里面用到了data模块,而对外的on和trigger只是简单的调用了Event模块的add和trigger。他们都依赖的data模块。实际上拨开所有的代码看本质。就是一个观察者模式的实现,如Node中 events模块的EventEmitter

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants