Node.js-1-基础

概述

Node.js是JavaScript运行时的环境,可以解析和执行JavaScript代码,使得JavaScript可以脱离浏览器进行运行,是构建于Chrome的V8引擎之上的

JavaScript(浏览器vsNode.js)

浏览器中的JavaScript

  1. ECMAScript语法
  2. BOM
  3. DOM

Node.js中的JavaScript

  1. ECMAScript语法
  2. 没有BOM、DOM

特性

Node.js使用event-driven和non-blocking I/O model来实现轻量和高效

  1. event-driven事件驱动
  2. non-blocking I/O model非阻塞IO模型(异步)

核心模块

为JavaScript提供一些服务器级别的操作API

  1. 文件读写
  2. 进程管理
  3. 网络通信

fs

文件读写

文件读取

fs.readFile(参数1,回调函数(参数2,参数3){})

  1. 参数1:读取文件的路径
  2. 参数2:error
    读取失败:错误对象
    读取成功:null
  3. 参数3:data
    读取失败:null
    读取成功:数据
文件写入

fs.writeFile(参数1,回调函数(参数2){})

  1. 参数1:读取文件的路径
  2. 参数2:error
    读取失败:错误对象
    读取成功:null

process

可以管理进程

console.log(process.argv);
// 'C:\\Program Files\\nodejs\\node.exe',
// 'D:\\Postgraduate\\Html-Css-Javascript\\Node.js\\01\\code\\8-process.js',
// 'argv1',
// 'argv2'
console.log(process.argv.slice(2));
// ['argv1', 'argv2']

http

HTTP服务器

  1. 加载http核心模块
  2. 使用http.createServer()创建一个web服务器,并返回一个server实例
  3. 服务器提供的服务包括:发送请求、接收请求、处理请求、发送响应
  4. 绑定端口号,启动服务器
//加载http核心模块
let http = require('http');
//http.createServer,创建一个web服务器,返回一个server实例
let server = http.createServer()

//服务器提供的服务:对数据的服务,发送请求,接受请求,处理请求,发送响应
server.on('request', function(request, response) {
    //接收请求
    console.log('收到客户端请求' + request.url);
    //1.发送响应
    //1.1
    // response.write('success')
    // response.end()
    //1.2
    //response.end('success')

   //2.根据不同的请求路径,返回不同的响应
    let url = request.url
    if (url === '/') {
        response.end('index page')
    } else if (url === '/login') {
        response.end('login page')
    } else if (url === '/product') {
        let product = [{
            name: '苹果',
            price: 20
        }, {
            name: '香蕉',
            price: 30
        }]

        //响应内容只能是二进制数或者字符串,因此返回对象是数组或其他类型,需要转换类型
        response.end(JSON.stringify(product))
    } else {
        response.end('404 Not Found')
    }
})

//绑定端口号,启动服务器
server.listen(3000, function() {
    console.log('服务器启动成功,可以通过http://127.0.0.1:3000/来访问');
})

注:

  1. 发送响应,返回中文信息,会乱码,需要设置字符集
  2. 可以发送多次响应,但必须以response.end()结束,否则浏览器会一直等待响应。可在end中写响应信息

模块化

在node中,没有全局作用域,只有模块作用域。只能通过require访问另一个文件,但内部的代码不会受影响

require的作用

  1. 加载文件模块并执行
  2. 获取被加载文件模块导出的接口对象,通过exports挂载文件模块的对象,让其他文件模块可以访问得到
//文件1
let onExp = require('./on')
console.log(onExp.v);
console.log(onExp.add(10, 20));
//文件2
let v = 'I am on'
exports.v = 'I am on'
exports.add = function(a, b) {
    return a + b
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值