Nodejs笔记整理01

一 爬虫

  1. npm install cheerio --save
  2. 爬图片
   const cheerio = require('cheerio');
   res.setEncoding('utf8');
   let rawData = '';
   res.on('data', (chunk) => {// 接收数据
       rawData += chunk;
       // console.log(chunk);
   });
   res.on('end', () => { // 接收数据结束
       const $ = cheerio.load(rawData);//
       const reg = /^(\/\/)|^http:\/\//; // 正则 用于统一协议
       $('img').each(function(i, elm) {
           let url = $(elm).attr('src').replace(reg, 'https://');
           let filename = url.split('/').pop();

           http.get(url, (res) => {
               let imgData = '';
               // 图片的传输方式 是二进制传输
               res.setEncoding('binary'); // 设置传输格式
               res.on('data', chunk => { imgData += chunk });
               res.on('end', () => {
                   fs.writeFile(path.join(__dirname, 'public', 'img', filename), imgData, 'binary', err => {
                       if (err) console.log(err);
                       console.log('文件下载成功');
                   });
               });
           });
       });
   });

二 解决跨域

前端请求的方式: “GET,HEAD,PUT,PATCH,POST,DELETE”

    • 设置响应头
       app.get('/users', (req, res) => {
           res.setHeader('Access-Control-Allow-Origin', '*');
           res.send('<h1>用户页</h1>');
       });
    • cors 中间件解决跨域(npm install cors -S)

        const cors = require('cors');
         app.use(cors()); // 使用cors中间件实现跨域
      
    
    
    
    • request 插件 (npm install request -S)
       const request = require('request');
       app.get('/api', (req, res) => {
          request(`http://api.k780.com/?${querystring.stringify(args)}`, (err, respone, body) => {
             if (err) console.log(err);
             res.send(body);
         })
      

    });

    
    
    
    

三 自定义包发布

  1. 注册NPM账号
  2. 切换npm源 nrm use npm
  3. 创建入口文件 index.js 和READEME.md项目使用说明文件
  4. 登陆npm
    • 发布流程
    • npm adduser
    • npm publish

四 创建一个服务的方式

    • http.createServe r内置模块创建:
   http.createServer((req,res)={
   }).listen(8088,()=>{})
    • express 插件。快速搭建web(http服务)和api服务
    const app =express();
    app.listen(8066,()=>{
        console.log(`server is running on http://localhost:8066`)
    })

五 响应零散知识总结

设置响应头

    res.writeHead(200, {
        "content-type": "text/html;charset=utf-8"
    });
  1. res.send(‘这里是管理员接口’);发送数据, res.end(val);响应结束

  2. http.createServer((req, res) => {})
    req.on(‘data’, (val) => {})监听到前端发来的数据

    • 第三方模块request 也是一个请求,数据使用如上
    • http.get,响应数据内置模块
      res.on(data’, (chunk) => {})监听前端发来的数据,拼接数据块
      res.on(‘end’, () => { // 数据接收结束事件}
  3. request 模块数据都保存在body里面

request(http://api.k780.com/?${querystring.stringify(args)}, (err, respone, body) => {
if (err) console.log(err);
res.send(body);
})

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论
请先登录 后发表评论~
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页

打赏作者

Zxm?

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值