Nodejs之使用express框架搭建WEB應用


 

首先創建一個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',{});
});
});


});

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM