原生 node 服务器

1. 导入 node.js 核心模块  / 自带模块 :   http

  • const http = require('http');    // HTTP 库所具有的功能已经赋给了 http 对象
    const querystring = require('querystring');    // 查询字符串

2. 通过 http 模块 的方法创建服务器

Node 本身就是 Web 服务器

// 调用 HTTP 模块的一个工厂模式方法 http.createServer() 创建新的 HTTP 服务器

// 每当一个新的访问请求到达 Web 服务器,它都将调用我们指定的函数方法来处理

// 新创建的 HTTP 服务器并没有赋值给任何变量,它只会成为存活在全局范围内的匿名对象
// 传了一个匿名函数作为参数。此函数绑定在新创建服务器的事件监听器上,进行 request 事件处理

  • const server = http.createServer(function (request, response) {
    // response.writeHead(200, {'Content-Type': 'text/plain'});
    response.setHeader('Content-Type', 'text/html;charset:utf-8'); console.log(request.url);
    const url = request.url;
    // const query = url.split('?')[1].split('&')[0]; // username=Ryen
    const query = url.split('?')[1] // username=Ryen&password=123456
    querystring.parse(query); // {"username": 'Ryen', "password": '123456'} // end 方法将会关闭 HTTP 连接。但因为我们同时还传入了一个字符串
    response.end('Hello World\n'); // end 方法将在把此内容发送给客户端后才关闭连接
    });

回调函数的参数 是两个对象

// 一个是请求的对象 request

// 如果在浏览器输入 http://127.0.0.1:8124?username=Ryen&password=123456'

// 浏览器 会发送个请求给 服务器

// 以 '?' 开头的字符串,叫做 查询字符串

// 里面的每个字段都是 key=value
// 多个字段以 & 连接

// 一个是响应的对象 response    // 调用了 response 对象的几个方法,这将修改响应结果

// 必须调用 response.writeHead() 或者 response.setHeader() 来设置 HTTP 响应头
// 设置状态代码为 200(表示 HTTP 状态代码“200 OK”),并且传入一段 HTTP 头描述

3. 监听端口号,启动服务器

  • server.listen(8124, "127.0.0.1");    // 初始化启动服务器,并告诉它监听在 8124 端口
    console.log('Server running at http://127.0.0.1:8124/');    // 将在标准输出 stdout 上打印信息

node.js + express 服务器(进公司一般都是结合框架)

npm init

"name": hello_node_server

npm install express

1. 导入 express 模块

  • const express =  require('express');

2. 创建 app 应用对象

  • const app = express();

3. 写业务逻辑:处理请求,返回响应

  • app.get('/', (request, response)=>{
    console.log(request.query);
    response.send('Hello Node Express!');
    });

4. 监听端口号:一个端口号 有且只能运行 一个程序

  • app.listen(3000, err=>console.log(err?err:'服务器启动成功!'));

根据代码实时显示效果

Node.js 只有在第一次引用到某部份时才会去解析脚本文件,以后都会直接访问内存,避免重复载入,

而 PHP 则总是重新读取并解析脚本(如果没有专门的优化配置)。

Node.js的这种设计虽然有利于提高性能,却不利于开发调试,

因为我们在开发过程中总是希望修改后立即看到效果,而不是每次都要终止进程并重启

  • npm install -g supervisor
  • 或者 yarn global add supervisor
  • supervisor app.js
  • 当代码被改动时,运行的脚本会被终止,然后重新启动。

