Node.js浅谈之概念


一、Node.js是什么?

Node.js是一个基于Chrome V8引擎的javaScript运行环境,首先对于概念来讲,一定要记住它只是一种运行环境,并不是一种编程语言。

  • 下载:在http://nodejs.cn/中文网或者https://nodejs.org/英文网下载并安装
  • 安装好之后可以在命令行执行node-v查看node版本
  • 执行npm-v查看包管理的版本

二、Node.js VS Chrome

既然二者都是运行环境,可以简单对比一下,方便记忆。

  • 基于V8引擎,符合js代码运行机制
  • 核心机制:V8引擎
  • Chrome更强大,还有渲染引擎,以及Bom Api的支持

三、浅谈Node.js

1、为什么要学习Node,js?

  • 前端工程化已经离不开Node
  • 全栈开发者,几乎零成本的方式学习后端开发

2、Node,js有什么特点?

  • 基于Chrome V8引擎
  • 事件驱动
  • 非阻塞I/O (几段代码同时运行互不干扰, I:input O:output 指数据的流入与流出)

3、学习资源

  • Node中文网,查看api文档
  • Node中文网 “入门教程”
  • cnode

4、Node代码运行的两种方式

  • node命令行的交互式环境,直接输入node
  • 使用"node 文件名.js " 运行js脚本,按Tab可以自动补全

5、Node与Chrome的api差异

  • Chrome = BOM + DOM + ECMAScript
  • node = ECMAScript + node内置的api

特别注意

  • 不同版本的node,支持的ECMAScript的语法是不一样的
  • 尽管在最新的版本下,ECMAScript的语法也并不是完全支持的,比如import、export、装饰器语法等,内置支持common.js语法。
  • node中也有全局对象,但不是window,是global

6、Node搭建服务器

  • common.js模块化语法、路径、后缀、nodemon/supervisor

7、Express搭建服务器

  • npm&yarn

四、什么是服务器?

凡是可以为客户端提供数据等服务的应用程序,都是服务器。

服务器要具备哪些能力?

  • 接收请求的能力
  • 数据处理的能力
  • 发送响应的能力

五、使用两种方式搭建服务器

Node.js原生Api 搭建服务器

// CommonJS模块化语法
// module.exports = {}  exports 导出
// require 导入
var http = require('http')
var fs = require('fs')
var path = require('path')

// req - request 表示请求体对象,它代表的是客户端向服务器发起的请求过程
// res - response 表示响应体对象,它代表的是服务器对客户端的响应过程

// 创建一台服务器,提供两种类型的资源:静态资源和动态资源
var server = http.createServer(function(req, res) {
  // 第一件事,接受请求
  var url = req.url  // 路由
  url = url==='/' ? '/index.html' : url
  // fs.createReadStream('./public'+url).pipe(res)
  // path.json()/path.resolve() 把多个路径片段,拼接或解析成一个绝对路径
  fs.createReadStream(path.resolve(__dirname, './public'+url)).pipe(res)
})

// 建议使用8000以上的四位数
server.listen(8888, function() {
  console.log('server is running on 8888')
})

用Express 重构WebServer

  • 在命令行执行 npm init
  • 安装: $cnpn install express -S
  • 创建server.js
var express = require('express')
var server = express()

// 静态资源
// 使用中间件、指定静态资源服务器的目录所在
server.use(express.static('public'))

// 动态资源
server.get('/test', function(req, res) {
  // 根据入参,查询数据库,处理数据,响应给客户端
  res.json({err: 0, msg: 'success', data: [1,2,3,4]})
  // res.send('hello express')
})

server.listen(8889, function() {
  console.log('server in running on 8889')
})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值