node.js学习笔记之读写,服务器,自定义模块

node.js对我来说是完全陌生的东西,所以一边学习一边复习。

node.js介绍

node.js是什么

  • node.js不是一门语言
  • node.js不是库或者框架
  • node.js是JS运行时环境
  • 简单来讲JS可以解析和执行JS代码
  • 以前只有浏览器可以来解析和执行JS代码,现在可以脱离浏览器来运行,归功于node.js
  • 构建于chrome v8引擎,代码只是具有特定格式的字符串,引擎可以认识它,帮你去解析和执行。v8引擎执行JS代码最快

浏览器中的JS

  • ECMAScript语法
  • DOM
  • BOM

node.js中的JavaScript

  • 没有BOM和DOM(因为服务器不操作页面)
  • ECMAScript语法
  • 为JS提供一些服务器级别的操作API
  1. 文件读写,fs核心模块
  2. 网络服务的构建,http核心模块
  3. 网络通信
  4. 等等

node.js的特点

  • 事件驱动
  • 非阻塞I/O模型(异步)
  • 轻量级,高效
  • node.js包npm是世界上最大的生态系统开源库

node.js能做什么

  • web服务器后台
  • 命令行工具
  • 游戏服务器

参考资料

学习内容

  • B/S编程模型
  • 模块化编程
  • node常用API
  • 异步编程
  • Express开发框架
  • EcmaScript 6

node.js功能

文件读写功能

fs是file-system的缩写,node想要操作文件,必须先引入fs这个核心模块。
  • 读文件
  1. 使用require方法加载fs核心模块
var fs = require('fs'
  1. 使用fs.readFile()方法读取文件。两个参数,一个是文件路径,一个是回调函数。**一定要注意,回调函数里的data返回的是二进制数据,所以要将data转为string对象。**另外,这个方法可以读取任何类型的文件,比如html,img等
fs.readFile('.file/index.html',function(error,data){
if (err){
return console.log('not found')
} else {
console.log(data.toString())
}
})
  • 写文件
  1. 使用require方法加载fs核心模块
var fs = require('fs'
  1. 使用fs.writeFile()方法读取文件。三个参数,一个是文件路径,一个是写入的文件内容,一个是回调函数。回调函数只有一个参数就是error。注意,写入的内容会覆盖文件之前的内容
fs.writeFile('.file/index.html','hello world',function(error){
if (err){
return console.log('写入失败')
} else {
console.log(‘写入成功)
}
})

简单的http服务

  1. 加载http核心模块
var http = require('http')
  1. 创建一个web服务器
var server = http.createServer()
  1. 接收请求,设置请求处理函数处理请求。server.on(‘request’,回调函数)。回调函数有两个参数,request和response,response通过res.write()来给客户端发送响应,必须以res.end()结尾。注意,如果返回的是中文会出现乱码的现象。因为中文计算机操作系统默认编码语言是gbk而浏览器是utf-8.所以需要通过res.setHeader,Content-Type来告诉浏览器我返回的数据的语言编码
server.on('request',function(req,res){
res.setHeader('Content-Type','text/plain; charset=utf-8')
res.end('收到客户端的请求了')
  1. 开启服务器。server.listen(端口号,回调函数)。注意,如果改了代码,要重启服务器
    注意,ip地址是用来定位计算机的,而端口号是用来定位具体的应用程序的,所有需要联网通信的软件都需要端口号
server.listen(3000,function(){
console.log('服务器开启了,可以通过http:127.0.0.1:3000来进行访问')
除了读写文件和服务器功能,node.js还有其他一些核心模块可以用require来加载方便我们使用。在弄得中,模块有3种
  1. 具名的核心模块
  2. 用户编写的自定义模块
  3. 第三方模块

用户自定义模块

通过require(自定义模块路径)来加载自定义模块。但是在node中,没有全局作用域,只有模块作用于,那如何让模块与模块之间进行通信?**每个文件模块都提供一个对象exports(空对象)将需要被外界访问的成员改在到exports上。

//这是我的主文件a.js,需要引用b.js
var b = require(./b.js)
console.log('我的名字是' + b.name)
console.log(b.add(2,3))
//这是我的自定义模块b.js
exports.name = 'xiaobai'
exports.add = function(x,y){
return x + y
}

猜你喜欢

转载自blog.csdn.net/lizzyyang55/article/details/87876680