nodejs-介绍

一、Node.Js介绍

  1. 作用:做后台

  2. 优势:性能:高(是php的86倍)
    方便:门槛低(JS语法),大公司在用

  3. 缺点:兼容平台少
    学习资源少,要求高

  4. 要求(环境配置):
    安装Nodejs
    官网:nodejs.org

  5. 版本介绍:
    LTS 推荐版
    V7.6.x 稳定版
    V7.7.x 非稳定版
    CURRENT 最新版

  6. 编写:任何编辑器,js文件内编写

  7. 运行:
    DOS命令行(小黑框)
    MAC终端
    git
    在当前文件夹打开命令行工具,使用< node 文件名 >启动

    node中BOM、DOM不能使用,ECMAScript可以使用
    node主要用来操作文件的读写,数据库的请求,处理前端ajax请求。
    注意:因为node完美支持ES6,所以在node环境中可以使用ES6的所有语法

二、开启服务

在node中,所有功能都被封装成模块,默认使用模块化开发
开启服务需要用到的模块:
http模块:用来开启服务
fs模块:用来操作模块
url模块:用来解析url
querystring模块:用来解析url携带的数据

http模块:
//1.引入模块
const http = require("http”);

//2.开启一个http服务,接收的回调函数中,有两个返回值,req表示请求(客户端到服务端),res表示响应(服务端到客户端)
const httpObj = http.createServer((req,res)=>{…})

//创建服务成功后,每次请求都会触发createServer的回调函数
const httpObj = http.createServer((req,res)=>{
    //http请求默认情况下,会多请求一次favicon.ico图标文件,如不需要可以过滤
    if(req.url != "/favicon.ico"){
        //可以在服务端打印信息,只要被访问就会触发
        console.log("有人访问了");
        //参数req有属性为url,表示当前服务被哪个url访问,打印访问服务的url
        console.log("访问的地址是:" + req.url);
        //如果需要向前端返回数据,而且数据需要以html的形式被解析,有两种方式:
        //    1.通过head和meta标签设置字符编码
        //res.write("<head><meta charset='utf-8'></head>");
        //    2.通过设置请求头,设置字符编码(推荐)
        res.writeHead(200,{"content-type":"text/html;charset=utf-8"})
        //通过参数res的write方法,向前端返回数据,此处打印标签进行测试
        res.write("<mark>晚上吃什么</mark>")
        //完成此次请求的响应之后,要结束本次响应,否则前端会一直处在请求状态
        res.end()
    }
})

//3.监听端口地址,成功开启服务,执行回调函数...
httpObj.listen("8001","127.0.0.1",()=>{
    console.log("server runing...");
});

fs模块:
//引入fs(文件系统)模块
const fs = require('fs’);

//调用fs模块的读取文件方法,接收三个参数:
    //参数1:指定读取文件名为请求的文件名
    //参数2:指定解析文件内容的编码格式,可省略
    //参数3:回调函数,读取文件后执行,接收两个参数
                                        //参数1:错误日志,或,null
                                        //参数2:文件内容
fs.readFile("./www/index.html","utf-8",(err,fsCont)=>{
    if(err){
        //如果不为null,表示有错误内容,响应404
        res.write("404")
    }else{
        //如果为null,表示找到文件,将文件作为数据响应
        res.write(fsCont)
    }
    res.end(); //结束本次请求
})

url模块:
//引入url模块

const urlModel = require("url")

//模拟一个url
var url = "http://www.baidu.com/data/hahaha/?a=1&b=2#01";
console.log(typeof url);
console.log(url);

//将url解析成对象
var obj = urlModel.parse(url);
var obj = urlModel.parse(url,true); //将url中的query属性解析成对象
console.log(typeof obj);
console.log(obj);

//将对象解析成url
var str = urlModel.format(obj)
console.log(typeof str);
console.log(str);

querystring模块:
//将查询字符与对象互相转换的模块
const querystring = require(“querystring”);

//模拟类似于get方式发送的信息
var str = 'name=admin%padd=123';
//根据%号,分割字符为对象
var obj = querystring.parse(str,"%");
console.log(typeof obj);
console.log(obj);

//模拟对象
var obj2 = {a:1,b:2}
console.log(obj2)
//将对象转换成类似于get方式发送的信息,用%号隔开
var str2 = querystring.stringify(obj2,"%");
console.log(typeof str2)
console.log(str2)
const http = require('http'); 
const server = http.createServer((req, res) => { 
res.writeHead(200, { 'Content-Type': 'text/html;charset=utf-8' 
}); 
res.write('hello 1902'); r
es.write('<h1>hello node</h1>'); 
res.end();
 })

url模块结合nodejs服务器

const http = require('http'); 
const url = require('url');
 const server = http.createServer((req, res) => {
	  // req.url为地址栏的地址 
	  console.log(req.url) 
	  res.writeHead(200, { 
	        'Content-type': 'text/html;charset=utf-8'
	    });
	     res.write('<h1>hello 1902</h1>');
	     res.write('<h1>hello node</h1>');
	     res.end();
	     });
         server.listen(3000); 
         console.log('your server is running at http://localhost:3000')

如果想要获取到参数
if (req.url !== ‘/favicon.ico’) {
console.log(req.url);
console.log(url.parse(req.url, true)); // url.parse(str, true)
}

url.parse(req.url, true).query获取到参数信息
url.parse(req.url, true).pathname获取到路由信息
url.parse(req.url, true).port获取到端口号
url.parse(req.url, true).protocol获取到协议信息
url.parse(req.url, true).hostname获取到域名信息

控制台学习querystring控制台输入node指令

* querystring.parse(str)

将字符串形式的参数解析成为一个对象
querystring.parse(‘course=node&class=1902’)

输出结果为
{ course: ‘node’, class: ‘1902’ }

3.2 node服务器结合querystringconst http = require(‘http’);
const url = require(‘url’);
const querystring = require(‘querystring’);

const server = http.createServer((req, res) => {

if (req.url !== ‘/favicon.ico’) {
console.log(req.url)
console.log(url.parse(req.url).query)
console.log(querystring.parse(url.parse(req.url).query)) //**********************
}

res.writeHead(200, {
‘Content-type’: ‘text/html;charset=utf-8’
});

res.write(‘

hello 1902

’);
res.write(‘

hello node

’);
res.end();
});

server.listen(3000);

console.log(‘your server is running at http://localhost:3000’)

在真实项目中其实一般不需要使用querystring,会使用url.parse(str, url)代替

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值