[关闭]
@artman328 2018-05-15T08:28:21.000000Z 字数 2320 阅读 957

NodeJs Web 应用开发

node express web


一、建立项目

1、建立项目文件夹

  1. mkdir weshop
  2. cd weshop

2、用 npm 初始化项目文件夹

  1. npm init

二、安装必要框架并建立应用程序文件

1、安装 express 框架

  1. npm install --save express

2、在项目文件夹 weshop 下建立 app.js 文件,内容如下:

  1. //导入区
  2. const express = require('express')
  3. //建立应用程序对象
  4. const app = express()
  5. //使用中间件对请求对象进行审核、加工处理等
  6. //建立请求路由,将请求进行分发
  7. //开始监听请求
  8. app.listen(3000, function(){
  9. Sconsole.log("Server started on port 3000...")
  10. })

3、安装 nodemon 工具,对开发过程的文件变动进行监视并重启服务器程序

  1. npm install -g nodemon

4、编辑项目文件夹下的 package.json 文件,在 "script" 中加入 "start" 命令,内容如下:

  1. "scripts": {
  2. "start": "nodemon"
  3. "test": "echo \"Error: no test specified\" && exit 1"
  4. },

以后可用 npm start 来启动应用并监视文件变动。

5、在项目文件夹执行

  1. npm start

启动 web 应用服务(app.js),当看到以下输出时:

  1. $ npm start
  2. > weshop@0.0.1 start D:\weshop
  3. > nodemon
  4. [nodemon] 1.17.4
  5. [nodemon] to restart at any time, enter `rs`
  6. [nodemon] watching: *.*
  7. [nodemon] starting `node app.js`
  8. Server started on port 3000...

说明已经成功启动。

6、打开浏览器,查看地址 http://localhost:3000/,网页显示:

  1. Cannot GET /

原因是,我们还没有处理任何请求。

7、在 app.js 文件中,加入以下处理路由:

  1. //建立请求路由,将请求进行分发
  2. app.get("/", function(req,res){
  3. res.send("您正在访问: " + req.path)
  4. })
  5. app.get("*", function(req,res){
  6. res.send("404, 请求的资源不存在!");
  7. })

8、现在可用 get 访问 http://localhost:3000/,但访问除此之处的路径,如:http://localhost:3000/abc,都将得到 404 响应。

9、让我们的服务器可获得放在 pulic 文件夹中的静态文件,如图片、js文件、css文件等。

将 app.js 做如下改变:

  1. //导入区
  2. ...
  3. const path = require('path')
  4. ...
  5. //使用中间件对请求对象进行导引、审核、加工处理等
  6. /**
  7. * 第一个参数表示虚拟路径 (随意起名) ,第二个参数由 express 指定
  8. * 静态文件的位置
  9. */
  10. app.use('/static',express.static(path.join(__dirname,"public")))

10、测试访问静态文件

在项目文件夹内建立 public 文件夹,在其中建立一个文本文件,比如 readme.txt,然后通过:

  1. http://localhost:3000/static/readme.txt

进行访问,如果能够显示文件内容,说明静态文件访问配置正确。

三、实现登录功能

1、确定登录路由

  1. //送出登录表单
  2. app.get("/login",function(){
  3. })
  4. //处理登录提交(请求包含用户名和密码)
  5. app.post("/login",function(){
  6. })

2、将处理逻辑移到控制器

在项目文件夹中建立 controller 在文件夹,在其中创建一个 auth.js 文件,内容如下:

  1. function send_login_form(req,res){
  2. res.send("send_login_form")
  3. }
  4. function do_login(req,res){
  5. res.send("do_login")
  6. }
  7. /**
  8. * 在 ES6 中:
  9. * {send_login_form,do_login}
  10. * 相当于
  11. * {send_login_form:send_login_form,do_login:do_login}
  12. */
  13. exports = module.exports = {send_login_form,do_login}

3、更改第 1 项路由

  1. //导入区
  2. ...
  3. const auth_controller = require('./controller/auth');
  4. ...
  5. //送出登录表单
  6. app.get("/login",auth_controller.send_login_form)
  7. //处理登录请求(请求包含用户名和密码)
  8. app.post("/login",auth_controller.do_login)

4、用 postman 测试路由

可用浏览器地址栏测试 get

  1. http://localhost:3000/login

如果看到 send_login_form,说明路由正确。

可用 postman 测试 post

  1. http://localhost:3000/login

如果看到 do_login,说明路由正确。

5、测试处理登录参数

在 postman 中,post 表单数据:
username: admin
password adminpass
然后在控制器中试图获取这些参数。

首先:
安装 body-parser (请求体解析中间件)

  1. npm install --save body-parser
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注