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框架的使用。


免責聲明!

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



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