• nodejs开发 express web后端(1从零开始搭建WEB后端项目,集成express)


    前在最前

    本文适合于已经有一定的JavaScript基础,准备用JS来写WEB后端的开发者们。本文主要是以实战记录的方式来分享完整项目的搭建。
    本文将演示如何用nodejs来搭建一个WEB后端项目,采用纯JavaScript开发(js)。
    本文案例文件下载地址:源码,写于2022年3月15日

    关键词

    WEB后端、express、nodejs、babel、nodemon
    大家一般说的node其实就是指nodejs,nodejs后端和js后端、node后端是一回事。javascript与nodejs的关系就像java与jvm的关系,javascript是开发语言,nodejs是运行容器。
    express是优秀的WEB框架(http://www.expressjs.com.cn/),提供基础的http服务,解决诸如路由、传输、请求等的处理,是核心的WEB库,因为现在都是前后端分离的结构,所以本文定位其是WEB后端。

    nodemon是一个开发辅助工具,可以运行nodejs代码并监测项目代码变化,自动刷新并自动运行,大大提高开发效率。
    babel是一个解决ES6等更高级语法的转换工具,可以让项目支持用import、const、let、async\await等新语法的转换库。

    可以看得出来,核心是运用nodejs完成搭建express服务。其他都是为了提升开发效率衍生的。

    一、安装环境,完成nodejs\nodemon安装

    1、nodejs安装,从官网下载:https://nodejs.org/en。
    一般都是用windows开发,所以下载后是一个exe文件安装包,直接双击安装,一路next即可,过程略。

    验证安装成功:在cmd命令窗口中,输入:node -v ,会返回版本号则代表成功安装,如下:
     

    2、安装nodemon,在cmd命令窗口,输入:npm i nodemon -g ,会自动安装,如下:

     

    说明:npm 是随着nodejs一起安装的一个包管理工具,npm i = npm install ,表示安装XX包。nodemon是具体要安装的包名称。-g表示全局安装,可以支持在不同的项目都使用。

    二、项目初始化,搭建helloword.

    1、任意目录建立项目文件夹,比如d:\code\js,建立hello文件夹。

    2、初始化项目文件夹。cmd切换到项目文件夹下,执行npm init命令,按提示一路回车即可。如下:

    按提示完成后,项目文件夹下,会生成一个package.json配置文件。


    注:npm init初始的相关信息,都会在该文件中记录,这个文件称为项目配置文件。

    3、安装express,建立index页。

    cmd中,执行:npm i express,回车后,等待下载,完自动安装完成:
     

     看到上面这样,没有Error,就说明成功了。

    在项目文件夹下,建立index.js文件,内容如下:

    # index.js

    # 用express创建一个app对象,在本地3000端口运行一个http服务,开通一个/根路由的节点。
    # 本示是express官网示例,具体看express官网解释。

    const express = require('express')
    const app = express()
    const port = 3000

    app.get('/', (req, res) => {
      res.send('Hello World!')
    })

    app.listen(port, () => {
      console.log(`Example app listening on port ${port}`)
    })

    到此为止,项目文件夹下,文件目录应该如下:

    注:node_modules是npm下载的包,package.json是配置文件,index.js是我们的代码文件。package-lock.json是临时文件,不用管。 

    4、运行代码,看helloWorld.

    cmd中执行:node index.js,即可执行代码,效果如下:

     注:当看到控制台上有显示上面的语句时,表示启动成功。

    接下来,我们验证一下效果,打开浏览器,访问http://localhost:3000,会提到Hello World!

    三、项目集成nodemon,方便开发调试,实现代码热更新。

    在实际开发过程中,代码需要经常改动,每次改动都需要通过命令node index.js来运行,效率不高。所以我们引入nodemon这个工具。

    1、规范目录结构,将代码统一放到src文件夹下(新建一个src文件夹)。

    暂时我们项止只有一个Index.js文件,移到项目文件夹的src文件下。结构如下:

    2、修改package.json文件,采用nodemon启动代码。

    {
      "name": "server",
      "version": "1.0.0",
      "description": "",
      "main": "src/index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",
        "start": "nodemon --watch src --watch config src/index.js"
      },
      "author": "",
      "license": "ISC",
      "dependencies": {
        "express": "^4.17.3"
      }
    }

    改动说明:在scripts对象中,增加了start这一行,表示执行start脚本时,即执行nodemon命令。同时将main修改为src/index.js,表示代码从src/index.js开始运行。

    3、cmd中,执行npm run start,运行项目。
    (之前运行的cmd窗口,按ctrl+c 两次结束,再执行),如下:

    OK,到这里为止,nodemon集成已经完成,这样当修改了index.js中相关代码,项目会自动刷新,不需要手动关掉项目了。比如,我修改了res.send内的内容,cmd窗口会自动刷新,刷新网页,会看到内容也变了,如下:

    这样,我们就可以只专注写代码了,不用管运行的事了,去express官网看更多的示例吧,比如把app.use(),app.router等加进去,写更多的XX.js文件,都会即时生效了。

    四、项目集成babel,支持ES6等新语法。

    写着写着,你发现连基础的Import都无法使用,await async也不能用。比如,我const一个常用,它就报错了:

    别急,这是因为你用的语法太新了,是ES6以后的新语法,我们需要用babel转换一下。

    1、安装babel相关的库支持。cmd执行以下命令:

     npm install babel babel-node babel-cli --save-dev

    npm install --save-dev babel-core babel-loader babel-preset-env babel-preset-react

    npm install babel-preset-env --save-dev

    *以上命令请自行百度用途,先照着做,npm会自安装相关的包。其中 --save -dev表示仅保存到当前项目和调试环境。

    安装完以后,会自动更新package.json文件,安装完以后,内容应该如下:

     注:重点在devDependencies中增加了相关的babel库支持。

     2、修改start脚本。

    在package.json,将scripts的start命令,增加 --exec babel-node命令,完整如下:

    "start": "nodemon --watch src --watch config src/index.js --exec babel-node"

    3、重新运行项目。

    cmd中,执行:npm run start,

     OK.看到熟悉的3000端口,表示一切正常。

    **************************************************************************************** 我是分隔线,到目前为止,其实你就可以去玩代码了 ,写你需要的代码,扩充你的项目了 ****************************************************************************************

    五、项目打包

    项目写好了,如何发布交给运维到服务器部署呢?我们直接需要引入build命令和serve命令。

    1、在package.json中配置如下命令:
    "build": "babel src -d dist","serve": "node dist/index.js",完整的文件如下:

    {
      "name": "server",
      "version": "1.0.0",
      "description": "",
      "main": "src/index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",
        "start": "nodemon --watch src --watch config src/index.js --exec babel-node",
        "serve": "node dist/index.js",
        "build": "babel src -d dist"
      },
      "author": "",
      "license": "ISC",
      "dependencies": {
        "express": "^4.17.3"
      },
      "devDependencies": {
        "babel": "^6.23.0",
        "babel-cli": "^6.26.0",
        "babel-core": "^6.26.3",
        "babel-loader": "^8.2.3",
        "babel-node": "0.0.1-security",
        "babel-preset-env": "^1.7.0",
        "babel-preset-react": "^6.24.1"
      }
    }

    2、当我们写好项目后,用npm run build进行打包。打包后,会在项目文件夹生成dist文件夹,这里面存放的项目运行代码

    然后将dist文件夹所有文件打包丢给运维就行了。

    3、运维如何管理?

    你需要把package.json+dist文件夹一起打包给运维。运维执行直接执行:npm i ,就可以安装所有的包。

    然后执行npm run serve命令运行相关后端服务。

    当然,一般运维会用pm2来部署,即pm2 start dist/index.js --name server 

    写在最后

    到目前为止,完成了nodejs开发后端的环境准备、基本项目的搭建,并有一个简易的http服务。

    要让你的项目完成更出色的功能,请多查看express官网教材。

    当然,npm是一个好东西,当你看到代码中有import 或require一些第三方包时,你可以直接npm i XXX --save 来安装(别忘了加--save)。

    如果项目COPY到新电脑时,node_modules是可以不用COPY的,在新电脑上执行npm i 命令,会自动下载全部引用的包。

     现在,你已经可以开始一个项目的实战,下一篇,我将介绍一个实战项目的代码开发。重点是express的路由的拆分与拦截器的设计,确保后端接口安全。

    再接下来,我将会介绍ORM框架的使用。

  • 相关阅读:
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    HashMap
    反射
    树状数组
    HashCode()函数详解
    容器总结
  • 原文地址:https://www.cnblogs.com/luokunlun/p/16007498.html
Copyright © 2020-2023  润新知