stream 流的概念:Node.js中数据传输是分片的流
流的语法:const stream = require(‘stream’);引入流的模块
Writable 可写入数据的流(例如 fs.createWriteStream(路径)).
Readable 可以从中读取数据的流(例如 fs.createReadStream()).
Duplex 两者都是Readable和Writable(例如 net.Socket)的流。
Transform-Duplex 可以写入和读取数据时修改或转换数据的流(例如,zlib.createDflate()).
作用:数据传输 Node.js中数据是分片【 chunk 】传输的
pipe :为了提高性能,减少能耗【 cpu 】
: 管道流 【 连接 I/O 之间的一个管道】,这个管道我们称之为: pipe
zlib模块:压缩
语法:
// const fs =require(‘fs’);引入fs模块
// const zlib = require(‘zlib’);映入压缩模块
// const gzip = zlib.createGzip();创建压缩包
// const inp = fs.createReadStream(‘1.js’);//可读1.js文件
// const out = fs.createWriteStream(‘1.js.gz’);//可写
// inp.pipe(gzip).pipe(out);通道
作用:压缩文件
http模块
const http = require(‘http’);
引入http模块
小爬虫概念:通过后端语言爬取网站中的数据,然后通过特定模块进行数据清洗,最后将数据输出给前端
反爬虫:在text()获取数据上加图片
cheerio第三方插件(需要安装)用于清洗数据
安装前 npm init -y
安装 npm i cheerio -save/-s
-D
console模块:底层调用:Process.stdout
模块化:
node.js使用模块化引入其他类型文件
好处:复用性高,一次定义,多次使用
AMD:AMD的实现需要使用 require.js
CMD :CMD的实现需要使用 sea.js(不更新)
common.js
Node.js 使用了common.js规范
内置模块引用
自定义模块引用
第三方模块引用
EcmaScript 模块化
- es5
- module.exports / exports
- es6
- export default / export
- 总结:
- 1. AMD 和 CMD 都是通过关键字 define 来定义模块的,通过require来引入模块
- 2. es6模块化 【 前端里程碑 】
- export default 默认导出一个 , import xx from xxx
- export 批量导出,导出多个, import { xxx } from xxx
内置模块:fs
Node.js中内置模块使用
1. 格式: var/let/const 变量名 = require(路径) 内置模块路径就是模块名称
2. 使用内置模块身上的方法
const fs = require(‘fs’)
fs.readFile(‘路径’,‘字符编码’,(error,docs)=>{
consoe.log(docs)
})
第三方模块request
作用:数据请求
1.安装 npm/cnpm i/install request --dev-save/-D
npm/cnpm i/install request --save/-S
2.导入
let/var/const = require(模块名称)
node.js不存在跨域(后端)
const request = require( ‘request’ )
request(‘https://m.lagou.com/listmore.json’,( error,response,body ) => {
// 参数说明: error 错误信息 response 响应结果 body 获取的数据
console.log( body )
})
自定义模块
打造模块
1.创建模块【Function/Object/String】
2.导出模块
-module.exports = 模块名称 导出一个
-module.exports = {} 导出多个
3.导出模块
var/let/const 变量名 = require(相对【网络】路径)
var/let/const{变量名} = require(相对路径)//引入多个
1.创建模块
const name = {
firstName: ‘Gabriel’,
lastName: ‘Yan’
}
2.导出模块
// module.exports = name
module.exports = {
name
}
3.导入
const { name } = require( ‘./name.js’ )
多个导入
const { age,xiaoyang } = require( ‘./age.js’ )
输出
console.log( age.num )
console.log( xiaoyang.age )
console.log( name.firstName )
console.log( name.lastName )
npm 【 了解 】
- npm包上传npmjs.com这个网站
- 第三方模块都是别人上传的,那么我们想:我们是否也可以上传?
- 当然可以
- 步骤
- 1. 创建一个自定义模块 【 文件夹名称一定记住是唯一的,去npmjs.com查是否有 】
- 2. 创建package.json文件
- 3. 将npm源切换到npmjs上 【 nrm切换 】
- nrm安装: cnpm i nrm -g
- nrm ls 列出当前所有源
- nrm use 源名称 切换到某一个源
- 4. 注册npmjs.com账号 【 qq邮箱 】
- 5. 激活npmjs.com账号 【 重要/ 犯错高发点 】【 小弹框只出一次 】
- 6. 在当前目录下登录npm账号
- $ npm adduser
- 7. 填写用户名、密码、激活邮箱
- 8. 发布
- $ npm publish
前端环境
- 开发环境
- 生产环境
- 二阶段项目
- 测试环境
- 测试代码运行情况
- 测试代码质量
- 测试代码风格
- 预上线环境
- beta版本 【 内测 】
- 上线环境
- 放在云服务器/服务器主机中的项目,可以供任何用户使用
后端中服务器类型有两种
\1. web服务器【 静态服务器 】
- 举例: wamp里面www目录
- 目的是为了展示页面内容
- 前端: nginx
\2. 应用级服务器[ api服务器 ]
- 后端接口
- tomcat
/*
业务: 我想在这个js文件中读到package.json中的name字段
precess 进程管理模块、
env 所有的进程中的环境变量
*/
console.log( process.env.npm_package_name ); // foo
console.log( process.env.npm_package_version ); // foo
console.log( process.env.npm_package_main ); // foo
gulp 基于node.js的构建工具