02_node.js流、爬虫、模块化、npm上传自定义包、前端环境

1、stream流:

  • node.js中数据是分片(chunk)传输的
  • 为了提高性能,较少cpu能耗,创建了管道流pipe。它是连接I/O之间的一个管道。
  • gulp就是依赖了node.js中流的概念,才在与grunt的竞争中胜出。
  • 示例代码(业务:将当前父级目录下的a.txt打包,生成一个压缩文件)
    const zlib = require("zlib");//zlib是压缩包的内置模块(插件)
    const fs require("fs");
    const inp= fs.createReadStream("../a.txt");//创建可读流
    const out = fs.createWriteStream("a.txt");//创建可写流
    const gzip = zlib.createGzip();//创建空压缩包
    inp.pipe(gzip).pipe(out)//通过fs文件系统将data写入
    

2、console模块

  • 底层调用的是process.stdout

3、http爬虫

  • 概念:通过后端语言爬取网页中的数据,然后通过特点模块清洗数据,最后输出给前端。
  • 怎么做到数据清洗?
    第三方插件cheerio(不支持es)
  • 怎么实现反爬虫?
    在能用text()获取到的内容里面放一张图片,别人就无法用text()来获取了
  • 常见http状态码1xx-5xx:
    • 200响应正常
    • 304未修改
    • 400无法找到请求的资源
    • 403没有访问权限
    • 404访问的资源不存在
    • 500服务器内部错误

4、后端服务器

  • web服务器(静态服务器)
    • 比如:wamp里面的www目录,可以展示页面内容
    • 前端用nginx
  • 应用级服务器(api服务器)
    • 后端接口
    • tomcat

4、node.js的模块化

  • 为什么要使用模块化?

    • html中引入多个js文件,使用script标签对
    • node.js都是js文件,那么js文件如何引入其他类型文件?—>模块化
  • 模块化优点:复用性高,一次定义,多次使用

  • 前端模块化

    • AMD
      实现需要使用require.js
    • CMD
      实现需要使用sea.js(已经不更新)
    • Common.js
      node.js使用了common.js规范
      common.js 属于node.js? No No No
      • 内置模块
        • 格式:var/let/const 变量名 = require(路径)
        • 内置模块的路径就是模块名
        • 例如:
          const fs = require( 'fs' );
          fs.readFile('../dist/1.txt','utf8',( error,docs ) => {
           console.log( docs );
          })
          
      • 自定义模块
        • 创建模块(可以是任意模块,如function、object、string)
        • 导出模块
          module.exports = 模块名 // 导出一个
          module.exports = {} //导出多个
        • 导入模块
          var/let/const 变量名 = require(相对路径) // 导入一个
          var/let/const {变量名} = require(相对路径) //导入多个
        • 例如:
          		//const name = "zhangsan"
          		 const name = {
          		   firstName: 'zhang',
          		   lastName: 'san'
          		 }
          		//  module.exports = name 
          		 module.exports = {
          		   name
          		 }
          
      • 第三方模块
        • cheerio 用来做数据清洗
        • request 用来做数据请求
        • 更多第三方模块可在npmjs.com上搜索用法:
        • 安装
          $ npm/cnpm i 模块名 --dev-save/-D 开发环境安装
          $ npm/cnpm i 模块名 --save/-S 生产环境安装
        • 导入
          let/var/const 变量名 = require(模块名)
        • 例如:
          	const request = require( 'request' );
          	request('https://m.lagou.com/listmore.json',( error,response,body ) => {
          	  //error  错误信息  response  响应结果   body 获取的数据
          	  console.log( body );
          	})
          
    • ecmascript
      • es5: module.export/exports
      • es6: export default/export
  • 总结

    1、AMD和CMD都是通过关键字define来定义模块化的,通过require来引入模块

    2、es6模块化(前端里程碑)

    • export default 默认导出一个,import xx from xx
    • export 批量导出多个,import {xxx} from xxx

5、npm包上传至 npmjs.com

<1> 创建一个自定义模块(文件夹名一定是唯一的,自行去npmjs.com查看文件名是否存在)

<2>创建package.json文件

<3>将npm源切换到npmjs上(通过nrm切换)

  • nrm安装:cnpm i nrm -g
  • 查看当前所有源:nrm ls
  • 切换到npm源:nrm use npm

<4>注册npmjs.com账号

<5>激活账号(注意:注册后的激活弹窗只出现一次)

<6>在当前目录下登录npm账号
$ npm adduser

<7>填写用户名、密码、激活邮箱

<8>发布自定义模块
- $ npm publish

6、前端环境

  • 开发环境
    无法直接在服务器中运行
  • 生产环境
    将开发环境下的代码经过打包、压缩、编译之后的文件
  • 测试环境
    测试代码运行情况,如代码质量、代码风格
  • 预上线环境
    beta版本(内测版)
    放到一个局域网中,由专业人员来测试
  • 上线环境
    放在云服务器或服务器主机中的项目,可以供任何用浏览器和任何人使用

7、process.evn

  • process.env属性返回一个包含用户环境信息的对象
    process是进程管理模块
    evn是所有的进程中的环境变量
  • 可用来在js文件中获取package.json中的字段
    eg:console.log( process.env.npm_package_name );
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值