您的位置:首页 > Web前端 > JavaScript

javascript基础知识的重要性

2016-10-18 19:02 232 查看

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