Nodejs学习笔记(一)

Nodejs学习笔记(一):

本博文是阅读吴海星译的《Nodejs实战》一书的学习笔记和总结:

  • Markdown和扩展Markdown简洁的语法
  • 代码块高亮
  • 图片链接和图片上传
  • LaTex数学公式
  • UML序列图和流程图
  • 离线写博客
  • 导入导出Markdown文件
  • 丰富的快捷键

一、代码的目录结构:

在本地创建项目liaotianshi

二、安装依赖项mime和socket.io

npm install命令安装

这里写图片描述

然后执行npm init 命令生成package.json文件

这里写图片描述

三、server.js代码如下:

var http = require('http');
var fs = require('fs');
var path = require('path'); //内建的path模块提供了与文件系统路径相关的功能
var mime = require('mime'); //附加的mime模块是有根据文件扩展名得出MIME类型的能力
var cache = {};  //cache用来缓存文件内容的对象

function send404(res){//请求文件不存在是发送404错误
    res.writeHead(404,{'Content-Type':'text/plain'});
    res.write('Error 404: resource not found.');
    res.end();
}

function sendFile(res,filePath,fileContents){//辅助函数提供文件数据服务
    res.writeHead(
        200,
        {"Content-Type":mime.lookup{path.basename{filePath}}}
    );
    res.end{fileContents};
}

function serverStatic(res,cache,absPath){
    if(cache[absPath]){
        sendFile(res,absPath,cache[absPath]);       
    }
    else{
        fs.exists(absPath,function(exists){
            if(exists){
                fs.readFile(absPath,function(err,data){
                    if(err){
                        send404(res);
                    }else{
                        cache[absPath] = data;
                        sendFile(res,absPath,data);
                    }
                });
            }else{
                send404(res);
            }
        });
    }
}

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

    if(req.url == '/'){
        filePath = 'public/index.html';
    }else{
        filePath = 'public' + req.url;
    }

    var absPath = './' + filePath;
    serverStatic(res,cache,absPath);
});

server.listen(3000,function(){
    console.log("Server listening on port 3000");
} 

public目录下新建index.html文件。代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>chat</title>
    <link rel="stylesheet" href="/stylesheets/style.css">
</head>
<body>
    <div class="content">
        <div class="room"></div>
        <div class="messages"></div>

        <form id="send-form">
            <input type="text" id="send-message">
            <input type="submit" value='send' id="send-button">
            <div id="help">
                Chat commands:
                <ul>
                    <li>Change nickname:<code>/nick[username]</code></li>
                    <li>Join/create room:<code>/join[room name]</code></li>
                </ul>
            </div>
        </form>
    </div>
    <script src='/socket.io/socket.io.js' type='text/javascript'></script>
    <script src='/javascripts/jquery.min.js' type="text/javascript"></script>
    <script src='/javascripts/chat.js' type="text/javascript"></script>
    <script src='/javascripts/chat_ui.js' type="text/javascript"></script>
</body>
</html>

style.css文件代码如下:

body{
    padding: :50px;
    font:14px "Lucida Grande",Helvetica,Arial,sans-serif;
}

a{
    color:#00B7FF;
}

#content{
    width: 800px;
    margin-left: auto;
    margin-right: auto;
}

#room{
    background-color: #ddd;
    margin-bottom: lem;
}

#message{
    width: 690px;
    height: 300px;
    overflow: auto;
    background-color: #eee;
    margin-bottom:1em;
    margin-right:10px;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值