精华内容
下载资源
问答
  • 完全卸载 Nodejs
    万次阅读
    2020-10-19 10:39:54

    完全卸载 Nodejs

    起因

    公司电脑由于加了固态硬盘,然后要把 C 盘移到固态上,导致 Nodejs 无法使用,因为路径变化,因此想完全删除重装,结果卸载找不到,直接重新安装也说已经安装。。。

    如何完全卸载

    1. 通过控制面板卸载node.js
    2. 删除安装所在文件夹下的nodejs文件夹【我的是 C:\Program Files\nodejs】
    3. 删除C:\Users\xxx(自己电脑的名字)下的.npmrc文件(删除npm和node相关的文件)
    4. 删除npm和node相关的所有环境变量
    更多相关内容
  • teamcity-agent-nodejs_v10

    2021-02-12 19:33:50
    Docker-TeamCity-Agent-Nodejs 基于官方的TeamCity Agent映像,顶部添加了Node.js。 官方基本映像更新后,该映像将自动更新。 基于: : 我的Unraid存储库的一部分: : 建立 docker build -t tc-agent-nodejs ....
  • nodejs完整视频教程

    2018-03-14 09:41:24
    **社nodejs完整视频教程是本人花钱从某宝上面买的,现在拿出来分享。
  • nodejs的调试debug

    千次阅读 2021-01-27 21:13:16
    对于开发者来说,在开发应用程序的过程中,往往为了开发方便和解决bug需要借助于编程语言的调试功能。一般来说我们需要借助于强大IDE的调试功能来完成...nodejs也不例外。 今天我们来详细介绍一下如何调试nodejs程序。

    简介

    对于开发者来说,在开发应用程序的过程中,往往为了开发方便和解决bug需要借助于编程语言的调试功能。一般来说我们需要借助于强大IDE的调试功能来完成这项工作。nodejs也不例外。

    今天我们来详细介绍一下如何调试nodejs程序。

    开启nodejs的调试

    还记得之前我们讲到的koa程序吗?本文将会以一个简单的koa服务端程序为例,来展开nodejs的调试。

    先看下一个简单的koa服务app.js:

    const Koa = require('koa');
    const app = module.exports = new Koa();
    
    app.use(async function(ctx) {
      ctx.body = 'Hello World';
    });
    
    if (!module.parent) app.listen(3000);
    
    

    上面的程序开启了3000端口,建立了一个http服务。每次请求的时候,都会返回hello World,非常的简单。

    要想运行上面的程序,我们需要执行node app.js。 这会执行app.js但是并不会开启调试功能。

    怎么进行调试呢?

    我们需要加上 --inspect 参数:

    node --inspect app.js
    

    上面的代码将会开启nodejs的调试功能。

    我们看下输出结果:

    Debugger listening on ws://127.0.0.1:9229/88c23ae3-9081-41cd-98b0-d0f7ebceab5a
    For help, see: https://nodejs.org/en/docs/inspector
    

    结果告诉了我们两件事情,第一件事情就是debugger监听的端口。默认情况下将会开启127.0.0.1的9229端口。并且分配了一个唯一的UUID以供区分。

    第二件事情就是告诉我们nodejs使用的调试器是Inspector。

    Inspector是nodejs 8之后引入的,如果是在nodejs 7之前,那么使用的是legacy debugger。

    调试的安全性

    如果debugger连接到了nodejs运行环境中,如果有恶意攻击者的话,这个恶意攻击者可以在nodejs环境中运行任意代码。这会给我们的程序带来很大的安全隐患。

    所以我们一定要注意调试的安全性。一般来说,我们不建议进行远程调试。

    默认情况下 --inspect 绑定的是127.0.0.1,这样就只允许本地程序访问。并且任何本地运行的程序都有权限进行该程序的调试。

    如果我们真的想将debug程序暴露给外部程序的话,那么可以指明本机的外网IP地址或者0.0.0.0(表示任何地址,无限制),这样远程机子就可以进行远程调试了。

    如果我们想进行安全的remote debug该怎么处理呢?

    首先,我们要开启本地的debug:

    node --inspect app.js
    

    然后我们可以搭建一个ssh隧道,将本地的9221端口映射到远程服务器的9229端口:

    ssh -L 9221:localhost:9229 user@remote.example.com
    

    这样我们就可以通过连接本地的9221端口,进行远程调试了。

    使用WebStorm进行nodejs调试

    JetBrains出品的WebStorm可谓是开发nodejs的利器,WebStorm自带有debug选项,如果开启该选项,则会在后台开启 --inspect:

    使用WebStorm来进行调试和使用IDEA来进行java程序调试类似,这里就不多介绍了。

    使用Chrome devTools进行调试

    使用Chrome devTools进行调试的前提是我们已经开启了 --inspect模式。

    在chrome中输入chrome://inspect:

    我们可看到chrome inspect的界面,如果你本地已经有开启inspect的nodejs程序的话,在Remote Target中就可以直接看到。

    选中你要调试的target,点击inspect,即可开启Chrome devTools调试工具:

    你可以对程序进行profile,也可以进行调试。

    这里我们关注的是调试,所以转到source一栏,添加你要调试的程序的源代码:

    加入断点即可开始调试了。和在chrome中调试web端的js是一样的。

    使用node-inspect来进行调试

    其实nodejs有一个自带的调试工具,叫做node-inspect,这是一个cli的调试工具。我们看一下怎么使用。

    我们直接使用:

    node inspect app.js
    
    < Debugger listening on ws://127.0.0.1:9229/f1c64736-47a1-42c9-9e9e-f2665073d3eb
    < For help, see: https://nodejs.org/en/docs/inspector
    < Debugger attached.
    Break on start in app.js:1
    > 1 const Koa = require('koa');
      2 const app = module.exports = new Koa();
      3 
    debug> 
    
    

    node inspect 做了两件事情,第一件事情就是生成子程序去运行node --inspect app.js,第二件事情就是在主程序中运行CLI调试窗口。

    这个CLI调试程序为我们提供了一些非常有用的命令:

    1. Stepping
    • cont, c: 继续执行
    • next, n: Step到下一步
    • step, s: Step in
    • out, o: Step out
    • pause: 暂停运行的代码
    1. Breakpoints
    • setBreakpoint(), sb(): 在当前行设置断点
    • setBreakpoint(line), sb(line): 在指定的行设置断点
    • setBreakpoint(‘fn()’), sb(…): 在指定的function中设置断点
    • setBreakpoint(‘script.js’, 1), sb(…): 在指定的脚本文件中设置断点
    • clearBreakpoint(‘script.js’, 1), cb(…): 从文件中清除断点
    1. Information
    • backtrace, bt: 打印当前execution frame的backtrace信息
    • list(5): 列出源代码前后的5行
    • watch(expr): 添加监听表达式
    • unwatch(expr): 删除监听表达式
    • watchers: 列出所有的watchers
    • repl: 打开repl表达式
    • exec expr: 执行表达式

    通过上面的命令,我们可以在CLI中进行比较复杂的调试活动。

    其他的debug客户端

    除了上面我们讲到的几个之外,我们还可以使用vscode,Visual Studio ,Eclipse IDE 等来进行nodejs的调试,这里就不一一详细介绍了。

    感兴趣的朋友可以自行探索。

    本文作者:flydean程序那些事

    本文链接:http://www.flydean.com/nodejs-debug/

    本文来源:flydean的博客

    欢迎关注我的公众号:「程序那些事」最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!

    展开全文
  • 4本书打包: Nodejs开发指南 nodejs入门经典 Nodejs in Action nodejs手册中文版
  • 深入理解nodejs的HTTP处理流程

    千次阅读 2021-02-03 20:15:38
    我们已经知道如何使用nodejs搭建一个HTTP服务,今天我们会详细的介绍nodejs中的HTTP处理流程,从而对nodejs的HTTP进行深入的理解。

    简介

    我们已经知道如何使用nodejs搭建一个HTTP服务,今天我们会详细的介绍nodejs中的HTTP处理流程,从而对nodejs的HTTP进行深入的理解。

    使用nodejs创建HTTP服务

    使用nodejs创建HTTP服务很简单,nodejs提供了专门的HTTP模块,我们可以使用其中的createServer方法来轻松创建HTTP服务:

    const http = require('http');
    
    const server = http.createServer((request, response) => {
      // magic happens here!
    });
    

    首先createServer方法传入的是一个callback函数,这个callback函数将会在每次服务端接收到客户端的请求时调用。所以这个callback函数,也叫做 request handler.

    再看看createServer的返回值,createServer返回的是一个EventEmitter对象。

    之前我们也介绍过了EventEmitter,它可以发送和接收事件,所以我们可以使用on来监听客户端的事件。

    上面的代码相当于:

    const server = http.createServer();
    server.on('request', (request, response) => {
      // the same kind of magic happens here!
    });
    

    当发送request事件的时候,就会触发后面的handler method,并传入request和response参数。我们可以在这个handler中编写业务逻辑。

    当然,为了让http server正常运行,我们还需要加上listen方法,来绑定ip和端口,以最终启动服务。

    const hostname = '127.0.0.1'
    const port = 3000
    
    server.listen(port, hostname, () => {
      console.log(`please visit http://${hostname}:${port}/`)
    })
    

    解构request

    上面的request参数实际上是一个http.IncomingMessage对象,我们看下这个对象的定义:

        class IncomingMessage extends stream.Readable {
            constructor(socket: Socket);
    
            aborted: boolean;
            httpVersion: string;
            httpVersionMajor: number;
            httpVersionMinor: number;
            complete: boolean;
            /**
             * @deprecate Use `socket` instead.
             */
            connection: Socket;
            socket: Socket;
            headers: IncomingHttpHeaders;
            rawHeaders: string[];
            trailers: NodeJS.Dict<string>;
            rawTrailers: string[];
            setTimeout(msecs: number, callback?: () => void): this;
            /**
             * Only valid for request obtained from http.Server.
             */
            method?: string;
            /**
             * Only valid for request obtained from http.Server.
             */
            url?: string;
            /**
             * Only valid for response obtained from http.ClientRequest.
             */
            statusCode?: number;
            /**
             * Only valid for response obtained from http.ClientRequest.
             */
            statusMessage?: string;
            destroy(error?: Error): void;
        }
    

    通常我们需要用到request中的method,url和headers属性。

    怎么从request中拿到这些属性呢?对的,我们可以使用ES6中解构赋值:

    const { method, url } = request;
    
    const { headers } = request;
    const userAgent = headers['user-agent'];
    

    其中request的headers是一个IncomingHttpHeaders,它继承自NodeJS.Dict。

    处理Request Body

    从源码可以看出request是一个Stream对象,对于stream对象来说,我们如果想要获取其请求body的话,就不像获取静态的method和url那么简单了。

    我们通过监听Request的data和end事件来处理body。

    let body = [];
    request.on('data', (chunk) => {
      body.push(chunk);
    }).on('end', () => {
      body = Buffer.concat(body).toString();
      // at this point, `body` has the entire request body stored in it as a string
    });
    

    因为每次data事件,接收到的chunk实际上是一个Buffer对象。我们将这些buffer对象保存起来,最后使用Buffer.concat来对其进行合并,最终得到最后的结果。

    直接使用nodejs来处理body看起来有点复杂,幸运的是大部分的nodejs web框架,比如koa和express都简化了body的处理。

    处理异常

    异常处理是通过监听request的error事件来实现的。

    如果你在程序中并没有捕获error的处理事件,那么error将会抛出并终止你的nodejs程序,所以我们一定要捕获这个error事件。

    request.on('error', (err) => {
      // This prints the error message and stack trace to `stderr`.
      console.error(err.stack);
    });
    

    解构response

    response是一个http.ServerResponse类:

        class ServerResponse extends OutgoingMessage {
            statusCode: number;
            statusMessage: string;
    
            constructor(req: IncomingMessage);
    
            assignSocket(socket: Socket): void;
            detachSocket(socket: Socket): void;
            // https://github.com/nodejs/node/blob/master/test/parallel/test-http-write-callbacks.js#L53
            // no args in writeContinue callback
            writeContinue(callback?: () => void): void;
            writeHead(statusCode: number, reasonPhrase?: string, headers?: OutgoingHttpHeaders): this;
            writeHead(statusCode: number, headers?: OutgoingHttpHeaders): this;
            writeProcessing(): void;
        }
    

    对于response来说,我们主要关注的是statusCode:

    response.statusCode = 404; 
    

    Response Headers:

    response提供了setHeader方法来设置相应的header值。

    response.setHeader('Content-Type', 'application/json');
    response.setHeader('X-Powered-By', 'bacon');
    

    还有一个更加直接的同时写入head和status code:

    response.writeHead(200, {
      'Content-Type': 'application/json',
      'X-Powered-By': 'bacon'
    });
    

    最后,我们需要写入response body,因为response是一个WritableStream,所以我们可以多次写入,最后以end方法结束:

    response.write('<html>');
    response.write('<body>');
    response.write('<h1>Hello, World!</h1>');
    response.write('</body>');
    response.write('</html>');
    response.end();
    

    或者我们可以用一个end来替换:

    response.end('<html><body><h1>Hello, World!</h1></body></html>');
    

    综上,我们的代码是这样的:

    const http = require('http');
    
    http.createServer((request, response) => {
      const { headers, method, url } = request;
      let body = [];
      request.on('error', (err) => {
        console.error(err);
      }).on('data', (chunk) => {
        body.push(chunk);
      }).on('end', () => {
        body = Buffer.concat(body).toString();
        // BEGINNING OF NEW STUFF
    
        response.on('error', (err) => {
          console.error(err);
        });
    
        response.statusCode = 200;
        response.setHeader('Content-Type', 'application/json');
        // Note: the 2 lines above could be replaced with this next one:
        // response.writeHead(200, {'Content-Type': 'application/json'})
    
        const responseBody = { headers, method, url, body };
    
        response.write(JSON.stringify(responseBody));
        response.end();
        // Note: the 2 lines above could be replaced with this next one:
        // response.end(JSON.stringify(responseBody))
    
        // END OF NEW STUFF
      });
    }).listen(8080);
    

    本文作者:flydean程序那些事

    本文链接:http://www.flydean.com/nodejs-http-in-depth/

    本文来源:flydean的博客

    欢迎关注我的公众号:「程序那些事」最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!

    展开全文
  • nodejs中创建child process

    千次阅读 2021-01-25 20:12:43
    nodejs的main event loop是单线程的,nodejs本身也维护着Worker Pool用来处理一些耗时的操作,我们还可以通过使用nodejs提供的worker_threads来手动创建新的线程来执行自己的任务。 本文将会介绍一种新的执行nodejs...

    简介

    nodejs的main event loop是单线程的,nodejs本身也维护着Worker Pool用来处理一些耗时的操作,我们还可以通过使用nodejs提供的worker_threads来手动创建新的线程来执行自己的任务。

    本文将会介绍一种新的执行nodejs任务的方式,child process。

    child process

    lib/child_process.js提供了child_process模块,通过child_process我们可以创建子进程。

    注意,worker_threads创建的是子线程,而child_process创建的是子进程。

    在child_process模块中,可以同步创建进程也可以异步创建进程。同步创建方式只是在异步创建的方法后面加上Sync。

    创建出来的进程用ChildProcess类来表示。

    我们看下ChildProcess的定义:

    interface ChildProcess extends events.EventEmitter {
            stdin: Writable | null;
            stdout: Readable | null;
            stderr: Readable | null;
            readonly channel?: Pipe | null;
            readonly stdio: [
                Writable | null, // stdin
                Readable | null, // stdout
                Readable | null, // stderr
                Readable | Writable | null | undefined, // extra
                Readable | Writable | null | undefined // extra
            ];
            readonly killed: boolean;
            readonly pid: number;
            readonly connected: boolean;
            readonly exitCode: number | null;
            readonly signalCode: NodeJS.Signals | null;
            readonly spawnargs: string[];
            readonly spawnfile: string;
            kill(signal?: NodeJS.Signals | number): boolean;
            send(message: Serializable, callback?: (error: Error | null) => void): boolean;
            send(message: Serializable, sendHandle?: SendHandle, callback?: (error: Error | null) => void): boolean;
            send(message: Serializable, sendHandle?: SendHandle, options?: MessageOptions, callback?: (error: Error | null) => void): boolean;
            disconnect(): void;
            unref(): void;
            ref(): void;
    
            /**
             * events.EventEmitter
             * 1. close
             * 2. disconnect
             * 3. error
             * 4. exit
             * 5. message
             */
            ...
        }
    

    可以看到ChildProcess也是一个EventEmitter,所以它可以发送和接受event。

    ChildProcess可以接收到event有5种,分别是close,disconnect,error,exit和message。

    当调用父进程中的 subprocess.disconnect() 或子进程中的 process.disconnect() 后会触发 disconnect 事件。

    当出现无法创建进程,无法kill进程和向子进程发送消息失败的时候都会触发error事件。

    当子进程结束后时会触发exit事件。

    当子进程的 stdio 流被关闭时会触发 close 事件。 注意,close事件和exit事件是不同的,因为多个进程可能共享同一个stdio,所以发送exit事件并不一定会触发close事件。

    看一个close和exit的例子:

    const { spawn } = require('child_process');
    const ls = spawn('ls', ['-lh', '/usr']);
    
    ls.stdout.on('data', (data) => {
      console.log(`stdout: ${data}`);
    });
    
    ls.on('close', (code) => {
      console.log(`子进程使用代码 ${code} 关闭所有 stdio`);
    });
    
    ls.on('exit', (code) => {
      console.log(`子进程使用代码 ${code} 退出`);
    });
    

    最后是message事件,当子进程使用process.send() 发送消息的时候就会被触发。

    ChildProcess中有几个标准流属性,分别是stderr,stdout,stdin和stdio。

    stderr,stdout,stdin很好理解,分别是标准错误,标准输出和标准输入。

    我们看一个stdout的使用:

    const { spawn } = require('child_process');
    
    const subprocess = spawn('ls');
    
    subprocess.stdout.on('data', (data) => {
      console.log(`接收到数据块 ${data}`);
    });
    

    stdio实际上是stderr,stdout,stdin的集合:

    readonly stdio: [
                Writable | null, // stdin
                Readable | null, // stdout
                Readable | null, // stderr
                Readable | Writable | null | undefined, // extra
                Readable | Writable | null | undefined // extra
            ];
    

    其中stdio[0]表示的是stdin,stdio[1]表示的是stdout,stdio[2]表示的是stderr。

    如果在通过stdio创建子进程的时候,这三个标准流被设置为除pipe之外的其他值,那么stdin,stdout和stderr将为null。

    我们看一个使用stdio的例子:

    const assert = require('assert');
    const fs = require('fs');
    const child_process = require('child_process');
    
    const subprocess = child_process.spawn('ls', {
      stdio: [
        0, // 使用父进程的 stdin 用于子进程。
        'pipe', // 把子进程的 stdout 通过管道传到父进程 。
        fs.openSync('err.out', 'w') // 把子进程的 stderr 定向到一个文件。
      ]
    });
    
    assert.strictEqual(subprocess.stdio[0], null);
    assert.strictEqual(subprocess.stdio[0], subprocess.stdin);
    
    assert(subprocess.stdout);
    assert.strictEqual(subprocess.stdio[1], subprocess.stdout);
    
    assert.strictEqual(subprocess.stdio[2], null);
    assert.strictEqual(subprocess.stdio[2], subprocess.stderr);
    

    通常情况下父进程中维护了一个对子进程的引用计数,只有在当子进程退出之后父进程才会退出。

    这个引用就是ref,如果调用了unref方法,则允许父进程独立于子进程退出。

    const { spawn } = require('child_process');
    
    const subprocess = spawn(process.argv[0], ['child_program.js'], {
      detached: true,
      stdio: 'ignore'
    });
    
    subprocess.unref();
    

    最后,我们看一下如何通过ChildProcess来发送消息:

    subprocess.send(message[, sendHandle[, options]][, callback])
    

    其中message就是要发送的消息,callback是发送消息之后的回调。

    sendHandle比较特殊,它可以是一个TCP服务器或socket对象,通过将这些handle传递给子进程。子进程将会在message事件中,将该handle传递给Callback函数,从而可以在子进程中进行处理。

    我们看一个传递TCP server的例子,首先看主进程:

    const subprocess = require('child_process').fork('subprocess.js');
    
    // 打开 server 对象,并发送该句柄。
    const server = require('net').createServer();
    server.on('connection', (socket) => {
      socket.end('由父进程处理');
    });
    server.listen(1337, () => {
      subprocess.send('server', server);
    });
    

    再看子进程:

    process.on('message', (m, server) => {
      if (m === 'server') {
        server.on('connection', (socket) => {
          socket.end('由子进程处理');
        });
      }
    });
    

    可以看到子进程接收到了server handle,并且在子进程中监听connection事件。

    下面我们看一个传递socket对象的例子:

    onst { fork } = require('child_process');
    const normal = fork('subprocess.js', ['normal']);
    const special = fork('subprocess.js', ['special']);
    
    // 开启 server,并发送 socket 给子进程。
    // 使用 `pauseOnConnect` 防止 socket 在被发送到子进程之前被读取。
    const server = require('net').createServer({ pauseOnConnect: true });
    server.on('connection', (socket) => {
    
      // 特殊优先级。
      if (socket.remoteAddress === '74.125.127.100') {
        special.send('socket', socket);
        return;
      }
      // 普通优先级。
      normal.send('socket', socket);
    });
    server.listen(1337);
    

    subprocess.js的内容:

    process.on('message', (m, socket) => {
      if (m === 'socket') {
        if (socket) {
          // 检查客户端 socket 是否存在。
          // socket 在被发送与被子进程接收这段时间内可被关闭。
          socket.end(`请求使用 ${process.argv[2]} 优先级处理`);
        }
      }
    });
    

    主进程创建了两个subprocess,一个处理特殊的优先级, 一个处理普通的优先级。

    异步创建进程

    child_process模块有4种方式可以异步创建进程,分别是child_process.spawn()、child_process.fork()、child_process.exec() 和 child_process.execFile()。

    先看一个各个方法的定义:

    child_process.spawn(command[, args][, options])
    
    child_process.fork(modulePath[, args][, options])
    
    child_process.exec(command[, options][, callback])
    
    child_process.execFile(file[, args][, options][, callback])
    

    其中child_process.spawn是基础,他会异步的生成一个新的进程,其他的fork,exec和execFile都是基于spawn来生成的。

    fork会生成新的Node.js 进程。

    exec和execFile是以新的进程执行新的命令,并且带有callback。他们的区别就在于在windows的环境中,如果要执行.bat或者.cmd文件,没有shell终端是执行不了的。这个时候就只能以exec来启动。execFile是无法执行的。

    或者也可以使用spawn。

    我们看一个在windows中使用spawn和exec的例子:

    // 仅在 Windows 上。
    const { spawn } = require('child_process');
    const bat = spawn('cmd.exe', ['/c', 'my.bat']);
    
    bat.stdout.on('data', (data) => {
      console.log(data.toString());
    });
    
    bat.stderr.on('data', (data) => {
      console.error(data.toString());
    });
    
    bat.on('exit', (code) => {
      console.log(`子进程退出,退出码 ${code}`);
    });
    
    const { exec, spawn } = require('child_process');
    exec('my.bat', (err, stdout, stderr) => {
      if (err) {
        console.error(err);
        return;
      }
      console.log(stdout);
    });
    
    // 文件名中包含空格的脚本:
    const bat = spawn('"my script.cmd"', ['a', 'b'], { shell: true });
    // 或:
    exec('"my script.cmd" a b', (err, stdout, stderr) => {
      // ...
    });
    

    同步创建进程

    同步创建进程可以使用child_process.spawnSync()、child_process.execSync() 和 child_process.execFileSync() ,同步的方法会阻塞 Node.js 事件循环、暂停任何其他代码的执行,直到子进程退出。

    通常对于一些脚本任务来说,使用同步创建进程会比较常用。

    本文作者:flydean程序那些事

    本文链接:http://www.flydean.com/nodejs-childprocess/

    本文来源:flydean的博客

    欢迎关注我的公众号:「程序那些事」最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!

    展开全文
  • nodejs事件和事件循环简介

    万次阅读 2020-12-06 21:37:03
    我们在javascript中监听这些事件,从而触发相应的...同样的nodejs中也有事件,并且还有一个专门的events模块来进行专门的处理。 同时事件和事件循环也是nodejs构建异步IO的非常重要的概念。 今天我们来详细了解一下。
  • nodejs+mssql+SQL Server实现增删改查

    热门讨论 2015-10-10 19:33:38
    nodejs+mssql+SQL Server实现增删改查
  • 使用nodejs和express搭建http web服务

    千次阅读 2021-01-15 19:24:19
    nodejs作为一个优秀的异步IO框架,其本身就是用来作为http web服务器使用的,nodejs中的http模块,提供了很多非常有用的http相关的功能。 虽然nodejs已经带有http的处理模块,但是对于现代web应用程序来说,这或许...
  • Nodejs获取网络数据并生成Excel表格

    热门讨论 2015-07-13 22:58:24
    Nodejs获取网络数据并生成Excel表格:http://blog.csdn.net/qxs965266509/article/details/46851947
  • nodejs简单搭建前端后端网站demo

    热门讨论 2015-06-14 10:26:04
    nodejs简单搭建前端后端网站demo,慕课网上scott老师课程的imooc网站,自己学习中demo练习源码
  • nodejs初步搭建HelloWord

    千次阅读 2021-08-27 13:52:20
    开发环境:下载安装nodejs win10系统,webstrom开发工具 hello.js //导入http var http=require('http'); //创建 http.createServer(function (request,response) { response.writeHead(200,{'Content-type'...
  • NodeJS结合express使用websocket

    千次阅读 2020-01-18 21:27:09
    NodeJS结合express使用websocket 如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:129518033 文章目录NodeJS结合express使用websocket@[toc]前言1.基本使用2.模块化开发3.如果结合 http 模块使用...
  • 使用nodejs构建Docker image最佳实践

    千次阅读 2021-01-29 20:59:53
    docker容器的出现,彻底的改变了应用程序的运行方式,而nodejs同样的也颠覆了后端应用程序的开发模式。两者结合起来,就会产生意想不到的作用。 本文将会以一个常用的nodejs程序为例,分析怎么使用docker来构建...
  • nodejs服务端MVC架构介绍

    千次阅读 2019-10-21 23:49:40
    nodejs服务端MVC架构介绍 MVC架构本质:确定每一个js文件的职责 以nodejs数据管理系统为例,本文章代码仅为服务端演示代码,单独复制粘贴可能无效果。因为MVC并不是一门技术,而是一种项目架构思想 index.js:负责...
  • nodejs导出excel插件excel-export

    热门讨论 2015-01-05 23:16:29
    nodejs导出excel插件excel-export 具体参加http://tommyhu.cn/nodejs-export-excel
  • Jenkins中集成NodeJS插件问题对应

    千次阅读 2019-10-16 16:08:48
    在Jenkins的镜像中集成NodeJS插件,发现node和npm都无法执行,最终确认之后定位为libc的问题,在这篇文章中进行memo。中介来说,这个问题还可以描述为:如何在Alpine镜像中支持NodeJS,或者如何在Alpine镜像中使用...
  • HTML5视频聊天Demo(WebRTC+NodeJS

    热门讨论 2014-07-15 14:40:19
    5分钟搭建一个HTML5视频聊天Demo(WebRTC+NodeJS),资源包包括WebRTC和NodeJS下载,详细操作请参见http://blog.csdn.net/lixq_csdn/article/details/37815103
  • 如何构建基于Alpine的NodeJS镜像

    千次阅读 2019-10-16 21:17:34
    NodeJS的运行需要libc的支持,而基于musl的Alpine镜像显然不能符合这个要求。在前面的文章中也验证过,目前使用社区对于Alpine镜像的glibc的粗暴支持方案,是无法直接安装后解决NodeJS使用问题的,依然会提示env: ...
  • 1、首先安装好nodejs-websocket npm install nodejs-websocket --save -g 2、编写服务端 var ws = require("nodejs-websocket") var AllUserData = new Array() // Scream server example: "hi&...
  • node安装,nodejs安装,Windows nodejs安装,Linux nodejs安装Windows系统:安装:node-v12.14.0-x86.msi查看:node -v返回版本信息,比喻:v0.10.48Linux系统:第一种:nodejs安装安装:yum -y install nodejs查看...
  • Ubuntu16安装nodejs10

    千次阅读 2019-01-12 12:27:47
    Ubuntu16环境下安装nodejs,在此记录做个备忘;
  • 首先,使用nodejs进行数据读取,需要用到nodejs的fs模块进行数据读取: fs.readFile('你的资源路径','binary',function(err,data){ if(err){ console.log(err) }else{ console.log('数据读取成功'); } }); ...
  • Linux 如何安装 nodejs

    千次阅读 2021-11-03 22:02:23
    1.打开 nodejs 官网,这里选择二进制包进行安装较为简单 2.将安装包上传至 linux 执行如下命令: # 解压缩 tar -xf node-v16.13.0-linux-x64.tar.xz #移动并重命名 mv node-v16.13.0-linux-x64 /usr/local/nodejs ...
  • Nodejs读取目录下的所有文件

    万次阅读 2019-02-15 10:01:07
    本文主要分析Nodejs中的同步和异步问题。  下面的代码能得到结果吗? var path = require("path"); var fs = require("fs"); var dirs = []; var pathName = "E:/test"; fs....
  • nodejsAPI中文版

    2014-01-10 17:17:14
    nodeJS API中文版.这是官方提供的英文版API的中文翻译版,学习nodejs的必备文档
  • nodejs v0.10.12-x86 win7-32位

    热门讨论 2013-06-28 21:05:14
    用于nodejs的安装包 可直接安装 不需要其他的东西
  • nodejs接收post请求参数

    万次阅读 多人点赞 2017-11-30 23:23:46
    nodejs接收post请求参数 1.1-浏览器发送post请求参数的方式 1.2-服务端接收post请求参数的方式 post请求参数不直接在url路径中拼接,而是放在请求体中发送给服务器请求三要素:请求行、请求头、请求体 1.1-浏览器...
  • javascript开发后端程序的神器nodejs

    万次阅读 2020-12-04 14:06:23
    javascript虽然一直都可以做服务端编程语言,但是它更多的是以客户端编程语言来展示在世人面前的。也许javascript自己都忘记了还可以做服务器端编程,直到2009年nodejs的横空出世。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 302,220
精华内容 120,888
关键字:

teamcity nodejs ruuner

友情链接: I2C.zip