初识node,以及url模块和http模块的简单应用

nodeJS 的概念

Node.js是一个基于Chrome V8引擎(编译成原生机器码)的让JavaScript运行在服务器端的运行环境,它让JavaScript的触角伸到了服务器端。

nodeJS的特性

1.单线程

NodeJS在访问高IO操作后不会等待其完成,而是立即去执行其他代码,操作完成后会使用回调函数返回,保证高效的利用

当前线程的cpu 不造成硬件浪费

2.非阻塞IOf

NodeJS在访问高IO操作后不会等待其完成,而是立即去执行其他代码,操作完成后会使用回调函数返回
保证高效的利用当前线程的cpu 不造成硬件浪费

3.事件驱动

由于是单线程,所以把高io的操作 就会移动到事件队列中等待完成,完成后通过回调函数的方式返回给线程来进行处理。
这个循环处理的过程称之为:事件环

4.运行node

在cmd中输入node+空格+文件路径

模块的概念

node中以模块来划分功能,一个js是一个模块,多个模块相互引用形成一个模块化式项目

模块的书写

s文件因为作用域的问题,变量和函数只能在当前文件中进行使用,如果在当前模块外引用,必须使用exports/module.exports(特定的类型使用)让这些内容进行暴漏,使用的时候使用require来进行引入

module.exports调用构造函数的时候使用不需要键值

模块的优点

1.减少代码重复,提高利用率
2.划分功能,方便管理
3.方便使用第三方模块

路由就是根据对不同的请求,找到不同的代码完成处理

HTTP模块

a界面
var uname = "haha";
exports.uname = uname;
function fun(){
    console.log("我是一个函数")
}
exports.fun = fun;
function Numbera(n){
    this.num = n;
}
module.exports=Numbera;
b界面
var a = require("./a");
console.log(a.uname);
var fun = require("./a");
a.fun(); 
var newNum = new a(2);
console.log(newNum.num);

注意:函数暴露的时候一定不要加()

url模块

登陆eg:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>登陆</title>
</head>
<body>
    <form action="http://localhost:8888/login">
        <input type="text">
        <input type="text">
        <input type="submit" value="登陆">
    </form>
</body>
</html>
注册eg:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>注册</title>
</head>
<body>
    <form action="http://localhost:8888/register">
        <input type="text">
        <input type="text">
        <input type="submit" value="注册">
    </form>
</body>
</html>
JSeg:
// 1.http模块的引用
var http = require("http")
// 2.创建服务
var url = require("url");
//req请求   res响应
http.createServer(function(req,res){   
  	//解决中文乱码问题
    res.writeHead(200,{"Content-type":"text/html;charset=utf-8"});
    var urlPath = url.parse(req.url);
  	//解决二次请求问题,第二次请求图标/favicon.icon
    if(urlPath.pathname=="/favicon.icon"){
        return;
    }
    if(urlPath.pathname=="/login"){
        res.write("您执行了登陆操作");
    }else if(urlPath.pathname=="/register"){
        res.write("您执行了注册操作");
    }else{ 
        res.write("您的操作有误,请核实后再输");
    }
    res.end();
}).listen(8888)//监听端口

express

概念:

是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性和丰富的 HTTP 工具

功能:

1.扩展了web所需要的基本功能
2.丰富了HTTP工具
3.可以快速搭建一个网站

初始化:

npm init

下载:

npm install --save express

路由

通过URL路径来区分不同的请求,从而找到
不同的功能模块来进行执行。

1.路由是根据url 决定了那部分去响应客户端请求。

2.在HTTP请求中,可以通过路由提取出请求的URL以及GET/POST参数。

eg:
var express = require("express");
var app = express();
app.get("/",function(req,res){
    res.send("heihei");
})

// 定义中间件,每一次请求后都会先经过中间件
app.use(function(req,res,next){
    console.log("你好");
    // 如果没有next就会卡死,不执行后面的了-
    next();
})

// 路由的使用
app.get("/index",function(req,res){
    res.send("我是index");
})

app.get("/home",function(req,res){
    res.send("我是home");
})
//只要是a开头b结尾都可以
app.get("/a*b",function(req,res){
    res.send("我是通配");
})


app.get("/post",function(req,res){
    res.send("我是get的post");
})
app.post("/post",function(req,res){
    res.send("我是post");
})


app.listen(8888);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值