javascript基礎知識の重要性

4119 ワード

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.end;ep.after(topic_)、topicUrls.length、function(topics){}これらはすべてコールバック関数を使用しているので、よく使われています.もし以前はコールバック関数の原理がよく分からないなら、これはとても乱れているように見えますが、理解の原理は分かりやすいです.また、react.jsのpropのような方法は修正できません.javascript対象属性のConfigrable、Eumerable、Writable、ValueのConfigrableとWritableがfalseに設定されていることを知っていたら、対象の属性は変更できないので、これらの用法をすぐに理解しました.jsの各种の枠组みが次々と现れますが、本质はすべてjavascriptで、本质をよく研究して、枠组みの上手さはとても速いです.引き続きjavascriptの基礎知識を研究します.