node.js的koa框架学习笔记和简单的爬虫练习
基于Node.js平台的下一代网络开发框架
Koa由最初的Express团队创建,致力于成为一个更小、更具表现力和更健壮的Web框架。使用koa编写web应用程序,可以避免回调函数重复、繁琐的嵌套,大大提高错误处理的效率。Koa没有在内核方法中绑定任何中间件,只是提供了一个轻量级的优雅函数库,使得编写Web应用变得很容易。开发思路和express类似,最大的特点是可以避免异步嵌套。Koa2利用了ES7的async/wait特性,极大地解决了我们在进行nodejs开发时,async带来的麻烦。
英文官方网站:http://koajs.com
英文官方网站:http://koajs.cn
1.koa
安装koa包: npm i -S [emailprotected]并引入: const KOA=require(' KOA ');实例化对象: const app=new koa
通过实例操作,专用于客户端请求的功能被称为中间件,它是用use()注册的
异步异步必须在use()函数中使用;使用可以调用无数次;
有两个参数:
A)ctx:节点的上下文、请求和响应对象,其中不建议使用节点的原始requset和res属性,而是使用koa封装的REQUSET和response属性。
B)next: next(),将控制权交给下一个中间件。
最后一个中间件使用next()是没有意义的。执行完控制权后,会回到下一级,直到第一级。
1.下一个参数演示的使用
const Koa=require(' Koa ');const Koa=new Koa();//中间件1koa.use (async (CTX,下一个)={console.log ('1,接收请求控制权');等待下一个();//将控制权传递给下一个中间件控制台. log('1,返回请求的控制权');});//将中间件注册到koa的实例//中间件2koa.use (async (CTX,next)={console.log ('2,接收控制请求');等待下一个();Console.log('2,返回请求的控件');});//中间件3koa.use (async (CTX,下一个)={console.log ('3,接收请求的控制权');Console.log('3,返回请求的控件');});Koa.listen (3000,()={console.log('开始监听端口3000 ');});注意:当中间件中没有next()时,将不会执行以下中间件
访问localhost:3000的渲染图;
注意:将有两个操作,因为图标图标也将被请求一次
2.2.ctx参数的使用演示
const Koa=require(' Koa ');const Koa=new Koa();Koa.use (async (CTX,next)={CTX.body=' body可以返回数据';Ctx.body='可以多次调用';Ctx.body=' end()不是必需的';});Koa.listen (3000,()={console.log('监听开始');});效果:
ctx.url,ctx.path,ctx.query,ctx.querystring,ctx.state,ctx.type
const Koa=require(' Koa ');const Koa=new Koa();koa.use(async (ctx,next)={ CTX . body=CTX . URL;CTX . body=CTX . path;CTX . body=CTX . query;CTX . body=CTX . query string;});Koa.listen (3000,()={console.log('监听开始');});转到http://localhost:3000/path?例如,Name=sjlage=18,渲染:
1.url:整个路径
2.路径:非查询部分
3.query:将查询部分转换为JSON对象
4.querystring:将查询部分转换为字符串
5.ctx.state,ctx.type表示状态和类型
2.简单的爬行动物练习
厨师模块安装请求
Npm i -S请求:请求模块npm i -S检查:抓取页面模块(JQ核心)抓取网页数据案例(随机网页)
//导入模块const request=require('超级代理');//导入请求模块const cherio=require(' cherio ');const { join }=require(' path ');const fs=require(' fs ');让arr=[],//存放数据reg=/\n|\s /g,//替换中使用网址='https://www.shiguangkey.com/course/search?键=前端/';请求。获取(网址)。end((err,RES)={ const $=cheerio。加载(RES . text);//把字符串内的标签当成数字正射影像图来使用$('.课程项目')。每个((I,v)={ //v当前进来的多姆,根据网页的布局结构来找到准确的数字正射影像图节点const obj={ imgSrc : $(v).查找(' img ').道具(“src”),价格:美元.查找('。fr span ').文本()。替换(reg ' '),总计:美元.查找('。项目-txt ').文本()。替换(reg ' '),href :联接(网址$(v).查找('。cimg ').prop(' href ')};console.log(join(url $(v)).查找('。cimg ').prop(' href ');//拼接由…改编推送(obj);//把对象放进数组里});fs.writeFile(' ./sjl.json ',json。stringify(arr));//将爬到的数据写入文档中});以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
版权声明:node.js的koa框架学习笔记和简单的爬虫练习是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。