Node.js路由,前端异步流程工具

自定义包上传npm.js

注意: 记住要发送邮箱激活
注意: 切换你的npm源 nrm
注意: 你的包的名称不要和别人的重复
步骤:
1.登录npm账号
npm adduser
2. 上传

npm publish

node后端路由基本原理

  • 通过htpp模块来做。其实后端路由就是web服务器

  • 路由的产生:

*在之前,是多页面的,点一个链接开一个新网页。

*现在流行的是单页面,只有一个index,使用模板替换里面的内容。

const http = require('http')

const host = 'localhost'

const fs = require('fs')

const port = 6868;

http.createServer((req, res) => {
        res.writeHead(200, {
            'Content-type': 'text/html;charset=utf8'
        })
        switch (req.url) {
            case '/home':
                res.write('home')
                res.end()

                break;
            case '/shopcar':
                fs.readFile('./static/shopcar.html', 'utf8', (error, docs) => {
                    res.write(docs)
                    res.end()
                })
                break;
            case '/1.jpg':
                fs.readFile('./static/1.jpg', (error, docs) => {

                    res.writeHead(200, { 'Content-Type': 'image/jpeg' }); //输出类型
                    // 图片是以二进制传输的

                    res.write(docs, 'binary')
                    res.end()
                })
                break;
            case '/index.js':
                fs.readFile('./static/js/index.js', (error, docs) => {
                    // 图片是以二进制传输的
                    res.write(docs)
                    res.end()
                })
                break;
            default:
                break;
        }

    })
    .listen(port, host, () => {
        console.log(`服务器运行在:http://${ host }:${ port }`)
    })

npm脚本

概念: npm脚本指的是package.json中的scripts字段

认识package.json

  • package.json 是记录项目依赖包信息和npm脚本命令的一个配置文件

    项目依赖包信息:

    *dependencies 生产环境的依赖包

    *devDependencies 开发环境使用的依赖包

  • 脚本命令:

    *npm init -y 初始化

    *npm run dev & npm run app 全部执行完命令,最后输出结果

    *npm run dev && npm run app 依次执行

//分别创建case.js与case2.两个文件

{
    "name": "3-jiaoben",
    "version": "1.0.0",
    "description": "",
    "main": "case.js",
    "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",
        "dev": "node case.js",
        "app": "node case2.js"

    },
    "keywords": [],
    "author": "",
    "license": "ISC"
}

前端异步流程工具

javascript是单线程,依次执行一个任务,想要让任务能够顺利执行,就需要使用异步。将任务放入异步队列中,在主线程执行结束之后再去执行队列的任务

  • 前端异步的操作方式

    1:传统方式:回调函数,事件

    2:前端异步流程工具(封装出来的函数,库):

    ​ es6 Promise

    ​ es6 Generator

    ​ es6-es8 async 函数

    ​ Node中的异步处理工具–> nextTi , steImmediate

    ​ 第三方类库–>async.js

  • Pormise

    const pse1 = new Promise((resolve, reject) => { //resolve 将未完成变为成功,reject将未完成变为失败
            resolve('任务一')
        }).then(data => {
            console.log(data);
    
        })
        .catch(error => {
            if (error) throw error; //抛出一个错误,这个时候进程会被中断
        })
    
    
    const pse2 = new Promise((resolve, reject) => {
            setTimeout(() => {
                resolve('任务二')
            }, 2000)
        }).then(data => {
            console.log(data);
    
        })
        .catch(error => {
            if (error) throw error;
        })
    
    //promise 提供的两个核心方法
    //Promise.all([promise实例1, promise实例2])
    //Promise.race([promise实例1, promise实例2])
    
    
    // Promise
    //     .all([pse1, pse2]) //执行所有任务
    //     .then(() => { //(data)=>{}  没有值可以不给
    //         console.log('任务三');
    //     })
    //console.log('主线程');
    //此时输出:主线程,任务一,任务二,任务三
    
    Promise
        .race([pse1, pse2])
        .then(() => {
            console.log('任务三');
    
        })
    console.log('主线程');
    //此时输出:主线程,任务一,任务三,任务二
    
    //all 依次执行任务,即使有延时任务,也必须等延时任务介绍才能执行后续任务
    //race 谁快谁先执行![1563348372761](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1563348372761.png)
    

参考资料

  1. Promise
    https://blog.csdn.net/MrJavaweb/article/details/79475949
  2. Generator
    https://www.cnblogs.com/imwtr/p/5913294.html
  3. Async-await
    • 里层请求数据结果返回到外层使用
    • Async函数式generator函数 + spawn 自动执行器函数的 封装
  4. Node.js 中的nextTick()和setimmediate()
    https://www.cnblogs.com/5ishare/p/5268273.html
  5. async库
    https://caolan.github.io/async/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值