nodejs生成动态网页

tuwen.js

var optfile = require('../module/optfile.js');
var imgFile=require('../module/image.js');
var url=require('url');
var querystring = require('querystring');//post导入
module.exports={
    buny:function(req,res){
        
        //post方式接收参数
        var post='';//定义一个post变量,用于暂存请求体信息
        req.on('data',function(chunk){//通过req的data时间监听函数,每当接收到请求体数据,就会存储到post变量中
            post += chunk;
        });
        req.on('end',function(){//在end事件触发后,通过querystring.parse将post解析为真正的post格式,然后向客户端返回
            post = querystring.parse(post);
            console.log('login:'+post['login']+'\n');
            console.log('pass:'+post['pass']+'\n');
            // res.write('收到参数:'+post['login']+'\n');
            // res.end();
            //接收到的参数返回到客户端
            //闭包,回调这个函数,客户端打印程序
            arr=['login','pass'];
            function recall(data){
                dataStr=data.toString();
                for(var i=0;i<arr.length;i++){
                    re=new RegExp("{"+arr[i]+"}",'g');
                    dataStr = dataStr.replace(re,post[arr[i]]);
                }
                // res.writeHead(200,{'Content-Type':'text/html;charset=utf-8'});
                res.write(dataStr);
                res.end("");//http的协议尾
            }
            optfile.readfile('../view/buny.html',recall)
        });
        

    },
    showImg:function (req,res){
        res.writeHead(200,{'Content-Type':'image/jpeg'});
        imgFile.readImg('../imgs/vue.png',res);
    }
}

 buny.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
喜欢你
<img src="/showImg"/>
收到参数:login是{login}<br/>
密码是:{pass}
<form action="./buny" method="post">
    <table>
        <tr>
            <td>用户名:</td>
            <td><input type="text" name="login"></td>
        </tr>
        <tr>
            <td>密码:</td>
            <td><input type="password" name="pass"></td>
        </tr>

        <tr>
            <td align="center"><input type="submit" value="登录"></td>
        </tr>
    </table>

</form>
</body>
</html>

routerhtml.js

var http=require('http');
var url=require('url');
var router=require('../module/tuwen.js');
http.createServer(function(request,response){

    if(request.url !== '/favicon.ico'){//清除第二次访问
        console.log('访问');
        var pathname=url.parse(request.url).pathname;
        pathname=pathname.replace(/\//,'');//替换前面/
        console.log(pathname)
        router[pathname](request,response);
        // response.end("");//不写会没有协议尾部,但是写了会访问俩次
    }
}).listen(8007);
console.log('Server running at http://127.0.0.1:8007/')

生成网站的 sitemap.xml 文件可以帮助搜索引擎更好地抓取和索引您的网站内容,从而提高您的 SEO 优化效果。下面是使用 Node.js 动态生成网站 sitemap.xml 的方法: 1. 安装依赖 首先,您需要安装 `xmlbuilder` 模块,它是一个轻量级的 XML 创建器,可以用于动态生成 XML 文件。 ``` npm install xmlbuilder --save ``` 2. 生成 sitemap.xml 文件 在您的 Node.js 项目中创建一个生成 sitemap.xml 文件的脚本文件,并编写以下代码: ```javascript const fs = require('fs'); const xmlbuilder = require('xmlbuilder'); const baseUrl = 'https://www.example.com'; // 网站页面的 URL 列表 const urls = [ '/', '/about', '/services', '/blog', '/contact' ]; // 创建 sitemap.xml 文件 const root = xmlbuilder.create('urlset', { version: '1.0', encoding: 'UTF-8' }); root.att('xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9'); urls.forEach(url => { const loc = baseUrl + url; const urlNode = root.ele('url'); urlNode.ele('loc', {}, loc); }); const xml = root.end({ pretty: true }); fs.writeFileSync('sitemap.xml', xml, 'utf8'); console.log('Sitemap generated successfully!'); ``` 在上面的代码中,我们首先定义了一个 `baseUrl` 变量,用于存储网站的基础 URL,然后定义了一个 `urls` 数组,用于存储网站页面的 URL 列表。 接着,我们使用 `xmlbuilder` 模块创建了一个 XML 文件的根节点 `urlset`,并设置了其命名空间。然后,我们遍历 `urls` 数组,为每个页面创建一个 `url` 节点,并添加一个 `loc` 子节点,用于存储页面的 URL。 最后,我们使用 `fs` 模块将生成的 XML 内容写入到 `sitemap.xml` 文件中,并在控制台输出成功信息。 3. 集成到网站 生成 sitemap.xml 文件后,您需要将其添加到您的网站根目录下,并在网站的 robots.txt 文件中添加以下代码: ``` Sitemap: https://www.example.com/sitemap.xml ``` 这将告诉搜索引擎您网站的 sitemap.xml 文件的位置,以便更好地抓取和索引您的网站内容。 通过以上几步,您就可以使用 Node.js 动态生成网站 sitemap.xml 文件,并优化您的 SEO 效果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值