Node.js_express_搭建一个服务器的更多相关文章

  1. 如何使用Node.js搭建一个服务器

    在node环境中运行下面的代码 "use strict"; const http = require("http"), path = require(" ...

  2. 使用 Node.js 搭建 Web 服务器

    使用Node.js搭建Web服务器是学习Node.js比较全面的入门教程,因为实现Web服务器需要用到几个比较重要的模块:http模块.文件系统.url解析模块.路径解析模块.以及301重定向技术等, ...

  3. nodejs 简单的搭建一个服务器

    前言: nodejs 主要是后台语言  node 是在终端运行的,所以他可以进行 dos 命令 模块 自定义 JavaScript 是前台语言 nodejs 是 也是使用我们的 JavaScript ...

  4. 学习 node.js 搭建web服务器

    开始 学习使用 node.js 首先完成搭建一个 web服务器.myweb.js var http = require('http'); var url = require('url'); var h ...

  5. 三分钟使用webpack-dev-sever搭建一个服务器

    webpack-dev-server是一个小型的Node.js Express服务器,我们可以通过它搭建一个本地服务器,并且实现文件热更新; 1.切换到你的目录下对项目进行初始化 npm init 一 ...

  6. 用node.js搭建本地服务器

    我的第一篇笔记来写写node.js,我对node.js的并不是很了解,基本的项目路径变换还是会的.原先我下载node.js就是我想学vue.js,后来因为工作的繁忙搁浅了我的计划.最近在学习phase ...

  7. node.js搭建Web服务器

    Node.js 博客搭建 一. 学习需求 Node 的安装运行 会安装node,搭建node环境 会运行node. 基础模块的使用 Buffer:二进制数据处理模块 Event:事件模块 fs:文件系 ...

  8. 使用原生node.js搭建HTTP服务器,支持MP4视频、图片传输,支持下载rar文件

    前言 如何安装node.js,如何搭建一个简易的http服务器我这里就不再赘述了,不懂的同学可以先去学习一下.当然了,我写的也就属于简易版的增强版,大家有什么高见的欢迎提出,然后进入正题. 目录结构 ...

  9. 用node.js搭建一个静态资源站 html,js,css正确加载 跳转也完美实现!

    昨天买了一个服务器想着用来测试一些自己的项目,由于是第一次建站,在tomcat,linux,node.js间想了好久.最终因为node搭建比较方便没那么麻烦就决定用node.js来搭建网站项目. 搭建 ...

随机推荐

  1. VS2012/2013/2015/Visual Studio 2017 关闭单击文件进行预览的功能

    Visual Studio在2010版本后推出了点击项目管理器预览文件的功能,但是对于配置不咋地的旧电脑总是觉得有点卡,下面是解决方案. 英文版方法:Tools->Options->Env ...

  2. Node.js实战项目学习系列(1) 初识Node.js

    前言 一直想好好学习node.js都是半途而废的状态,这次沉下心来,想好好的学习下node.js.打算写一个系列的文章大概10几篇文章,会一直以实际案例作为贯穿的学习. 什么是node Node.js ...

  3. [数学杂志]AML

    Copied from: http://www.elsevier.com/journals/applied-mathematics-letters/0893-9659/guide-for-author ...

  4. esnext:Function.prototype.toString 终于有规范了

    从 ES1 到 ES5 的这 14 年时间里,Function.prototype.toString 的规范一字未变: An implementation-dependent representati ...

  5. tr1

    tr echo 12345 | tr '0-9' '9876543210' echo 87654 | tr '9876543210' '0-9' ROT13 echo "tr came, t ...

  6. How far away ? HDU - 2586 【LCA】【RMQ】【java】

    题目大意:求树上任意两点距离. 思路: dis[i]表示i到根的距离(手动选根),则u.v的距离=dis[u]+dis[v]-2*dis[lca(u,v)]. lca:u~v的dfs序列区间里,深度最 ...

  7. Hive_1

    Sqoop实现Hbase和关系型数据库的数据互导 Zookeeper 配置的更新,文件的命名 Hive是建立在Hadoop之上为了减少MapReduce jobs编写工作的批处理系统,HBase是为了 ...

  8. uploadPreview上传图片前预览图片

    uploadPreview.js是一款图片上传前的预览插件.谷歌.火狐.IE都可以兼容,但是不支持safari. 相关的html代码: <!DOCTYPE html PUBLIC "- ...

  9. CEYE平台的使用

    0x01 CEYE 是什么 CEYE是一个用来检测带外(Out-of-Band)流量的监控平台,如DNS查询和HTTP请求.它可以帮助安全研究人员在测试漏洞时收集信息(例如SSRF / XXE / R ...

  10. 求逆序对常用的两种算法 ----归并排 & 树状数组

    网上看了一些归并排求逆序对的文章,又看了一些树状数组的,觉得自己也写一篇试试看吧,然后本文大体也就讲个思路(没有例题),但是还是会有个程序框架的 好了下面是正文 归并排求逆序对 树状数组求逆序对 一. ...