Nodejs学习笔记(一)

Nodejs学习笔记(一):

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

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

一、代码的目录结构:

在本地创建项目liaotianshi

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

Nodejs学习笔记(一)_第1张图片

这里写图片描述

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

Nodejs学习笔记(一)_第2张图片

三、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文件。代码如下:


<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>chattitle>
    <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; }

你可能感兴趣的:(Nodejs学习笔记(一))