linux命令

1. mkdir 创建文件夹
2. vim 简写 vi   创建文件的
3. rm -rf 文件名称  删除
4. 递归删除  
   find ./ -name '文件名称' -print -exec rm -rf {} \;

举例: find ./ -name 'node_modules' -print -exec rm -rf {} \;
5. cat  文件名称   查看某个文件的内容

前端渲染 vs 后端渲染

1. 前端拿到数据之后, 前端来渲染数据
2. 后端来进行渲染( express )
3. 浏览器 -》 开发者工具-》 network
  1. headers
    1. general
    2. responseHeaders
    3. requestHeaders
    4. query string paramters
    5. Form data(表单提交的)
 4.前后端渲染优劣分析
    地址:https://www.cnblogs.com/zhangrunhao/p/6845626.html

node.js http.get 后端爬虫

步骤:
   数据抓取 ---》 数据清洗 ---》 数据格式整理---》 发送前台(web服务器)

爬虫案例:

反爬虫: 
   数据清洗的时候做,数据中用一个其他类型格式数据

events

1. Emitter.prototype   继承过来了  on   emit
   - on:事件的定义
   - emit:事件的触发
2.

fs/ zlib/ stream

 1.fs(文件模块)
    fs.readFile
    fs.open
	fs.openSync(open的同步方式)
	fs.write
	fs.close
	fs.unlink
	fs.readdir
	**注意:fs 模块的每一个方法都提供了异步与同步的两种操作方式。其中,异步的方式性能高,是一种推 荐的操作方式。如果您需要采用同步的方式,只要在异步方法名后面加上 Sync 即可,同时去掉末尾的 callback 参数**。
 2.zlib
 3.stream(流模块)
    流是一个抽象接口,有四种流类型
	   readable:可读
       writable:可写操作
       duplex:可读可写操作
       transform:操作被写入数据,然后读出结果
 4.联合项目:制作压缩包
    制作一个压缩包的流程:
	   1. 先有一个文件   
       2. 读取文件
       3. 制作压缩包
       4. 将读取的数据放入到压缩包中
	code:
	   const zlib = require('zlib');
       const fs = require('fs');
       //创建可读的流
       const inp = fs.createReadStream('yyb.txt');
       //创建空压缩包
       const gzip = zlib.createGzip();
       //创建可写的流
       const out = fs.createWriteStream('yyb.txt.gz');
       inp.pipe(gzip).pipe(out);

Node.js原生路由

 1. 为什么要引进前端路由这样一个东西

前端异步流程控制工具( 所有的 )

  1. Promise
    https://blog.csdn.net/MrJavaweb/article/details/79475949

  2. Generator 
    https://www.cnblogs.com/imwtr/p/5913294.html

  3. Async-await

  4. Node.js 中的nextTick()和setimmediate()
    https://www.cnblogs.com/5ishare/p/5268273.html

  5. async库
    https://caolan.github.io/async/


  参考文档
  Event-loop
    http://www.ruanyifeng.com/blog/2014/10/event-loop.html?bsh_bid=983729729
    史上最易读懂的 Promise/A+ 完全实现
    https://zhuanlan.zhihu.com/p/21834559

npm script( npm脚本 )

  1. 概念: 
    npm 允许在package.json文件里面,使用scripts字段定义脚本命令。

  2. 常用使用: 
    1. npm脚本就相当于一个 电器的使用说明书

    2. npm脚本运行使用 npm  run 

    3. npm脚本可以简写,但是只有特定几个

        npm start   -> npm run start
        npm stop  -> npm run stop
        npm text  -> npm run test
        npm restart -> npm run stop & npm run start

express

构建后端项目的一个框架  

1. 安装生成器
  npm install express-generator -g

2. 使用
  express options 项目名称

3. 创建项目

  举例: express 04-express-project

4. 目录内容
  bin           项目的配置文件( 比如: port  )
    www         使用http模块创建一个web服务器
  public        静态资源文件夹( html css images js )
  routes        路由
  views         后端模板文件夹
  app.js        整个项目的入口文件
  package.json  整个项目的依赖包配置文件( 说明书 )
5. 项目的启动

  1. 先进入项目
    cd 项目名称
  2. 安装项目需要的依赖

    npm install

  3. 项目启动(说明书   package.json 中 scripts脚本)

    npm start

建议: 
  养成一个习惯: 看到一个项目, 首先看项目的说明书(package.json)

6. 看一个项目流程? 

  1. package.json
      依赖包
      npm脚本--》 项目启动命令--》配置文件

7. express 中间件 Middleware
   中间件: 具有特定功能的函数

    中间件(Middleware) 是一个函数,它可以访问请求对象(request object (req)), 响应对象(response object (res)), 和 web 应用中处于请求-响应循环流程中的中间件,一般被命名为 next 的变量。
      中间件的功能包括:
        * 
      执行任何代码。
        * 
      修改请求和响应对象。
        * 
      终结请求-响应循环。
        * 
      调用堆栈中的下一个中间件。

    中间件包含三个部分(形式参数)
      request : 请求
      response: 响应
      next: 请求和响应流程中的中间件, 用next变量表示


   express中提供了
    1. 应用级中间件
        应用级中间件就是一个具有特定功能性的函数, 这个函数需要绑定在app对象身上,通过app.use() || app.method() 来调用
    2. 路由中间件

    3. 错误中间件

  app对象
    const app = express()

    使用: 
      1. app.use()    调用中间件(函数)
      2. app.method() 处理http请求的        

  前端的请求方式很多的: 比如: get post delete put all


  杭州: Node.js中间件封装


  Node.js渲染模板
    1. ejs
    2. pug(曾用名: jade)  语法功能很强大
    3. art-template(纯后端模板)