const http = require('http')
// 引入http模块
http.createServer(function(req,res){
// 创建一个http服务器
// 这里是一个回调函数
console.log('服务器');
res.writeHead(200,{'Content-Type':'text/plain'});
res.end('hello world\n')
}).listen(8080)

在Node应用程序中,执行异步操作的函数将回调函数作为最后一个参数,回调函数又接收错误对象作为第一个参数

  • 观察者模式:events内置事件模块

    • // 引入 events 模块
      var events = require('events');
      // 创建 eventEmitter 对象
      var eventEmitter = new events.EventEmitter();
      // 绑定事件及事件的处理程序
      eventEmitter.on('eventName', eventHandler);
      // 触发事件
      eventEmitter.emit('eventName');
  • 在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。
    • 创建 Buffer 类
    • 写入缓冲区、读取缓冲区数据
    • 将 Buffer 转换成 JSON 对象:buf.toJSON()
      const buf = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5]);
      const json = JSON.stringify(buf);
      // 当字符串化一个 Buffer 实例时,JSON.stringify() 会隐式地调用该 toJSON()
      // 输出: {"type":"Buffer","data":[1,2,3,4,5]}
      console.log(json);
      const copy = JSON.parse(json, (key, value) => {
      return value && value.type === 'Buffer' ?
      Buffer.from(value.data) :
      value;
      });
      // 输出: <Buffer 01 02 03 04 05>
      console.log(copy);
  • Stream流
    • 读取流、写入流

      var fs = require('fs')
      var zlib = require('zlib') //压缩模块
      var rs = fs.createReadStream('input.txt') // 读取流
      var os = fs.createWriteStream('output.txt') // 写入流
      rs.setEncoding('utf-8')
      rs.on('data',chunk=>{
      os.write(chunk,'UTF8') })
      rs.pipe(os) // 管道流,完成对大文件的慢慢传输
      // 链式流,例:先压缩再写入
      rs.pipe(zlib.createGzip()).pipe(fs.createWriteStream('output.zip'))
      // 链式流,解压(这里压缩文件名后缀必须是'.gz')
      fs.createReadStream('input.txt.gz').pipe(zlib.createGunzip()).pipe(fs.createWriteStream('input.txt'));
  • 模块系统
       

    一个 Node.js 文件就是一个模块,这个文件可能是JavaScript 代码、JSON 或者编译过的C/C++ 扩展

    • exports:暴露'属性名:属性值',key:暴露对象 ; module.exports 暴露'属性值',原生暴露对象
    • require查找顺序:文件模块缓存 -> 原生模块缓存 -> 原生模块 -> 文件模块
    • require接收以下几种模块
      1. http、fs、path等,原生模块
      2. ./mod或../mod,相对路径的文件模块
      3. /pathtomodule/mod,绝对路径的文件模块
      4. mod,非原生模块的文件模块
  • NodeJs全局对象是global,ECMAScript是window
    • 全局变量:全局对象的属性

      • 在最外层定义的变量;
      • 全局对象的属性
      • 隐式定义的变量(未定义直接赋值的变量)

