javascript基礎知識の重要性
4119 ワード
javascript基礎知識の重要性
今日はついネット上でnode.jsで書いた爬虫類コードを見ました.node.jsの牛逼に驚嘆しました.何行かのコードでいいです.(もちろんカバンが豊富です.)しかも高合併です.コードを調べたら、中は全部コールバック関数で、作用チェーンはソースコードを貼り付けます.
今日はついネット上で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の基礎知識を研究します.