• Node.js断点调试方法等


    Node.js

    单个文件调试

    打开文件,设置断点

    设置断点,然后使用快捷键F5,启动调试

    固定文件调试

    //打开调试面板,点击配置,添加配置,luanch.json
    "configurations":[
        {
            "type":"node",
            "request":"lanunch",
            "name":"Launch Program",
            "program":"${workspaceRoot}/app.js"
        },
        {
        "type":"node",
        "request":"launch",
        "name":"启动程序",
        "program":"${file}"
        },
        {
        "type":"node",
        "request":"attach",
        "name":"附加到进程里",
        "address":"localhost",
        "port":5858
        }
    ]

    1、无任何选中的情况下,按下F5会默认启动固定文件调试(第一种情况)。
    2、第二种launch是在当前编辑器激活窗口里打开某个文件。
    3、其他配置情况:
    Launch Program:直接执行
    Launch via NPM:通过npm来启动
    Attach to Port: 附加端口,根据端口来查找进程。

    Attach to Process: 附加到进程,跨进程调试。
    Nodemon Setup:代码变动自动启重启的Node monitor(轻量级的 Node.js 项目内核性能监控 + 分析工具)。

    Mocha Tests:简单而强大的测试框架
    Yeoman generator: 使用最多的脚手架生成器
    Gulp task:最流行的流式构建系统

    跨进程调试
    request的两种选项,对应两种调试方式,launch是指本地调试,attach是远程调试,在编辑器外通过node --debug命令启动。
     

    node --inspect hello_node.js
    {
        "type":"node",
        "request":"attach",
        "name":"attach to remote",
        "address":"IP地址或域名",
        "port":5858//远程端口,
        "localRoot":"${workspaceRoot}",//本地代码根目录
        "remoteRoot":"absolute root"//远程代码的相对目录
        }

    Node.js让开发流程从过度的依赖Nginx到用Node替代Nginx的HTTP功能,让前端有了更多的灵活性,使用页面即服务的概念,使用场景决定选型,适合使用Node的场景:大前端、API接口、RPC服务、OLAP、数据挖掘、AI。

    静态API
    在开发流程中增加一层静态API,节省开发的时间和成本,预处理、跨平台、构建工具部分都支持,弥补了以JavaScript为核心的全站体系中的服务器部分。

    API代理,增加Node Proxy中转模型层。

    Node擅长I/o操作,http模块和stream模块组合,非常适合作为代理软件,两个重要的功能:请求转发和跨域JSONP的支持。

    1、请求转发
     

    const http = require('http');
    const fs = require('fs');
    
    const app = http.createServer((req,res)=>{
        if('/remote' === req.url){
            res.writeHead(200,{'Content-Type':'text/plain'});
            return res.end('Hello Remote Page\n');
        } else {
            Proxy(req,res);
        }
    });
    
    function Proxy(req,res){
        let options = {
            host : req.host,
            port : 3000,
            headers : req.headers,
            path : '/remote',
            agent : false,
            method : 'GET'
        };
        let httpProxy = http.request(options,(Response) => {//1、新的res
            Response.pipe(res);//3、将res放到respose流里,完成代理功能,请求转发其实就是代理
        });
    
        req.pipe(httpProxy);//2、通过pipe方法,使req有了新的代理请求httpProxy
    }
    
    app.listen(3000,function(){
        const PORT = app.address().port
        console.log(`Server running at http://127.0.0.1:${PORT}`);
    })

    2、node-proxy返回JSONP API。

    Node的更多应用场景
    作为前端的基础设施。
    命令辅助工具
    移动端和pc端
    前端组件化,完成组件的打包构建,增加HTTP代理等
    架构设计,实现前后端分离
    性能优化,反爬虫和爬虫
    全栈(掌握后端不会的UI,前端不会的DB)
    创建项目的基本流程
     

    npm init -y
    npm install --save koa@next
    touch app.js


    因为启动报错,单线程的解决,需要用uncaghtException处理,就不会造成接口奔溃了,就可以解决上边的问题。

    异常捕获


    同步代码才能捕获异常,异步代码不能直接使用try/catch。
    代码中都是try/catch也有弊端,比如Go预演代码就有太多的异常捕获。
    使用try/catch的成本比较高,一般不建议使用。

    forever重启进程

    npm installl forever -g
    forever start app.js //执行JS

    小集群:PM2比forve更强大

    npm installl pm2 -g
    pm2 start app.js -i 0 name "modern-nodejs"

    异步回调

    1. Thunk、Generator 1星
    2. co 2星
    3. callback 3星
    4. promise 4星
    5. async 5星
  • 相关阅读:
    HDU 1003 Max Sum
    HDU 1728 逃离迷宫
    UVA 10057 A midsummer night's dream.
    HDU 1232 畅通工程
    poj3331
    poj3481
    poj1053
    poj3281
    poj3199
    !!! Gridview的多种使用方法总结
  • 原文地址:https://www.cnblogs.com/sexintercourse/p/16866256.html
Copyright © 2020-2023  润新知