首先创建一个index.js,在里面引入相关的中间件,如果没有这些中间件,则需要在nodejs里进入index.js所在的文件夹安装这些模块,安装命令:npm install express express-static cookie cookie-session body-parser multer mysql,并且创建好www文件夹和views文件夹,www文件夹放了所有要读取的css.js.img等,views文件夹下放了所有要渲染的ejs模板

const express = require("express");//框架
const expressStatic = require("express-static");//指定路径读取静态文件
const cookie = require("cookie");//解析cookie数据
const cookieSession = require('cookie-session');//基于cookie的session数据,保存在request.session
const bodyParser = require("body-parser");//解析post数据,保存在request.body中
const consolite = require("consolite");//模板适配器
const multer = require("multer");//文件上传
const mysql = require("mysql");//数据库
const db = mysql.createPool({//建立数据库连接池
  host:'localhost',//主机地址
  name:'root',//数据库账号
  password:'q791469353'//数据库密码
  database:'officialwebsite'//数据库名称
});
//第一步,搭建服务器并监听端口
var app = express();
app.listen(8080);//这里监听端口8080 //第二步,指定路径读取静态文件
app.use(expressStatic('./www'));//这里指定在./www下读取所有静态文件 //第三步 ,初始化session
app.use(cookieParser('asdhkj'));//将cookie数据解析
var array = [];//随机生成数组用于加密session
for(var i=0;i<1000;i++){
array.push(Math.random());
}
app.user(cookieSession({
name:'session名称',
keys:array,//keys表示session加密的字符
maxAge:5*60*1000//设置session的有效时间,以毫秒为单位
})); //第四步,解析post传过来的数据,保存在request.body中,get方法express框架将数据保存在了request.query中
app.use(bodyParser.urlencoded({extend:false}));
//第五步,文件上传数据解析
app.use(multer({dest:“保存文件上传的路径”}).any());//any()方法表示接收上传任何类型的文件
//第六步,适配模板
app.set('"views engine","text/html");//适配模板引擎后将其识别为html文件
app.set("views","./views");//指定模板在views文件夹下面,该文件夹下面以ejs为结尾的模板,其中语法:<% js代码 %>表示执行js代码但不输出, <%= js代码 %>表示执行js代码并输出 ,<%- js代码%>表示转义输出js代码 ,<% include '其他模板路径'%>表示在该模板中的该段引入模板的代码
app.engine("html",consolite.ejs);//使用ejs模板引擎= //以上是应用搭建的部署,接下来对请求做处理
app.get("/",(request,response)=>{//表示访问localhost:8080/时做出的响应,request表示浏览传输过来的数据,response表示服务器响应给浏览器的数据
  response.render("index.ejs",{});//表示渲染index,ejs模板,并传一个空的对象给该模板
});
app.get("/sign_in",(request,response)=>{
  var name = request.query.name;//获取get方法传过来的数据
  db.query(`SELECT * FROM xxx表 WHERE 字段 = ${name}`,(err,data)=>{//对数据库进行查询,参数为SQL语句,${变量}表示在该字符串中使用该变量,此时字符串应为反双引号:``
    //如果出现错误,则err不是空的对象,否则为空对象,并且查找到的数据在data中
    if(err) throw err;
    else{
      res.render("sign-in.ejs",{data:data});//给模板传入找到的data数据
    }
  });
});
app.post('/sign-up',(request,response)=>{
  var post = request.body;//获取post传过来的数据
  if(post.name == xx){
    response.send('xxx');//代码执行成功后,给前端调用ajax方法的回调函数传递参数
}; app.get('/test',(request,response,next)=>{//以test为例,用next()方法渲染test.ejs模板
  if(request.query.name == 'xxxx'){
  next();//执行下一个相同请求的函数
}
app.get('/test',(request,response)=>{
  render('/test.ejs',{});
});
}); });

Nodejs之使用express框架搭建WEB应用的更多相关文章

  1. Node.js基于Express框架搭建一个简单的注册登录Web功能

    这个小应用使用到了node.js  bootstrap  express  以及数据库的操作 :使用mongoose对象模型来操作 mongodb 如果没了解过的可以先去基本了解一下相关概念~ 首先注 ...

  2. SSM框架搭建web服务器实现登录功能(Spring+SpringMVC+Mybatis)

    初学java EE,虽然知道使用框架会使开发更加便捷高效,但是对于初学者来说,感到使用框架比较迷惑,尤其是各种jar包的引用.各种框架的配置.注解的使用等等. 最好的学习方法就是实践,于是下载了一个现 ...

  3. express快速搭建web server

    安装express4.x npm install -g express npm install -g express-generator //express命令行工具在4.x分离出来了 express ...

  4. 简单的使用Nginx框架搭建Web服务器~

    系统环境Debian 8,内核版本 一.首先来安装nginx服务程序:  1.安装nginx服务需要的相关程序(记得在root权限下操作下面的指令) aptitude install libpcre3 ...

  5. 关于框架搭建-web

    最近一直在学习前端相关的东西,在学了一堆基础可以以及动手在某个前端框架上写了一些东西之后,我想尝试着开始自己搭建一个框架.不知道时间需要多久,但会持续更新.小菜鸟的成长记录. ------------ ...

  6. (六)、nodejs中的express框架获取http参数

    express获取参数方法: 一.通过req.params app.get('/user/:id', function(req, res){ res.send('user ' + req.params ...

  7. nodejs之使用express框架连接mongodb数据库

    var express = require('express');var router = express.Router();var app = express();var MongoClient = ...

  8. nodejs之使用express框架连接mysql数据库,返回jsonapi数据

    var express = require('express');var router = express.Router();var url = require('url');var mysql = ...

  9. express框架搭建服务端

    1.管理员权限全局安装express npm i -g express-generator@4 2.创建express项目 express -e projectName 3.进入项目并安装 cd pr ...

随机推荐

  1. CNN对位移、尺度和旋转不变性的讨论

    CNN得益于全局共享权值和pool操作,具有平移不变性. 对于尺度不变性,是没有或者说具有一定的不变性(尺度变化不大),实验中小目标的检测是难点,需要采用FPN或者其他的方式单独处理. 对于旋转不变性 ...

  2. MaxCompute如何对SQL查询结果实现分页获取

    由于MaxCompute SQL本身不提供类似数据库的select * from table limit x offset y的分页查询逻辑.但是有很多用户希望在一定场景下能够使用获取类似数据库分页的 ...

  3. HZOJ 巨神兵

    60pts: 每个DAG的拓扑序是唯一的,所以考虑将DAG分层.f[i][j]记录当前选择的节点状态是i,最后一层的节点状态为j(dep取最大). 初始状态:$f[i][i]=1;i\in [1,1& ...

  4. vue页面内监听路由变化

    beforeRouteEnter (to, from, next) { // 在渲染该组件的对应路由被 confirm 前调用 // 不!能!获取组件实例 `this` // 因为当钩子执行前,组件实 ...

  5. Spring data jpa hibernate:查询异常java.sql.SQLException: Column '列名' not found

    使用spring boot,jap,hibernate不小心的错误: java.sql.SQLException: Column '列名' not found: 这句话的意思是:找不到此列 为什么会出 ...

  6. header发送Cookie

    Cookie传达给客户端的原理 平时执行setcookie('key1', 'value1');这样的代码时,浏览器就会收到cookie并保存,但我们并不能从echo出去的内容中看到cookie内容 ...

  7. 从零学React Native之02状态机

    本篇文章首发于简书 欢迎关注 之前我们介绍了RN相关的知识: 是时候了解React Native了 从零学React Native之01创建第一个程序 本篇文章主要介绍下下面的知识: 1.简单界面的搭 ...

  8. HZOJ string

    正解炸了…… 考试的时候想到了正解,非常高兴的打出来了线段树,又调了好长时间,对拍了一下发现除了非常大的点跑的有点慢外其他还行.因为复杂度算着有点高…… 最后正解死于常数太大……旁边的lyl用同样的算 ...

  9. pytorch学习笔记(十二):详解 Module 类

    Module 是 pytorch 提供的一个基类,每次我们要 搭建 自己的神经网络的时候都要继承这个类,继承这个类会使得我们 搭建网络的过程变得异常简单. 本文主要关注 Module 类的内部是怎么样 ...

  10. hdu 1716 排序2(dfs)

    排列2 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...