-
process node js 独有的属性查看全部
-
Events a.EventEmitter支持多个事件监听,最大为10,也可以自定义最大数 //添加监听 var EventEmitter = require('events').EventEmitter; var instance = new EventEmitter(); instance.on('event',function(arguments){}); b.如果超过十个也能执行,不过有可能会造成内存泄漏 //自定义最大数 //每个setMaxListeners针对的是一个特定事件:即event1,event2,... 默认最大都为10,本例为num instance.setMaxListeners(num); c.事件监听之后,需要emit(发射,发出)才会执行 instance.emit('event',arguments) d.判断是否监听 boolean instance.emit('event',arguments) //true or false e.移除监听事件 //移除单个事件监听 instance.removeListener('event',funcName) //移除事件需具名函数,匿名函数不行 //移除多个事件监听 instance.removeAllListerner() //不传参表示移除所有事件监听 instance.removeAllListerner('event') //移除特定event的所有事件监听 f.计算事件监听数量 //第一种 instance.listeners('event').length //第二种 EventEmitter.listenerCount(instance,'event')查看全部
-
protocol------底层使用协议 slashes-------是否有协议双实线 host----------域名 port----------端口 hostname------主机名 hash----------哈希值 search--------查询字符串参数 query---------发送给http协议的数据(等号分隔开的键值为字符串) pathname------访问资源路径名 path----------路径 href----------完整超链接 > url.parse('http://imooc.com:8080/course/list?from=scoot&course=node#floor1') Url { protocol: 'http:', slashes: true, auth: null, host: 'imooc.com:8080', port: '8080', hostname: 'imooc.com', hash: '#floor1', search: '?from=scoot&course=node', query: 'from=scoot&course=node', pathname: '/course/list', path: '/course/list?from=scoot&course=node', href: 'http://imooc.com:8080/course/list?from=scoot&course=node#floor1' }查看全部
-
nodejs 运行环境查看全部
-
function filterChapters(html){ var $ = cheerio.load(html) var chapters = $('.chapter') var data = [] chapters.each(function(){ var chapter = $(this) var chapterTitle = chapter.find('strong').text() var videos = chapter.find('.video').children('li') var item = { chapterTitle: chapterTitle, videos:[] } videos.each(function(){ var title = $(this).find('a').text() var id = $(this).find('a').attr('href').split('video/')[1] var video = { title:title, id:id } item.videos.push(video) }) data.push(item) }) return data } function printChapters(data){ data.forEach(function(item){ console.log(item.chapterTitle + '\n') item.videos.forEach(function(video){ console.log(' 【' + video.id + '】' + video.title) }) }) }查看全部
-
var http = require('http') var cheerio = require('cheerio') http.get('http://www.imooc.com/learn/348',function(req,res){ var html = '' req.on('data',function(data){ html += data }) req.on('end',function(){ var data = filterChapters(html) printChapters(data) }) }).on('error',function(){ console.log('请求出错') });查看全部
-
HTTP头和正文查看全部
-
function filterChapters(html){ var $ = cheerio.load(html) var chapters = $('.chapter') var courseData = [] chapters.each(function(item){ var chapter = $(this); var chapterTitle = chapter.find('strong').text().replace(/[\r\n]*[ ]*/g,""); var videos = chapter.find('.video').children('li'); var chapterData = { chapterTitle:chapterTitle, videos:[] } videos.each(function(){ var video = $(this).find('.J-media-item'); var videoTitle = video.text().replace(/[\r\n]*[ ]*[开始学习]*(\(\d+:\d+\))?/g,"") var id = video.attr('href').split('video/')[1]; chapterData.videos.push({title:videoTitle,id:id}) }) courseData.push(chapterData); }) return courseData; }查看全部
-
序列化:querystring.stringify() 反序列化:querystring.parse() 转义:querystring.escape() > querystring.escape('<哈哈>') '%3C%E5%93%88%E5%93%88%3E' 反转义:querystring.unescape() > querystring.unescape('%3C%E5%93%88%E5%93%88%3E') '<哈哈>'查看全部
-
url.format(urlObj): 将url对象解析成url地址查看全部
-
url.parse 方法 将一个url地址解析成了url对象 Url基础指点: protocol:表示url采用的什么协议 slashes:表示是否有斜线 host:表示主机 post:表示端口(默认80端口不显示) hostname:表示主机名称 hash:指的是#号后的内容包含#<br>(锚点) search:指的是?后#前的内容,包含?(查询字符串参数) query:指的是search不包含?的内容 pathname:指的是路径名称,一般指主域名之后的内容 path:路径 href:代表未解析的url地址查看全部
-
nodeJs 分化成两条支线查看全部
-
nodejs中exports与module.exports的区别 http://www.cnblogs.com/pigtail/archive/2013/01/14/2859555.html 其实,Module.exports才是真正的接口,exports只不过是它的一个辅助工具。 最终返回给调用的是Module.exports而不是exports。 所有的exports收集到的属性和方法,都赋值给了Module.exports。当然,这有个前提,就是Module.exports本身不具备任何属性和方法。 如果你想你的模块是一个特定的类型就用Module.exports。如果你想的模块是一个典型的“实例化对象”就用exports。 前面已经提到module.exports是真正的接口,exports只不过是它的辅助工具。推荐使用exports导出,除非你打算从原来的“实例化对象”改变成一个类型。查看全部
-
@模块的流程 创建模块 => 入口js文件,加入特定的功能 导出模块 => 把功能和文件名也就是模块名建立关系 加载模块 => 在其他文件里面引入并加载这个模块 使用模块 => 直接调用模块中命名好的方法查看全部
-
@模块的分类 模块类型分为三类: =>核心模块 =>文件模块 =>第三方模块 在nodejs中文件和模块是一一对应的 引用模块的方式 1用文件路径引用 2用模块名来引用 如果用名称引用非核心模块的话 node就会把模块名映射到对应模块名的路径 包含了核心函数的模块会在node启动时预先加载 非核心模块就是使用npm安装的第三方模块 或者其他人创建的模块查看全部
举报
0/150
提交
取消