zoukankan      html  css  js  c++  java
  • Node.js初学第一天

    Node.Js三大特性:单线程、非阻塞I/O、事件驱动

    一、创建第一个HelloWorld

    1、正常下载安装Node.js包;

    2、cmd命令,进入node.js安装程序所在目录:cd:C:Program Files odejs;

    3、创建js文件01_helloworld.js,并书写代码:

    var http=require("http");//引入http包
    http.createServer(function(req,res){//创建服务
    res.writeHead(200,{"ContentType":"text/html;charset:utf-8"});//写响应头,200表示请求成功
    res.end("helloworld");
    }).listen("4505","127.0.0.1")//监听服务

    4、在cmd中输入命令node D:NodeJS odedemo1_helloworld.js

    5、在浏览器中输入地址http://127.0.0.1:4505/

    6、"helloworld"会呈现

    注意:在js文件01_helloworld.js书写代码的时候,var前面不能有空格,否则会出现错误,并且会很难查出原因;

    二、创建静态路由

    1、在node安装程序下创建文件夹及静态页;

    2、示例代码如下:

    //require表示引包,引包就是引用自己的一个特殊功能

    var http=require("http");
    var fs=require("fs");
    http.createServer(function(req,res){
    if(req.url=="/index")
    {
    fs.readFile("./test/Web/index.html",function(err,data){
    if(err)
    {
    console.log(err);
    }

    //req表示请求,request; res表示响应,response
    //设置HTTP头部,状态码是200,文件类型是html,字符集是utf8

    res.writeHead(200,{"ContentType":"text/html;charset=utf-8"});
    res.end(data);
    })
    }else if(req.url=="/map")
    {
    fs.readFile("./test/Web/map.html",function(err,data){
    if(err)
    {
    console.log(err);
    }
    res.writeHead(200,{"ContentType":"text/html;charset=utf-8"});
    res.end(data);
    })
    }else{
    res.writeHead(200,{"ContentType":"text/html;charset=utf-8"});
    res.end("没有此页面");
    }
    }).listen("4050","127.0.0.1");//运行服务器,监听4050端口(端口号可以任改)

    三、URL类

    1、示例代码:

    var http = require("http");
    var url = require("url");

    var server = http.createServer(function(req,res){

    //url.parse()可以将一个完整的URL地址,分为很多部分:
    //host、port、pathname、path、query
    var pathname = url.parse(req.url).pathname;
    //url.parse()如果第二个参数是true,那么就可以将所有的查询变为对象
    //就可以直接打点得到这个参数
    var query = url.parse(req.url,true).query;
    //直接打点得到这个参数
    var age = query.age;
    console.log("pathname:" + pathname);
    console.log("query:" + query);
    console.log("age:" + age);
    res.end();
    });

    server.listen(3000,"127.0.0.1");

    四、文件夹操作

    1、创建文件夹:

    var http=require("http");
    var fs=require("fs");
    http.createServer(function(req,res){
    if(req.url=="/favicon.ico")
    {
    return;
    }
    fs.mkdir("MM");//创建MM文件夹
    }).listen("4050","127.0.0.1");

    同理还有其它的函数:

    //stat检测状态
    fs.stat("./album/bbb",function(err,data){
    //检测这个路径,是不是一个文件夹
    console.log(data.isDirectory());
    });

    //读取文件夹内所有内容

    fs.readdir("./test",function(err,files){});

    五、path类:

    1、引包:

    var path=require("path");

    2、函数:

    var pathname=url.parse(req.url).pathname;

    var extname=path.extname(pathname);//获取扩展名

    3、示例代码(完成简单路由的功能示例):

    var http = require("http");
    var url = require("url");
    var fs = require("fs");
    var path = require("path");
    http.createServer(function(req,res){
    //得到用户的路径
    var pathname = url.parse(req.url).pathname;
    //默认首页
    if(pathname == "/"){
    pathname = "index.html";
    }
    //拓展名
    var extname = path.extname(pathname);
    //真的读取这个文件
    fs.readFile("./static/" + pathname,function(err,data){
    if(err){
    //如果此文件不存在,就应该用404返回
    fs.readFile("./static/404.html",function(err,data){
    res.writeHead(404,{"Content-type":"text/html;charset=UTF8"});
    res.end(data);
    });
    return;
    };
    //MIME类型,就是
    //网页文件: text/html
    //jpg文件 : image/jpg
    var mime = getMime(extname);
    res.writeHead(200,{"Content-type":mime});
    res.end(data);
    });
    }).listen(3000,"127.0.0.1");
    function getMime(extname){
    switch(extname){
    case ".html" :
    return "text/html";
    break;
    case ".jpg" :
    return "image/jpg";
    break;
    case ".css":
    return "text/css";
    break;
    }
    }

    六、总结:

    Node.Js三大特性:单线程、非阻塞I/O、事件驱动

  • 相关阅读:
    03-字典
    02-列表
    01-字符串操作
    Django中的跨域问题
    Codeforces Round #617 (Div. 3) A
    Codeforces Round #717 (Div. 2) A
    如何在Vuespa中使用less
    excle导出
    ajaxFileUpload上传文件
    图片插入word
  • 原文地址:https://www.cnblogs.com/czqbk/p/5726712.html
Copyright © 2011-2022 走看看