【NodeJS】简介 以及一些简单的练习

这是我第一篇关于nodejs的文章,希望可以边学习边写下去。

简介

nodejs是对高性能V8引擎(chrome浏览器的JavaScript引擎)的封装,通过提供一系列优化的api类库,使v8在浏览器之外仍然能高效运行
node满足js同时运行在前端和后端,而且性能高效

nodejs不是一门语言,不是库,不是框架
是一个JavaScript运行时的环境
以前只有浏览器可以解析执行JavaScript代码,现在的JavaScript可以完全脱离浏览器来执行一切都归功于nodejs

nodejs中的JavaScript:

  1. 没有BOM、DOM
  2. 有EcmaScript:基本的JavaScript语言部分
  3. 在node中为JavaScript提供了一些服务器级别的API

在node环境中位JavaScript提供了一些服务器级别的操作api,比如文件读写,网络服务的构建,网络通信,http服务器

nodejs特性
nodejs使用事件驱动(event-driven)
非阻塞io模型(异步)
轻量和高效

npm是包管理工具,世界上最大的开源库生态系统

nodejs能做什么
web服务器后台
开发命令行工具
游戏服务器

模块化编程

“hello world!”

console.log(“hello world!”)

第一个web服务器

Node中专门提供了一个模块:http

var http = require("http");
//使用require函数引用http模块,从而能够拥有http的引用变量
function process_request(req,res){
    var body = 'thanks for calling\n';
    var content_length = body.length;
    res.writeHead(200,{
        'Content-Length':content_length,
        'Content-Type':'text/plain'
    });
    res.end(body);
}

var s = http.createServer(process_request);
//返回一个server实例
//createServer函数只会接受一个函数参数,它会在用户连接到服务器的时候被调用。、
//前面写的函数会被作为参数传递进去,该函数会被赋予一个请求对象和一个响应对象。
s.listen(8080,function(){
	console.log(‘启动成功’)
});
//服务器被创建后会指定某个特定端口上监听传入的请求

读写文件

var fs=require (“fs”);
fs.readFile(./hello.txt’,function(error,data){
	if(error){
		Console.log(“文件读取失败”);
}else{
	Console.log(data.toString)}
})
fs.writeFile(./hello.txt’,”wenjian”,function(error,data){
	Console.log(“文件写入成功”)
})
//第一个参数:文件路径、第二个参数:文件内容、第三个参数:回调函数

网络服务

服务器要干嘛:

  1. 提供服务
  2. 发请求
  3. 接受请求
  4. 处理请求
  5. 给反馈(发送响应)
  6. 注册request请求事件
  7. 当客户端请求过来,就会自动触发服务器的request请求事件,然后执行第二个参数:回调函数
var http = requir(‘http’)
var server = http.createServer()
server.on(‘request’,function(req,res){
	console.log(‘收到客户端的请求了: ’+req.url)
	res.write(‘hello’)
	res.write(‘nodejs’)
	res.end()
})
//rquest请求事件需要接受两个参数:
//request:请求对象,可以用来获取客户端的请求信息,比如请求路径
//response:响应对象,可以用来给客户端发送响应消息。他有一个方法,write可以给客户端发送响应数据,write方法可以使用多次,但是最后一定要使用end来结束响应,否则客户端会一直等待

server.listen(8000)

根据不同请求返回不同内容

Var http = require(‘http’)

//1.创建server
Var server = http.createServer()
//2.监听request请求事件,设置请求处理函数
Server.on(‘request’,function(req,res){
	var url = req.url
	//1.获取请求路径。req.url获取到的都是端口号之后的那一部分路径,
	//也就是说所有url都是以/开头的
	//2.判断路径处理响应
	if(url===/){
		Res.end(‘index page’)
		}else if(url===/login’){
		Res.end(‘login page’)
		}else{
		Res.end(404)
		}
})
//响应内容只能是1二进制数据或者字符串,我们想要返回数字、对象、数组、布尔值就可以用JSON.stringfy()
//3.绑定端口号,启动服务
Server.listen(80,function(){
	Console.log(‘服务器启动’)
})

了解JavaScript

数据类型

数字类型

nodejs的核心类型有number(数字),boolean(布尔值),string(字符串),object(对象)。以及两种特殊的类型—函数(function)和数组(array)实际上使object的特殊形式,将这三类归为复杂数据类型。null和undefined也是object的特殊形式,在js中有着特殊作用。
undefined值代表还没有赋值或者不存在,null的准确意思是没有值
js中可以用typeof查看任何数据类型:

