node基础12:动态网页

1.显示动态网页

又到了激动人心的时刻,马上就可以使用node创建动态网站了,其原理为:

  • 在HTML模板中使用占位符
  • 根据请求路径,确定需要返回的页面
  • 根据请求参数来确定静态模板中占位符的值
  • 使用正则匹配将占位符匹配为真实值
  • 再res.write()到浏览器的

代码如下:

// server.js
var http = require("http");
var url = require(‘url‘);
var router = require(‘./router‘);

http.createServer(function(req, res){
    if ( req.url !== ‘/favicon.ico‘){
        pathname = url.parse(req.url).pathname.replace(/\//,‘‘);
        console.log(pathname);
        try {
            router[pathname](req, res);
        } catch(e) {
            console.log(‘error:‘+e);
            res.writeHead(200, {‘Content-Type‘: ‘text/html;charset=utf-8‘});
            res.write(e.toString());
            res.end();
        };
    }
}).listen(3000);
console.log("server running at http:127.0.0.1:3000");
/**
 * router.js
 */
var fs = require(‘fs‘);
var url = require(‘url‘);
var querystring = require(‘querystring‘);

module.exports = {
    login: function(req, res){
        var post =‘‘;
        req.on(‘data‘, function(chunk){
            post += chunk;
        });
        req.on(‘end‘, function(){
            post = querystring.parse(post);
            array = [‘username‘, ‘password‘];
            fs.readFile(‘./login.html‘, function(err, data){
                if( err){
                    console.log(err);
                    res.writeHead(200, {‘Content-Type‘: ‘text/html;charset=utf-8‘})
                    res.write(err.toString());
                    res.end();
                } else {
                    res.writeHead(200, {‘Content-Type‘: ‘text/html;charset=utf-8‘})
                    data = data.toString();
                    for(var i = 0; i < array.length; i++){
                        var reg = new RegExp("{{"+array[i]+"}}", ‘g‘);
                        console.log(reg);
                        post[array[i]] = post[array[i]] == undefined ? ‘‘:post[array[i]];
                        data = data.replace(reg, post[array[i]]);
                        console.log(post[array[i]]);
                    }
                    res.write(data);
                    res.end();
                }
            })
        })
    },
    register:function(req, res){
        fs.readFile(‘.register.html‘, function(err, data){
            if(err) {
                console.log(err);
                res.writeHead(200, {‘Content-Type‘: ‘text/html;charset=utf-8‘})
                res.write(err.toString());
                res.end();
                return;
            } else{
                res.writeHead(200, {‘Content-Type‘: ‘text/html;charset=utf-8‘});
                res.write(data);
                res.end();
            }
        })
    },
    showImage:function(req, res){
        fs.readFile(‘./test.png‘,function(err, data){
            if (err) {
                console.log(err);
                return;
            } else{
                console.log("开始读取图片");
                res.writeHead(200, {‘Content-Type‘:‘image/jpeg‘});
                res.write(data);
                res.end();//写在互调函数外面会报错的哟
            }
        })
    }

}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <img src="./showImage" >
    <h1>收到参数:username:{{username}}</h1>
    <h1>收到参数:password:{{password}}</h1>
    <form action="./login" method="POST">
        <p>
            <span>name</span>
            <input type="text" name="username">
        </p>
        <p>
            <span>password</span>
            <input type="text" name="password">
        </p>
        <p>
            <input type="submit" value="登录">
        </p>
    </form>
</body>
</html>
时间: 2024-09-30 06:03:32

node基础12:动态网页的相关文章

JSP技术基础(动态网页基础)

JSP不能直接运行,需要翻译. Jsp执行过程 翻译阶段 Jsp被web容器中的jsp引擎转换为java源码 .class 编译阶段 源码被翻译为.class文件,字节码文件. 执行阶段 部署服务器的过程其实就是编译的过程,web获取客户端的请求后,web开始执行字节码文件. 如果内容被更改,需要重新部署 系统里面有原来的.class文件,就会执行原来的文件,不会执行这个. ? Jsp页面的组成: 静态内容:html静态文本 指令 : <%@ 开始 %> 结束 表达式 :<%=java表

使用JSP/Server技术开发新闻发布系统第一章动态网页开发基础

      一:为什么需要动态网页    由于静态网页的内容是固定的,不能提供个性化和定制化得服务,使用动态网页可真正地与用户实现互动. 二:什么是动态网页  ①:动态网页是指在服务器端运行的,使用程序语言设计的交互网页,她们会根据某种条件的变化返回不同的网页内容.  ②动态网页需要使用服务器脚本语言. 三:动态网页的优势: ①        交互性:即网页会根据用户的要求和选择而动态改变和显示内容. ②        自动更新:即无時须改变页面代码,便会自动生成新的页面内容,可以大大节省工作量

《The Django Book》实战--第二章--动态网页基础

这章演示了一些最基本的Django开发动态网页的实例,由于版本不一样,我用的是Django 1.,6.3,有些地方按书上的做是不行的,所以又改了一些,写出来让大家参考. 这是一个用python写的一个显示当前时间的网页. 1.开始一个项目. 在命令行中(指定要保存项目代码的盘或文件夹下)输入 python ...\django-admin.py startproject djangobook  (虽然在环境变量Path中加入了django-admin.py的地址,但是在前面还是要加上路径名,不知

第一章---动态网页开发基础

动态网页开发基础 什么是动态网页? 误区: 初学者一般认为动态网页,就是会动的网页,实际上不是这样的. 动态网页: 是指在服务器端进行的,使用程序语言设计的交互式网页,它们会 根据某种条件的变化,返回不同的网页内容. 动态网页的优势: 1.交互性:即网页会根据用户的要求和选择而动态改变和显示内容 2.自动更新:即无须改变页面代码,便会自动生成新的页面内容,可以节省工作量 3.随机性:即当不同的时间,不同的人访问同一网址时会产生不同的页面效果 为什么学习B/S架构技术? 在学习B/S架构前,先了解

第三章 动态网页基础

第三章   动态网页基础 一.概述 使用HTML开发静态网页,静态网页内容时固定的. 1.什么是动态网页 动态网页是指在服务器端运行的使用程序语言设计的交互式网页,它们会根据某种条件的变化,返回不同的网页内容. 1.    动态网页的优势 1.       交互性 网页会根据用户的要求和选择而动态改变和显示内容. 2.       自动更新 无需改变页面代码,便会自动生成新的页面内容,可以大大节省工作量. 3.       随机性 当不同的时间,不同的人访问同一网址时会产生不同的页面效果. 3.

第一章动态网页开发基础

第一章:动态网页开发基础  动态网页:是指在服务器端运行的,使用程序语言设计的交互式网页,它们会根据某种条件的变化,返回不同的网页内容 动态网页需要使用服务器端的脚本语言,例如:JSP技术就是使用Java+HTML 动态网页的优势: 1:交互性:       网页会根据用户的要求和选择而动态改变和显示内容 2:自动更新:       无须改变页面代码,便会自动生成新的页面内容,可以大大节省工作量 3:随机性:     当不同的时间.不同的人访问同一网址时会产生不同的页面效果      例如:普通

使用JSP/Servalet技术开发新闻发布系统------动态网页开发基础

什么是动态网页? 动态网页是指在服务器端运行的程序或者网页,它们会随不同客户.不同时间,返回不同的网页. 动态网页的特点? (1).交互性:即网页会根据用户的要求和选择而动态改变和响应.采用动态网页技术的网站可以实现与用户的交互功能. (2).自动更新:无需手动操作,便会自动生成新的页面,可以节省工作量. (3).随机性:即当不同的时间.不同的人访问同一网址时会产生不同的页面效果. 为什么需要动态网页? 静态网页不能真正与用户实现互动.静态网页的内容是固定的,当修改了网页中的元素的时候,都需要重

使用爬虫登录动态网页(一基础)

1.之前在网页中URl链接采用Urllib/Urllib2,但是现在加强版requests模块进行网页URl提取,requests库模拟登录或者登录动态网页 URL理解:网页抓取过程浏览器向服务器请求的过程:1.访问资源命名机制2.存放资源主机3.资源自身的路径 对requests模块的入门:http://blog.csdn.net/iloveyin/article/details/21444613 对于get参数request.get(url,data=XXX,**.kwargs) impor

动态网页开发基础

什么是动态网页? 误区: 初学者一般认为动态网页,就是会动的网页,实际上不是这样的. 动态网页: 是指在服务器端进行的,使用程序语言设计的交互式网页,它们会 根据某种条件的变化,返回不同的网页内容. 动态网页的优势: 1.交互性:即网页会根据用户的要求和选择而动态改变和显示内容 2.自动更新:即无须改变页面代码,便会自动生成新的页面内容,可以节省工作量 3.随机性:即当不同的时间,不同的人访问同一网址时会产生不同的页面效果 为什么学习B/S架构技术? 在学习B/S架构前,先了解C/S(Clien