express框架学习

  1. url 和 资源的 映射 ( 一一对应 )关系
    前端 发送一个请求 必须要有一个请求地址url
    后端 根据这个前端请求的地址url, 响应一些数据回去.
  1. express简单使用 (了解)
    1) 新建一个项目文件夹 app

    2) 进入这个文件夹 初始化项目 生成 package.json
        cd app
        npm init -y

    3) 局部安装(在当前项目文件夹里面安装)express,并且保存到 依赖列表 里面
        cnpm i express --savex

        备注: 装完以后 会生成一个 node_modules 文件夹, express就在里面(npm 下载的第三方模块都在里面)

    4) 在当前目录新建一个 app.js 文件 在这个文件里面来 写 express 的代码
        a) 引入express模块
            const express = require('express');

        b) 使用express() 方法 创建一个 app 应用
            const app = express();

        c) 使用 app 来 接收前端的请求 (get方式  post方式)
            app.get('前端请求的url', (req, res) => {
                // req :  请求对象 负责接收前端(浏览器 )发送过来的数据
                // res:  响应对象 负责响应数据给前端(后端给前端发送数据)
            })

        d) 监听端口
            app.listen(端口号, () => {
                console.log('服务器启动成功...')
            })
  1. express-generator脚手架的使用(快速生成一个项目的工程目录)
    1) 全局安装 express-generator (安装它的目的 是为了 运行 express命令 )
        cnpm i express-generator -g

        备注: 可以运行命令 express --version 检测一下 是否能使用
    
    2) 可以使用 express 命令 来快速从创建一个项目目录
        express 项目文件夹的名字 -e
        示例: express demo -e

        备注: 
            项目文件夹的名字:  会自动生成一个项目文件夹
            -e:  使用 ejs 模板

    3) 进入项目目录, 运行 cnpm i, 一次性安装所有的依赖模块
        cd demo 
        cnpm i

    
    4) 启动项目
        a)  方式一: (不推荐)
            npm run start  (start有点特殊 可以缩写 npm start)

            备注: npm run 可以运行 package.json 里面 script里面的内容

        b)  方式二 (*****推荐)
            i) 打开 app.js 文件 , 在文件尾部(在暴露出去之前),可以自己监听端口
                app.listen(端口号, () => {
                    console.log('服务器启动成功...')
                })

            ii) 启动项目
                node app

        补充:  因为每次都要动服务器代码, 都需要重启服务器,很烦
               可以全局安装一个模板 nodemon 
               1) 全局安装 nodemon
                   cnpm i nodemon -g

               2) 使用nodemon 替代 node 启动项目
                  原来:  node app 
                  现在:  nodemon app
  1. 项目目录详解:
    bin: 启动目录 里面包含了一个启动文件  www 默认监听端口是 3000 (不用)
    node_modules:   所有安装的依赖模块 都在这个文件夹里面
    public:  所有的前端静态资源  html css image  js 
    routes:  放的是 路由 文件 (默认有两个)
             路由主要定义 url 和 资源 的映射关系 ( 一一对应关系  )
             主要用来接收前端发送的请求 响应数据给前端

    views: 主要放置 ejs 后端模板文件
    app.js:  入口文件(主文件) 总路由 (其他的路由 要由它来分配)
    package.json:  包描述文件  最重要的是 依赖的模板列表 dependencies
                   依赖列表里面的所有模板 可以通过 cnpm i  一次性全部安装
  1. 路由分配:
    1) 在routes下面 新建一个子路由文件
        vip.js

    2) 在主路由文件 app.js里面 改动 两处
        a) 在第8行左右 引入路由
            var vipRouter = require('./routes/vip');

        b) 在25行左右 分配路由  /vip 下面的请求 都交给vip路由处理
            app.use('/vip', vipRouter);

    3) 以上步骤完成, 就可以在vip.js 这个路由里面 接收前端发送的 /vip下面的请求

  1. res响应对象(*****)
    res主要负责 后端向前端 响应(发送)数据(如果接收了请求 不响应,会一直挂起(转圈圈))

    主要方法:
        1) res.send() (*****)  // 万能方法  可以响应JSON 字符串 HTML script 
        2) res.json()  // 主要给前端响应 JSON 数据
        3) res.jsonp() // 主要给前端响应 JSON 数据(针对跨域请求)

        4)  数据和模板在后端合并渲染 生成HTML 返回给前端
             res.render('ejs模板文件', {JSON对象格式的数据})
        5) res.download('要下载的文件的路径', '标题')
        6) res.redirect("要跳转到的新的网址url")
        7) res.status(状态码404).render("ejs模板名字", {JSON对象格式的数据})
  1. req请求对象(*****)
    req主要负责 接收前端发送过来的数据(参数)

    主要方法:
        a) 接收 get 方式的请求的参数
            req.query.参数的key值

        b) 接收 post 方式的请求的参数
            req.body.参数的key值

        c) 补充:
            req.ip  获取浏览器的ip地址
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,602评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,442评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,878评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,306评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,330评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,071评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,382评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,006评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,512评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,965评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,094评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,732评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,283评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,286评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,512评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,536评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,828评论 2 345

推荐阅读更多精彩内容