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 ...
随机推荐
- wannacry分析--20199319
病毒概况 WannaCry病毒利用前阵子泄漏的方程式工具包中的"永恒之蓝"漏洞工具,进行网络端口扫描攻击,目标机器被成功攻陷后会从攻击机下载WannaCry病毒进行感染,并作为攻击 ...
- 一次NaN引发的npe
# 先上代码 import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; public class QQ { p ...
- Python time、datetime、os、random、sys、hashlib、json、shutil、logging、paramiko、subprocess、ConfigParser、xml、shelve模块的使用
文章目录: 1. time & datetime模块 2. os模块 3. random模块 4. sys模块 5. hashlib模块 6. json模块 7. shutil模块 8. lo ...
- 执行dlsym()函数出现: undefined symbol
执行dlsym()函数出现: undefined symbol 执行dlsym()函数出现: undefined symbol 当这个问题出现的时候,可以检查产生so文件的cpp文件,看看是否已经用 ...
- Java多线程1:使用多线程的几种方式以及对比
前言 Java多线程的使用有三种方法:继承Thread类.实现Runnable接口和使用Callable和Future创建线程,本文将对这三种方法一一进行介绍. 1.继承Thread类 实现方式很简单 ...
- vue 设置当前页背景色
beforeRouteEnter(to, from, next) { // 添加背景色 document.querySelector('body').setAttribute('style', 'ba ...
- 【Linux学习一】命令行CLI、BASH的基本操作
●操作系统的基本结构 操作系统的基本结构通过Kernel(内核)和Shell(壳)构成.常见的Shell分为GUI和CLI GUI 图形方面的shell ------〉windows .mac osC ...
- Android Studio 中出现APK error
可能有很多人在用Android Studio编写程序时,时不时的会出现一个APK error的错误,反正我自从开始用Android Studio后,这个错误真的是时不时的蹦跶出来 最开始的时候,我是去 ...
- 3、Grid、GridSplitter 网格分离器、SharedSizeGroup 共享尺寸组
Grid——网格布局,是WPF中最强大的布局容器,可以实现任何其他容器的布局.一个网格中只展示一个元素,若要展示多元素,可用容器 布局舍入:网格的边界有时会模糊,如三等分100宽度无法被整除.推荐设定 ...
- the nearest point/vertex point of linestring
引用https://github.com/Toblerity/Shapely/issues/190 snorfalorpagus commented on 18 Oct 2014 The point ...