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 ...
随机推荐
- U-boot新手入门,烧写进mini2440
拿到一块开发板,首先就要找到它的资料,当然了,开发板的厂商或者代理商会提供资料,资料里会有你需要的. 比如我的这块mini2440,在友善之臂代理商提供的资料里面,就有我们这篇所需要的 把这个文件夹下 ...
- javascript 几个易错点记录
1.清空input标签值得时候,不能用html("")清空,要用val("")清空 2.事件如果绑定多次,触发事件后,回调函数也会执行多次,所有最好把绑定事件的 ...
- java没有配置环境变量却可以生效的问题
最近在家里的电脑上安装了eclipse,安装完成后尝试打开eclipse的时候,我内心估计是要报错的.我期待看到的是,这个eclipse需要安装jdk才能运行,并且会告诉我需要的jdk版本. 结果ec ...
- 权限和ACL访问控制 -01-权限
权限位 rwxrwrwx:左三位:定义user(owner)的权限,属主权限中三位:定义group的权限,属组权限有三位:定义other的权限,其他的权限 进程对文件的访问权限应用模型:进程的属主与文 ...
- CSS 多行省略失效 (-webkit-box-orient 失效) Second Autoprefixer control comment was ignored. Autoprefixer applies control comment to whole block, not to next rules.
webpck不能编译这个属性-webkit-box-orient: vertical https://github.com/fanyifanbumaimeng/Articles/issues/48 / ...
- js 选中文字
选中文字,文字背景是蓝色 当前点击的元素: var e = e || event; var tag = e.target || e.srcElement; 选中文字:window.getSelecti ...
- Huber loss<转发>
from https://blog.csdn.net/lanchunhui/article/details/50427055请移步原文
- MFC:OnCreate PreCreateWindow PreSubclassWindow
OnCreate PreCreateWindow PreSubclassWindow PreCreateWindow和PreSubclassWindow是虚函数,而OnCreate是一个消息响应函数. ...
- linux中的selinux到底是什么
一文彻底明白linux中的selinux到底是什么 2018年06月29日 14:17:30 yanjun821126 阅读数 58877 标签: SElinux 更多 个人分类: Linux 一 ...
- 【Vue】input textarea自动滚动到输入处
由于我这里要把接口返回的日志不断地新增到textarea里,想实现自动滚动日志的效果. 1.首先定一个textarea类型的input组件 <el-input id="textarea ...