javascript基础知识的重要性

javascript基础知识的重要性


今天无意间看到了网上用node.js写的爬虫代码,惊叹node.js的牛逼,几行代码就可以了(当然包比较丰富),而且是高并发,研究了下代码发现里面都是回调函数,作用链,贴上源代码:

var eventproxy = require('eventproxy');
var superagent = require('superagent');
var cheerio = require('cheerio');
var url = require('url');

var cnodeUrl = 'https://cnodejs.org/';

superagent.get(cnodeUrl)
    .end(function (err, res) {
        if (err) {
            return console.error(err);
        }
        var topicUrls = [];
        var $ = cheerio.load(res.text);
        $('#topic_list .topic_title').each(function (idx, element) {
            var $element = $(element);
            var href = url.resolve(cnodeUrl, $element.attr('href'));
            topicUrls.push(href);
        });

        var ep = new eventproxy();

        ep.after('topic_html', topicUrls.length, function (topics) {
            topics = topics.map(function (topicPair) {
                var topicUrl = topicPair[0];
                var topicHtml = topicPair[1];
                var $ = cheerio.load(topicHtml);
                return ({
                    title: $('.topic_full_title').text().trim(),
                    href: topicUrl,
                    comment1: $('.reply_content').eq(0).text().trim(),
                });
            });

            console.log('final:');
            console.log(topics);
        });

        topicUrls.forEach(function (topicUrl) {
            superagent.get(topicUrl)
                .end(function (err, res) {
                    console.log('fetch ' + topicUrl + ' successful');
                    ep.emit('topic_html', [topicUrl, res.text]);
                });
        });
    });

代码里面 superagent.get(url).end(function(err, res){});
ep.after(‘topic_html’, topicUrls.length, function (topics) {})
这些都是使用回调函数的很好的使用,要是之前对回调函数的原理不清楚,这个看起来很乱的样子,但是理解的原理看起来就很容易理解,还有类似react.js中prop()方法是不可修改的,要是知道javascript对象属性的Configurable,Enumerable,Writable,Value中Configurable,和Writable设置成false,对象的属性就是不可更改的,就很快的理解了这些用法,怪不得张无忌练了九阳神功,练其他武功都那么快,以后自己多关注本质,骨架型的东西,这样才能理解的通透,虽然js各种框架层出不穷,但本质都是javascript,研究透了本质,框架上手就很快;继续研究javascript的基础知识。

你可能感兴趣的:(javascript)