nodejs 简单实现动态html的方法


Posted in NodeJs onMay 12, 2018

动态替换html内容

1.实现的功能及原理

实现了将,用户表单的数据,与html相结合,将用户输入的数据,显示到html对应的位置。

原理:通过正则表达式,替换html中的模板数据 如用户名{name},可以通过拿到用户提交的name的值value,通过

replace(正则表达式,value)的方式替换掉原模板数据,并输出到客户端。

2.主要用到的方法和模块

2.1文件操作模块 var fs=require("fs");

方法:

2.1.1 异步读取文件的方法

fs.readFile(path,callback);

参数说明:

path:文件的路径(包含文件名称)

callback:文件读取完毕的回调函数

文件读取的数据,从该方法获得,会自动填充

callback:function(err,data){
 if(err){
 //读取文件错误的逻辑
 }else{
 //对数据的操作,如打印
 console.log(data);
 }
 }

2.2 数据处理模块 var querystring=require("querystring");

方法:

2.2.1 将字符串转换成对象

querystring.parse(post);

2.3 post请求主要方法

监听有post数据上传的方法:request.on('data',funcation(chunk){
 //chunk post数据碎片
 });
 监听post数据上传完毕的方法:request.on('end',function(){
 //相关逻辑
 });

3.核心代码requestHandler.js

/*
 请求处理
 * */
//加载node非阻塞线程模块
//var exec=require("child_process").exec;
//加载queryString模块和文件上传模块
var http = require("http");
var formidable = require('formidable');
var fs = require("fs");
var path = require("path");
var querystring=require("querystring");
function login(request, response) {
var post="";
//监听post发送请求
request.on('data',function (chunk) {
post += chunk;
});
//数据接收完毕
request.on('end',function(){
post=querystring.parse(post);
/*替换的数据模板字段*/
var arr=["name","password"];
function recall (data) {
dataStr = data.toString();
//遍历模板字段
for (var i = 0; i < arr.length; i++) {
//全局替换
var re=new RegExp('{'+arr[i]+'}','g');
dataStr=dataStr.replace(re,post[arr[i]]);
}
response.writeHead(200, {"Content-Type": "text/html"});
response.write(dataStr);
response.end();
}
fs.readFile("login.html",function (err,data) {
recall(data);
});
});
}
function index (request, response) {
fs.readFile("login.html",function (err,data) {
if (err) {
throw err.toString();
} else{
response.writeHead(200, {"Content-Type": "text/html"});
response.write(data);
response.end();
}
})
}
exports.login = login;
exports.index=index;

4.html模板

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
用户名:{name}<br /> 
    <!--
  {name},{password}为要替换的模板字段
    -->
密 码:{password}<br />
<form action="/login" method="post">
<input type="text" name="name" /><br />
<input type="password" name="password" /><br />
<input type="submit" value="提交"/>
</form>
</body>
</html>

以上这篇nodejs 简单实现动态html的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
Nodejs中自定义事件实例
Jun 20 NodeJs
NodeJS学习笔记之Connect中间件应用实例
Jan 27 NodeJs
nodejs通过phantomjs实现下载网页
May 04 NodeJs
进阶之初探nodeJS
Jan 24 NodeJs
使用 NodeJS+Express 开发服务端的简单介绍
Apr 07 NodeJs
Nodejs搭建wss服务器教程
May 24 NodeJs
详解nodejs模板引擎制作
Jun 14 NodeJs
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
Sep 18 NodeJs
解决nodejs的npm命令无反应的问题
May 17 NodeJs
nodejs require js文件入口,在package.json中指定默认入口main方法
Oct 10 NodeJs
NodeJS有难度的面试题(能答对几个)
Oct 09 NodeJs
Nodejs实现图片上传、压缩预览、定时删除功能
Oct 25 NodeJs
nodeJS服务器的创建和重新启动的实现方法
May 12 #NodeJs
Nodejs 和 Electron ubuntu下快速安装过程
May 04 #NodeJs
nodejs 日志模块winston的使用方法
May 02 #NodeJs
详解redis在nodejs中的应用
May 02 #NodeJs
nodejs读取并去重excel文件
Apr 22 #NodeJs
nodeJS模块简单用法示例
Apr 21 #NodeJs
NodeJS安装图文教程
Apr 19 #NodeJs
You might like
PHP5 字符串处理函数大全
2010/03/23 PHP
php数组函数序列之array_unique() - 去除数组中重复的元素值
2011/10/29 PHP
Chrome Web App开发小结
2014/09/04 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
php使用自带dom扩展进行元素匹配的原理解析
2020/05/29 PHP
jQuery LigerUI 插件介绍及使用之ligerDrag和ligerResizable示例代码打包
2011/04/06 Javascript
extjs 初始化checkboxgroup值的代码
2011/09/21 Javascript
Jquery Easyui进度条组件Progress使用详解(8)
2020/03/26 Javascript
javascript 单例模式详解及简单实例
2017/02/14 Javascript
CodeMirror js代码加亮使用总结
2017/03/25 Javascript
w3c编程挑战_初级脚本算法实战篇
2017/06/23 Javascript
vue使用drag与drop实现拖拽的示例代码
2017/09/07 Javascript
简述Angular 5 快速入门
2017/11/04 Javascript
原生JS实现的双色球功能示例
2018/02/02 Javascript
集成vue到jquery/bootstrap项目的方法
2018/02/10 jQuery
axios 处理 302 状态码的解决方法
2018/04/10 Javascript
详解Vue webapp项目通过HBulider打包原生APP
2018/06/29 Javascript
微信小程序实现商品属性联动选择
2019/02/15 Javascript
js类的继承定义与用法分析
2019/06/21 Javascript
es6函数之箭头函数用法实例详解
2020/04/25 Javascript
Django中模型Model添加JSON类型字段的方法
2015/06/17 Python
Python常见工厂函数用法示例
2018/03/21 Python
python格式化输出保留2位小数的实现方法
2019/07/02 Python
Python Django 封装分页成通用的模块详解
2019/08/21 Python
python中使用np.delete()的实例方法
2021/02/01 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
2021/03/04 Python
Whittard官方海外旗舰店:英国百年茶叶品牌
2018/02/22 全球购物
NBA德国官方网上商店:NBA Store德国
2018/04/13 全球购物
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
2014/07/21 面试题
自立自强的名人事例
2014/02/10 职场文书
商场客服专员岗位职责
2014/06/13 职场文书
2015年教师党员承诺书
2015/04/27 职场文书
安全教育培训制度
2015/08/06 职场文书
5种 JavaScript 方式实现数组扁平化
2021/10/05 Javascript
Java对文件的读写操作方法
2022/04/29 Java/Android
浅谈Node的内存泄露问题
2022/05/06 NodeJs