③ nodejs

时间:2021-07-13 14:47:11   收藏:0   阅读:18

NodeJS

1 模块化

1.1 框架

框架 规范 区别 定义与引入
require.js AMD 前端+异步 define + require()
sea.js CMD 前端+异步
nodejs CommonJS 后端+同步 module.exports + require()
ECMAScript2015 ESModule 前端+同步
    let jq = require([‘jquery‘], _ => {});
    console.log(jq);//undefined
    let http = require(‘http‘);
    console.log(http);

1.2 CommonJS规范模块分类

1.2.1 内置模块:NodeJS内部模块

1.2.2 自定义模块

1.2.3 第三方模块

1.2.4 文件模块

2 客户端与服务器

2.1 一个请求的细节

2.2 静态资源服务器

2.2.1 http

http/https 短连接(请求服务器并返回后,与服务器就断开连接)
webSocket 长连接(与服务器连接后不会断开)
长连接
  setTimeout(function show() {
    console.log(666)
    setTimeout(show, 5000)
  }, 5000)

2.2.2 文件的操作: fs模块

大文件的读取与写入:分多次完成文件的读写操作
    gulp.task(‘compileSass‘,()=>{
        gulp.src(‘./src/sass/home.scss‘)   //返回一个读取流
        .pipe(sass())
        .pipe(rename())
        .pipe(gulp.dist(‘./dist‘)) // gulp.dist()返回一个写入流
    })

3 第三方模块

3.1 安装:npm

3.2 express

3.2.1 中间件Middleware

定义
使用
分类
  app.use(express.static(‘./‘))

4 接口编写(路由编写)

利用模块化思想实现接口与路由的编写

4.1 接口地址

4.2 RESTful规范接口

4.2.1 根据请求类型不同定义不同的接口

4.2.2 根据不同的地址实现不同的接口

4.3 接口测试工具

4.4 接收参数

必须借助第三方中间件来获取

5 路由模块化

6 Promise对象

6.1 状态

状态只能从Pending改成Resolved或从Pending改成Rejected

6.2 应用场景

6.3 ES7的async & await

让我们以同步的代码实现异步编程

    function getData(url,callback) {
        let data;
        let xhr = new XMLHttpRequest();
        xhr.onload = () => {
            data = xhr.responseText;
            callback(data)
        }
        xhr.open(‘get‘,url,true);
        xhr.send();
        return data;
    }

    let data = getData(‘/goods/123‘);
    console.log(data);//undefined

    // 利用回调函数来获取异步请求的数据
    getData(‘/goods/10086‘, function(data) {
        console.log(data)
    });


    // 利用Promise改造
    function getData(url){
        return new Promise((resolve,reject) => {
            let data;
            let xhr = new XMLHttpRequest();
            xhr.onload = () => {
                data = xhr.responseText;
                resolve(data)
            }
            xhr.open(‘get‘,url,true);
            xhr.send();
        })
    }

    getData(‘/goods/10086‘).then(data => {
        console.log(data)
    })

    (async function() {
       let data = await getData(‘/goods/10086‘)
    })();

7 跨域解决方案

7.1 为什么会存在跨域: 安全性问题(一切的根源:js是一门客户端语言)

7.2 解决方案

7.2.1 jsonp -- json with padding

7.2.2 CORS -- Cross Origin Resource Sharing

7.2.3 服务器代理

8 页面渲染方式

8.1 客户端渲染(BSR):前后端分离

8.1.1 后端:编写数据接口

8.1.2 前端:发起ajax请求,拿到数据后,遍历生成html结构

8.1.3 优点

8.1.4 请求过程

  1. 输入地址,返回index.html

  2. 解析html,返现script

  3. 请求服务器,返回js代码

  4. 发起ajax请求,返回数据

  5. 解析数据,生成html结构

8.2 服务端渲染(SSR):前后端不分离

8.2.1 后端:生成html结构并响应到前端

8.2.2 优点

8.2.3 请求过程

  1. 输入地址,返回index.html

  2. 由于所有的html结构已经在服务器生成完毕,浏览器解析html结构

9 数据库

数据库 数据记录
MySQL database table row
MongoDB database collection document

9.1 在NodeJS中使用MongoDB

10 面试题

原文:https://www.cnblogs.com/pleaseAnswer/p/15005464.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!