typeof 10
//'number'

某些情况下,JavaScript需要严格意义上的64位整数值,而不能出现近似值这样的错误,我们可以使用字符串类型,手动操纵这些数字或者使用一些能够进行大整数运算的模块。
在某个数被0除这件事情上,JavaScript和其他语言有很大不同,他只会简单的返回Infinity或者-Infinity,而不会抛出一个运行时异常,他们还可以用来进行比较。

我们可以使用parseInt和parseFloat函数将字符串转换为数字。
如果这些函数无法解析传入的参数,将返回一个特殊值(NaN),为了测试NaN,需要使用isNaN

isNaN(parseInt(“cat”))
true

为了测试一个给定的值是否是一个合法的有限数(不是Infinity,-Infinity或者NaN),需要使用isFinity函数:

isFinity(10/5)
true
isFinity(10/0)
false

string类型

JavaScript内不存在char类型或者字符数据类型。
字符串可以使用单引号或者双引号,如果想在含单引号的字符串中包含单引号,可以使用’
获得JavaScript字符串的长度,需要使用length属性,但是不能对null或者undefined的字符串
合并字符串要使用+

字符串函数
indexOf:在一个字符串中搜索另一个字符串
substr或splice:从一个字符串中截取一个子串
substr(开始索引地址,需要截取的长度)
splice(开始索引地址,结束索引)
split:用split函数将字符串分割成子字符串并返回一个数组
trim:清除字符串前后空白

正则表达式:
JavaScript支持正则,使用方式:

将正则表达式放入两个斜杠字符[/]之间表示:[/]
也可以通过调用发RegExp对象的构造器来表示: new RegExp("[Aa]{2,}")

replace(被替换的字符串,想替换成的内容)
search函数接受一个正则表达式,并返回第一个匹配此正则表达式的子字符串的位置索引,如果匹配不存在则返回-1

object类型

对象是JavaScript语言的核心之一。有以下两种方法来创建对象

var o1 = new Object();
-undefined
var o2 = {};//这就是所谓的字面量语法
-undefined
 

还可以用字面量语法指定对象的内容:

var usr= {
	fist_name:"eddie",
	last_name:'der',
	age:infinity
};

JSON(JavaScript Object Notation):JavaScript对象表示法,充分发挥基于文本的数据格式的灵活性
字面量语法和json表示非常相似,但是有一些区别:
对象字面量使用单引号、双引号、或者不用引号;但是在json中强制使用引号,并且必须是双引号。

可以使用V8的JSON.parse和JSON.stringify函数用来生成json数据。
JSON.parse:接受一个json字符串作为参数,并且转换为一个对象
JSON.stringify:接受一个对象作为一个参数并转换为字符串
我们可以用以下方法给对象增加新属性:

user.haircolor="red";
usr["haircolor"]="red";

var attibute = "haircolor";
usr[attribute]="red";

删除某个属性使用delete关键字

delete user.haircolor

对象没有size或者length等属性或者方法,为了获得对象的大小,可以使用如下方法:

Object.keys(user).length

array 类型

实际上是JavaScript对象的一个特殊形式。我们可以用传统的表示法或者数组字面量语法来创建它

var arr1=[];
var arr2 = new Array();

V8有一个扩展用来判断是否为一个数组:Array.isArray函数
数组可以使用length函数来判断数组里面的个数

在数组中添加新项的方法:
push函数和arr[arr.length]

通过指定索引插入新元素,如果超出上限,中间会被置undefined

删除delete会将对应位置内容置为undefined。
想真正删除,使用splice函数,接收起始项索引和数目作为参数
他会返回被删除的数组项,并且原始数组已经被修改,这些项目不再存在

实用函数
push,pop在数组的末尾插入或者删除元素
unshift,shift在数组头部插入或者删除元素
join(“分隔符”)指定字符串被分割符分割
sort排序,对于和逾期情况不符的情况,我们可以使用自定义函数,并传入sort函数:

arr.sort(function(a,b){
		var a1=a.toLowerCase(),b1=b.toLowerCase();
		if (a1<b1)return -1;
		if (a1>b1)return 1;
		return 0;
	}
);

类 原型 和继承

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值