zoukankan      html  css  js  c++  java
  • node学习第一天

    • 创建服务器
      • 利用require引入http模块:var http=require("http")
      • 利用http模块创建server服务器;
        • 创建服务器:var server=http.createServer(function(req,res){})
        • req:为形参,指的是前端向后台发送的请求;
        • res:为形参,指的是后台向前端响应的结果;
    • 服务器监听端口号的设置
      • 通过listen监听端口号:server.listen(8080),端口号可以自定义设置;
    • 浏览器发送请求
      • 在网址栏中设置localhost:8080,加载页面;发送请求,每刷新一次,请求一次;端口号必须与设置的一致;
      • 网址栏中的地址可以是本地IP加端口号;访问页面;
    • 服务器的运行
      • 利用webstorm中右键中的run,在里面运行服务器;
      • 可以在文件夹中利用命令行node 01http-server.js,开启服务器;ctrl+c关闭服务器

    创建第一个node的应用

    步骤一、引入 required 模块

    var http = require("http");

    步骤二、创建服务器

    接下来我们使用 http.createServer() 方法创建服务器,并使用 listen 方法绑定 8888 端口。 函数通过 request, response 参数来接收和响应数据。

    实例如下,在你项目的根目录下创建一个叫 server.js 的文件,并写入以下代码:

    var http = require('http');
    
    http.createServer(function (request, response) {
    
        // 发送 HTTP 头部 
        // HTTP 状态值: 200 : OK
        // 内容类型: text/plain
        response.writeHead(200, {'Content-Type': 'text/plain'});
    
        // 发送响应数据 "Hello World"
        response.end('Hello World
    ');  
    }).listen(8888);
    
    // 终端打印如下信息
    console.log('Server running at http://127.0.0.1:8888/');

    以上代码我们完成了一个可以工作的 HTTP 服务器。

    使用 node 命令执行以上的代码:

    node server.js
    这样我们打开
    http://127.0.0.1:8888/
    就可以看到
    Hello World



    Node.js REPL(交互式解释器)

    Node.js REPL(Read Eval Print Loop:交互式解释器) 表示一个电脑的环境,类似 Window 系统的终端或 Unix/Linux shell,我们可以在终端中输入命令,并接收系统的响应。

    Node 自带了交互式解释器,可以执行以下任务:

    • 读取 - 读取用户输入,解析输入了Javascript 数据结构并存储在内存中。

    • 执行 - 执行输入的数据结构

    • 打印 - 输出结果

    • 循环 - 循环操作以上步骤直到用户两次按下 ctrl-c 按钮退出。

    Node 的交互式解释器可以很好的调试 Javascript 代码。

    开始学习 REPL

    我们可以输入以下命令来启动 Node 的终端:

    $ node
    >

    这时我们就可以在 > 后输入简单的表达式,并按下回车键来计算结果。

    简单的表达式运算

    接下来让我们在 Node.js REPL 的命令行窗口中执行简单的数学运算:

    $ node
    > 1 +4
    5
    > 5 / 2
    2.5
    > 3 * 6
    18
    > 4 - 1
    3
    > 1 + ( 2 * 3 ) - 4
    3
    >

    使用变量

    你可以将数据存储在变量中,并在你需要的时候使用它。

    变量声明需要使用 var 关键字,如果没有使用 var 关键字变量会直接打印出来。

    使用 var 关键字的变量可以使用 console.log() 来输出变量。

    $ node
    > x = 10
    10
    > var y = 10
    undefined
    > x + y
    20
    > console.log("Hello World")
    Hello World
    undefined
    > console.log("www.runoob.com")
    www.runoob.com
    undefined

    多行表达式

    Node REPL 支持输入多行表达式,这就有点类似 JavaScript。接下来让我们来执行一个 do-while 循环:

    $ node
    > var x = 0
    undefined
    > do {
    ... x++;
    ... console.log("x: " + x);
    ... } while ( x < 5 );
    x: 1
    x: 2
    x: 3
    x: 4
    x: 5
    undefined
    >

    ... 三个点的符号是系统自动生成的,你回车换行后即可。Node 会自动检测是否为连续的表达式。

    下划线(_)变量

    你可以使用下划线(_)获取上一个表达式的运算结果:

    $ node
    > var x = 10
    undefined
    > var y = 20
    undefined
    > x + y
    30
    > var sum = _
    undefined
    > console.log(sum)
    30
    undefined
    >

    REPL 命令

    • ctrl + c - 退出当前终端。

    • ctrl + c 按下两次 - 退出 Node REPL。

    • ctrl + d - 退出 Node REPL.

    • 向上/向下 键 - 查看输入的历史命令

    • tab 键 - 列出当前命令

    • .help - 列出使用命令

    • .break - 退出多行表达式

    • .clear - 退出多行表达式

    • .save filename - 保存当前的 Node REPL 会话到指定文件

    • .load filename - 载入当前 Node REPL 会话的文件内容。

     

    停止 REPL

    前面我们已经提到按下两次 ctrl + c 键就能退出 REPL:

    Node.js 回调函数

    Node.js 异步编程的直接体现就是回调。

    异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。

    回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都支持回调函数。

    例如,我们可以一边读取文件,一边执行其他命令,在文件读取完成后,我们将文件内容作为回调函数的参数返回。这样在执行代码时就没有阻塞或等待文件 I/O 操作。这就大大提高了 Node.js 的性能,可以处理大量的并发请求。

    回调函数一般作为函数的最后一个参数出现:

    function foo1(name, age, callback) { }
    function foo2(value, callback1, callback2) { }
     

    阻塞代码实例

    创建一个文件 input.txt ,内容如下:

    嘿嘿

    创建 main.js 文件, 代码如下:

    var fs = require("fs");
    
    var data = fs.readFileSync('input.txt');
    
    console.log(data.toString());
    console.log("程序执行结束!");

    以上代码执行结果如下:

    $ node main.js
    
    嘿嘿
    程序执行结束!

    非阻塞代码实例

    创建一个文件 input.txt ,内容如下:

    嘿嘿

    创建 main.js 文件, 代码如下:

    var fs = require("fs");
    
    fs.readFile('input.txt', function (err, data) {
        if (err) return console.error(err);
        console.log(data.toString());
    });
    
    console.log("程序执行结束!");

    以上代码执行结果如下:

    $ node main.js
    程序执行结束!
    嘿嘿
     



  • 相关阅读:
    【java】对象赋值给另一个对象
    spring boot系列(五)spring boot 配置spring data jpa (查询方法)
    Spring Data JPA 查询
    Spring Data JPA 介绍
    OpenID简介
    OAUTH协议介绍
    URL encoding(URL编码)
    RESTful 介绍
    spring boot系列(四)spring boot 配置spring data jpa (保存修改删除方法)
    spring boot 启动报 java.lang.NoClassDefFoundError: ch/qos/logback/core/spi/LifeCycle 错误
  • 原文地址:https://www.cnblogs.com/chenyudi/p/12030472.html
Copyright © 2011-2022 走看看