Cài đặt express
npm i --save expressCài đặt
npm i --save body-parserSử dụng body-parser để nhận được dữ liệu với phương thức POST
app.use(bodyParser.json());app.use(bodyParser.urlencoded({extended: true}))Khai báo thư mục sử dụng cho frontend như: js, images, css, font,..
app.use('/public',express.static('public'))Như vậy nếu thư mục public như này:
public├── css├── js├── fonts└── images├── hoa.png└── la.jpgThì đường dẫn ảnh sẽ là:
<imgsrc="/images/hoa.png"><imgsrc="/images/la.jpg">app.get('/',(req,res)=>{res.send('Hello world!')});router=express.Router();router.get('/',(req,res)=>{res.send('Hello world! 1')});returnrouterconstuser=require('./routes/user')(express);app.use('/user',user)Ví dụ:
Router trong file /routers/user.js có dạng:
router.get('/',(req,res)=>{res.send('Hello world! 1')});router.get('/1',(req,res)=>{res.send('User 1')});Thì khi đó đường dẫn sẽ là:
http://localhost:3000/user => Hello world! 1http://localhost:3000/user/1 => User 1Cài đặt
npm i --save express-sessionCấu hình
app.use(session({cookie: {maxAge: (3600*1000),secure: false},secret: 'JackCodeHammer'}));secret (Bắt buộc)[String | mảng]: dùng để đăng ký cookie session ID
cookie: Cấu hình cho cookie
Cài đặt
npm i --save nunjucksCấu hình
nunjucks.configure('views',{autoescape: true,cache: false,express: app,watch: true});app.engine('html',nunjucks.render);app.set('view engine','html')Sử dụng jQuery để lấy dữ liệu trong form
Sử dụng axios để gửi dữ liệu lên server mà không phải reload lại trang
<scriptsrc="https://code.jquery.com/jquery-3.2.1.min.js"></script><scriptsrc="https://unpkg.com/axios/dist/axios.min.js"></script>Sử dụng jQuery().serialize() để lấy dữ liệu trong form
Nhớ là các input, select, textarea,.. trong form phải có name nhé
letformData=jQuery('form#formsignup').serialize();Dùng axios gửi dữ liệu lên server
then: Nếu thành công thì thực thi câu lệnh bên trong
catch: Nếu thất bại thì thực thi câu lệnh bên trong
axios.post('URL',{})..axios.get('URL',{})..axios.put('URL',{})..axios.delete('URL',{})..Khi đó server sẽ hứng request tương ứng
router.post('URL',(req,res)=>{});router.get('URL',(req,res)=>{});router.put('URL',(req,res)=>{});router.delete('URL',(req,res)=>{});Dữ liệu trả về nên là jSon, array, string, number.
res.json({});res.send('');Client nhận được dữ liệu và dùng dữ liệu đó để hiển thị ra.
Mỗi 1 request sẽ kiểm tra nếu k có session.cart thì gán nó bằng mảng object rỗng
app.use((req,res,next)=>{if(!req.session.cart){req.session.cart={};}next()})Khi add to cart đường dẫn có dạng (Có nhiều dạng khác nhau nhưng ở đây mình gửi lên server dạng query)
http://localhost:3000/?addtocart=IDSPKhi đó ở server sẽ hứng request và xử lý
letq=req.query.addtocart;// Lấy queryif(q!==undefined||q>0){//Nếu dữ liệu có giá trị và > 0 thìif(req.session.cart[q]){// Kiểm tra sản phẩm đã có trong giỏ hàng chưareq.session.cart[q]+=1;// Có rồi thì + thêm 1}else{req.session.cart[q]=1;// Chưa có thì thêm và gán giá trị = 1}}Object cart sẽ có dạng kiểu như này
{
SP1: 1,SP2: 2,SP3: 3
}Khi có object thì ở server cart lấy dữ liệu các sản phẩm trong cart rồi hiển thị ra frontend.
=========================== HẾT ===========================