零基础让你迅速了解node项目流程

项目初始化

  • 创建文件夹

    • npm init -y
    • public 用来存放静态资源(css、js、html)
    • views 视图,用来存放页面(.html、.ejs)
    • router 存放路由
    • app.js 入口文件
  • 创建app.js基本框架 (node的app.js文件配置流程)

    • 引入模块

      let express=require("express");
      let app=express()
      let bodyPaser=require("body-parser");
      let cookieParser=require("cookie-parser");
      let session=require("express-session");
      let path=require("path");
      
    • 配置静态资源

      app.use("/public/",express.static(path.join(__dirname,"./public")));
      app.use("/node_modules/",express.static(path.join(__dirname,"./node_module")));
      
    • 配置服务

      • 配置session

        app.use(cookieParser());
        app.use(session({
            secret:"test",//配置加密字符串,可以是随机的
            cookie:{maxAge:60*60*1000},//设置cookie的过期时间
            resave:true,//强制保存,即session的值不修改是也保存
            saveUninitialized:true//无论你是否使用session,他都默认给你一把钥匙
        }));
        
      • 配置post请求解析体

        app.use(bodyPaser.urlencoded({extend:true}));//true默认使用queryString库,false使用qs库
        //两者的区别在于qs只是一个增加了安全性的查询字符串解析和字符串序列化的库
        //queryingString则是node的核心模块,用于处理或解析url的查询字符串
        app.use(bodyPaser.json());
        
      • 配置html、ejs解析的模板引擎

        app.engine("html",require("express-art-template"));
        app.set("views",path.join(__dirname,"./views")); //默认就是views目录
        
    • 路由挂载之前必须配置好各种服务和引擎

      app.use(router);
      
    • 配置端口

      app.listen(5000,()=>{
          console.log("running~~~~~");
      })
      
  • 思考都有什么框架安装一下

    • npm i express
    • art-template 渲染模板
    • body-parser 中间件用来获取req.body
    • express-art-template 渲染页面render方法下面有详细注释
    • mongoose 可以使用mongoose的方法不用自己封装方法了
    • express-session 保存登录信息
    • m5加密
  • 设计路由

  • 项目完成后利用pkg打包

具体内容:

  1. 项目目录
image-20210801162911328
  1. 配置app文件(app.js)
//引入模块
let express = require('express');
let bodyParser = require('body-parser');
let path = require('path');
let app = express();
let axios = require("axios");;

// const backendUrl = process.env.APP_BACKEND_URL || 'http://127.0.0.1:32147/devoting';
axios.defaults.baseURL = 'http://coding.gardel.top:8848/devoting';
const PORT = process.env.APP_PORT || 32148;
const HOST = process.env.APP_HOST || '0.0.0.0';
const cookieParser = require('cookie-parser');
app.use(cookieParser());

//开启静态资源权限
app.use('/public/', express.static(path.join(__dirname, './public/')));

//配置模板引擎
app.engine("html", require("express-art-template"));
app.set("views", path.join(__dirname, "./views"));

//配置post请求解析体
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

//路由挂载
const mainRouter = require("./routers/mainRouter_y");
const adminRouter_user = require("./routers/adminRouter_user");
const adminRouter_admin = require("./routers/adminRouter_admin");
const adminRouter_department = require("./routers/adminRouter_depatrment");
const adminRouter_score = require("./routers/adminRouter_score");
const majorRouter = require("./routers/majorRouter_l");
const adminRouter = require("./routers/adminRouter");
app.use(mainRouter);
app.use(adminRouter_user);
app.use(adminRouter_admin);
app.use(adminRouter_department);
app.use(adminRouter_score);
app.use(majorRouter);
app.use(adminRouter);

//配置端口
app.listen(PORT, HOST, function() {
    console.log(`App is running on ${HOST}:${PORT}`)
})
  1. 安装框架
npm i express --save //后面的具体参数可以网上找一下
  1. 设计路由(route.js)
let express = require("express");
let mainRouter = express.Router();
let axios = require("axios");
//跳转路由
mainRouter.get("/main/login", (req, res) => {
    res.render('login_y.html', {
        errorMessage: req.query['errorMessage']
    })
    return
})
//数据路由
mainRouter.post("/main/login", (req, res) => {
    axios({
        method: "post",
        url: "/login",
        data: {
            username: req.body.username,
            password: req.body.password,
            rememberMe: req.body.rememberMe
        }
    }).then(function (data) {
        //判断用户是否登录(请求头)
        if (data.headers.authorization) {
            res.cookie('token', data.headers.authorization, {maxAge: 14 * 24 * 60 * 60 * 1000});
        }
        //返回请求状态、数据
        res.status(200).json(data.headers.authorization);
    }).catch(function (error) {
        //错误处理
        res.status(error.response ? error.response.status : 500).json({
            response: error.response ? error.response.data : undefined,
            message: error.response ? (error.response.data.message ? error.response.data.message : '未知错误') : error.message,
            status: error.response ? error.response.status : 500
        })
    })
})
  1. 打包文件(pkg)

知识点:

如何初始化node

npm init -y //-y可以快速自动生成各种信息

bootstrap.css与min.css的区别

前者没被压缩,后者被压缩

art-template的作用:

art-template 是一个简约、超快的模板引擎。它采用作用域预声明的技术来优化模板渲染速度,从而获得接近 JavaScript 极限的运行性能,并且同时支持 NodeJS 和浏览器。

exports和module.exports区别:

module代表的是当前模块本身
exports就是module的属性
	既可以使用exports导出,也可以使用module.exports导出
exports 和 module.exports的区别:
    exports只能通过.的方式向外暴露属性和方法
    exports.xxx=xxx;
module.exports可以通过.的方式也可以直接赋值
    module.exports.xxx=xxx;
    module.exports=xxx;	
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值