nodejs之静态文件托管、 路 由、EJS 模板引擎、GET、POST
1、静态文件托管
静态文件托管:是指对于一个js方法进行封装,提高代码可读性
//fs模块
var fs=require('fs');
//path模块
var path=require('path'); /*nodejs自带的模块*/
//url模块
var url=require('url'); //获取文件类型的方法 私有
function getMime(extname,callback){ /*获取后缀名的方法*/ fs.readFile('./mime.json',function(err,data){ if(err){
console.log('mime.json文件不存在');
return false;
}
//console.log(data.toString()); var Mimes=JSON.parse(data.toString()); var result= Mimes[extname] || 'text/html'; callback(result) }) } exports.statics=function(req,res,staticpath){ var pathname=url.parse(req.url).pathname; /*获取url的值*/ if(pathname=='/'){
pathname='/index.html'; /*默认加载的首页*/
}
//获取文件的后缀名
var extname=path.extname(pathname); if(pathname!='/favicon.ico'){ /*过滤请求favicon.ico*/
//console.log(pathname);
//文件操作获取 static下面的index.html fs.readFile(staticpath+'/'+pathname,function(err,data){ if(err){ /*么有这个文件*/ console.log(''); fs.readFile(staticpath+'/404.html',function(error,data404){
if(error){
console.log(error);
}
res.writeHead(,{"Content-Type":"text/html;charset='utf-8'"});
res.write(data404);
res.end(); /*结束响应*/
}) }else{ /*返回这个文件*/ getMime(extname,function(mime){
res.writeHead(,{"Content-Type":""+mime+";charset='utf-8'"});
res.write(data);
res.end(); /*结束响应*/
}); }
}) } }
2、路由
路由:是后台管理页面的跳转
var http = require('http');
var url = require('url'); http.createServer(function (req,res) {
var pathname = url.parse(req.url).pathname;
if(pathname=='/login'){
res.end('login');
}else if(pathname=='/register'){
res.end('register');
}else if(pathname=='/order'){
res.end('order');
}else {
res.end('index');
}
}).listen('');
3、EJS 模块引擎 1、安装ejs
npm install ejs
、引入ejs模块
var ejs = require('ejs');
、调用ejs.renderFile,
if(pathname=='/login'){
var data='我是后台数据';
var list=['','',''];
ejs.renderFile('EJS/views/login.ejs', //跳转ejs渲染界面
{msg:data,list:list}, //后台传入数据到前端ejs界面
function (err,data) {
if(err){
console.log(err);
return false;
}
console.log("hha");
res.end(data);
})
}
、ejs前端界面获取后台数据
<h2><%=msg%></h2>
<ul>
<%
for(var i = ;i<list.length;i++){
%>
<li><%=list[i]%></li>
<%
}
%>
</ul> 5、EJS 常用标签
1、<% %>流程控制标签
2、<%= %>输出标签(原文输出 HTML 标签)
3、<%- %>输出标签(HTML 会被浏览器解析)
具体的ejs操作,请查阅:https://www.npmjs.com/package/ejs
4、后台获取get,post请求数据
1、获取请求方式
var method=req.method.toLowerCase();
、get请求,拿去其数据
var params =url.parse(req.url,true).query;
console.log(params);
、post请求,拿取其数据,通过事件触发机制
var postStr = "";
req.on('data',function (chunk) {//监听post请求,获取数据
postStr += chunk;
})
req.on('end',function (err,chunk) { //一块块读取到数据后,将数据存储起来
fs.appendFile('login.txt',postStr+'\n',function (err) {//将登陆信息写入文件,可以改成mysql,存入数据库
if(err){
console.log(err);
return ;
}
console.log("写入文件成功!");
})
res.end("<script>alert('登录成功'); history.back()</script>");//返回登陆成功,并跳转到登陆界面
res.end('dologin--post->'+postStr);
}
nodejs之静态文件托管、 路 由、EJS 模板引擎、GET、POST的更多相关文章
- node--静态文件托管,路由,模板引擎
1.路由 路由是由一个URI和一个特定的HTTP方法(GET/POST)组成的 涉及到应用如何响应客户端对某个网站节点的访问 2.ejs 3.get/post 1)get获取数据 通过Url类中的qu ...
- Node.js学习笔记(七) --- Node.js的静态文件托管、路 由、EJS 模板引擎、GET 、POST
1 . Nodejs 静态文件托管静态 web 服务器封装 2 . 路由 官方解释: 路由(Routing)是由一个 URI(或者叫路径)和一个特定的 HTTP 方法(GET.POST 等)组成的, ...
- 二十、Node.js- WEB 服务器 (三)静态文件托管、 路 由
1.Nodejs 静态文件托管 上一讲的静态 web 服务器封装 项目结构: Web服务器封装成的模块:router.js代码: var http=require('http'); var fs=re ...
- node.js 设置静态文件托管
1.在app.js文件中设置静态文件托管 /*应用程序入口文件*/ /*加载express模块*/ var express = require('express'); /*加载模板处理模块*/ var ...
- 前端笔记之NodeJS(三)Express&ejs模板引擎&请求识别
一.Express框架 1.1基本使用 创建http服务器特别麻烦,express框架解决了这个的问题. Express在node界的地位,就相当于jQuery在DOM界的地位.jQuery的核心就是 ...
- express搭建web服务器、路由、get、post请求、multer上传文件、EJS模板引擎的使用
express官网 postman工具下载地址 multer的npm文档地址 express模板引擎怎么使用 地址:http://www.expressjs.com.cn/guide/using- ...
- nodejs-5.1 ejs模板引擎
ejs官方文档:https://ejs.bootcss.com/ 1.什么是 EJS? "E" 代表 "effective",即[高效]. EJS 是一套简单的 ...
- node+ejs模板引擎的应用
前言: 最近在开发一个关于后台管理系统的基础开发平台,解释一下就是不管什么管理系统都有一些相同的功能,但是又有一些细节不一样,这个基础平台就是实现对于基础功能可以进行快速开发,主要有自定义的生成功能代 ...
- Express框架中如何引用ejs模板引擎
1.如何在项目中安装ejs模板引擎 在NodeJS指南中利用利用以下命令建立网站的基本结构: express -t ejs microblog 运行这个命令后继续运行 cd microblog &am ...
随机推荐
- php不重新编译,添加模块
本文已安装mysqli模块为例 一:检查 1:首先保证php-fpm能正常启动 2:查看当前已安装的php模块是否有mysqli [root@oldboyedu ~]# /application/ph ...
- deep_learning_Function_numpy_newaxis参数
np.newaxis的作用就是在这一位置增加一个一维,这一位置指的是np.newaxis所在的位置,比较抽象,需要配合例子理解. x1 = np.array([1, 2, 3, 4, 5]) # th ...
- 微信公众号开发者中心配置 Token验证失败 终极解决方案
请您检查这几项: 1. 在您的URL(服务器地址)页面里,直接Get获取echostr参数打印到页面上. 在火狐浏览器里Firebug里面看到echostr前面多了几个乱码. 把您开发者设置的URL页 ...
- java8学习之Stream深度解析与源码实践
继续对流进行学习,首先先说明一下流的特点: 1.Collection提供了新的stream()方法. 2.流不存储,通过管道的方式获取值. 3.本质是函数式的,对流的操作会生成一个结果,不过并不会修改 ...
- mvn高级构建
指定pom文件,打包指定的module,并且自动打包这个模块所依赖的其他模块. mvn clean install -f vmc-business-parent/pom.xml -pl vmc-sch ...
- WTL项目各种error的解决方法
error RC1015: cannot open include file 'atlres.h' 解决办法: 向“VC项目属性->资源->附加包含目录” 添加WTL的Include目录( ...
- HGOI 20190822 OCWA提高组模拟赛二
Problem A 快递 根节点为$1$ , 含有$n$个节点的树,每一条边都有一段开放的时间$[s_i,e_i]$,和经过需要的时间. 有$q$组询问,每一次在时刻$t_i$出发从根节点出发走到第$ ...
- .net core 在服务器端获取api传递的参数
在 ActionFilterAttribute 的OnActionExecutionAsync 中使用如下代码从流中读取用户参数 //从文件流中读取传递测参数 using (var ms = new ...
- [AGC034D]Manhattan Max Matching:费用流
前置姿势 \(k\)维空间内两点曼哈顿距离中绝对值的处理 戳这里:[CF1093G]Multidimensional Queries 多路增广的费用流 据说这个东西叫做ZKW费用流? 流程其实很简单, ...
- Python列表解析和字典解析
python笔记_列表解析 相比于for循环,列表解析的语法是由底层c语言实现的,它和使用for循环遍历pyobject对象相比,性能会有很大的提升. 无条件子句的列表解析式 In [2]: [2*i ...