node服务器基本搭建的更多相关文章

  1. 手把手教你从购买vps到搭建一个node服务器

    要准备什么? 1.5刀 2.最好有FQ软件(可以用蓝灯) let's Go! 一.vps购买 vps可以选择digital ocean(do) 链接 ,由于是外国网站,响应比较慢,所以最好翻个墙. g ...

  2. webstorm搭建node服务器

    前言,搭建服务器,必须有node.js环境(吐槽:本来就是用node搭建的(⊙o⊙)…) 下载node.js 网址  https://nodejs.org/en/ 先新建项目: 这里选择Node.js ...

  3. 在服务器上搭建node环境

    一般公司的发布是后台人员完成的,但是作为开发不会发布项目还是有点不高级的感觉 因为没有搭建虚拟机于是就直接在我阿里云的服务器上搭建了node环境, 第一步,前往node官网下载linux下的阿里云的镜 ...

  4. 搭建一个最简单的node服务器

    搭建一个最简单的node服务器 1.创建一个Http服务并监听8888端口 2.使用url模块 获取请求的路由和请求参数 var http = require('http'); var url = r ...

  5. node服务器搭建流程

    1,创建一个空文件夹,用来存放项目. 2,在空文件夹中,在cmd命令提示符中输入npm init  初始化一个服务器项目. 设置的属性信息:    name : 项目名称(小括号中是默认的,文件夹名相 ...

  6. paip.最好的脚本语言node js 环境搭建连接mysql

    paip.最好的脚本语言node js 环境搭建连接mysql #====下载node...走十一个exe..容易的.. 1 #0----Hello world   .js 2 #---------模 ...

  7. rsync服务器的搭建

    Rsync(remote synchronize)是一个远程数据同步工具,简要的概括就是主机于主机之间的文件目录数据的一个同步.下面就是rsync服务器的搭建过程.    系统环境 平台:Centos ...

  8. 阿里云ECS服务器上搭建keepalived+mha+mysql5.6+gtid+一主两从+脚本判断架构踩的坑

    最近,公司项目搭建了一套后端数据库架构,不是在RDS,是在阿里云的ECS服务器上搭建keepalived.mha.mysql5.6.gtid.一主两从架构,目前还没有实现读写分离,以后架构升级,可能代 ...

  9. node.js简单搭建服务,访问本地站点文件

    1.安装nodejs服务(从官网下载安装),node相当于apache服务器 2.在自己定义的目录下新建服务器文件如 server.js 例如,我在D:\nodeJs下创建了server.js文件 v ...

随机推荐

  1. CTF-WeChall-第一天

    2020.09.09 今天来了一个新平台,WeChall,从简单的开始做,才能找到自信--i春秋的题做自闭了

  2. [LeetCode]322. 零钱兑换(DP)

    题目 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成总金额,返回 -1. 示例 1: 输入: coin ...

  3. Kafka 【入门一篇文章就够了】

    初识 Kafka 什么是 kafka Kafka 是由 Linkedin 公司开发的,它是一个分布式的,支持多分区.多副本,基于 Zookeeper 的分布式消息流平台,它同时也是一款开源的基于发布订 ...

  4. 分布式系统监视zabbix讲解九之使用snmp监控windows

    zabbix监控windows演示 第一步:开启服务. 控制面板>程序>程序和功能>打开或关闭windows功能,勾选上简单网络管理协议(SNMP),以及下面的子程序.点击确定 第二 ...

  5. 【JVM系列1】深入分析Java虚拟机堆和栈及OutOfMemory异常产生原因

    前言 JVM系列文章如无特殊说明,一些特性均是基于Hot Spot虚拟机和JDK1.8版本讲述. 下面这张图我想对于每个学习Java的人来说再熟悉不过了,这就是整个JDK的关系图: 从上图我们可以看到 ...

  6. 刷题[HCTF 2018]WarmUp

    解题思路 进入页面之后,一个大大的滑稽. 查看源码 查看源码发现有source.php .打开 发现还有一个hint.php.打开发现 由此可知是代码审计了 解题 代码审计 先看此段代码,大致意思是. ...

  7. hexo博客添加gitalk评论系统

      经过了一天的折腾,我终于为自己的博客添加上了评论系统.坦率的讲,为什么网上那么多方案我还要自己写一篇博客,那就是因为他们说的都有bug,所以我要自己总结一下.   我选用的是gitalk评论系统, ...

  8. 理解vue与MVVM三要素

    MVVM到底是什么,跟Jquery有什么区别? MVVM理解,跟MVC区别 Model View Controller,一般是用户操作view视图按钮,触发controller内方法,cotrolle ...

  9. 理解pytorch几个高级选择函数(如gather)

    目录 1. 引言 2. 维度的理解 3. gather函数 4. index_select函数 5. masked_select函数 6. nonzero函数 1. 引言   最近在刷开源的Pytor ...

  10. 走进shiro,构建安全的应用程序---shiro修仙序章

    0. 写在前面 在最近的一个项目当中,我们基于Shiro实现我们系统的认证和授权.借此机会,写几篇博客,总结一下在本次实践当中遇到的问题,和较全面地学习一下Shiro的知识点, 1. 权限管理 权限管 ...