美文网首页
使用express创建web应用

使用express创建web应用

作者: Oo晨晨oO | 来源:发表于2017-12-15 00:40 被阅读21次

包介绍

  • express: 是nodeJS的一个Web框架
  • nodemon: 是用来nodeJS改变代码时自动重启的
  • morgan: express记录日志的中间件
  • babel-cli: 转化js代码

babel-preset-es2015, babel-preset-stage-0 是babel转化js语法的两种规则

项目准备

为node.js项目安装nodemon自启动插件, babel插件

npm install nodemon babel-cli babel-preset-es2015 babel-preset-stage-0 -y

初始化node.js项目

mkdir nodeJSExpressProject
cd nodeJSProject
npm init -y

配置package.json

配置项目启动脚本命令start

"scripts": {
    "start": "./node_modules/.bin/nodemon --exec babel-node index.js"
  },

配置babel

关于babel的相关知识, 可以到这里去看http://www.ruanyifeng.com/blog/2016/01/babel.html
在项目中添加.babelrc文件
在里面写上

{
  "presets": ["es2015", "stage-0"]
}

执行start 启动项目

npm start

安装express

首先看看当前express有什么版本

npm view express versions --json

选择一个版本, 比如最新的5.0.0-alpha.6
安装express

npm install express@5.0.0-alpha.6 --save

安装express日志中间件

npm install morgan --save

morgan中间件是用来记录请求日志的. 客户端请求的网址和参数都会记录下来.

关于一些中间件的问题, 可以参考一下这篇文章https://www.cnblogs.com/yangyabo/p/5401812.html

开始写项目(评论留言板项目)

创建程序入口 index.js

import express from 'express'
import morgan from 'morgan'

// 创建app作为使用express框架的入口
const app = express()
// 使用morgan日志中间件
app.use(morgan('dev'))

// 监听路由
app.get("/", (request, response) => {
  response.send("Hello~~")
})

// 监听端口
app.listen(3000, () => {
  console.log("Listen port : 3000");
})

使用ejs视图模板

给项目添加ejs依赖
npm install ejs --save

node ejs 是一个express模版解析引擎,用于解析html模版生成对应的html的解析器。语法和php有些类似,语法比较直观。 ejs的使用可以说比较容易,可能起初接触的时候并不知道该如何下手,但其实在ejs中,'<% %>'中可以直接编写javascript代码,使用javascript的各种原生函数。同时由express中的response.render函数所传过来的变量也可以直接使用。

ejs模板用法可以参考这里http://www.jianshu.com/p/0bc6c2d7a502

在项目中设置视图模板和视图路径

import express from 'express'
import morgan from 'morgan'
//----------------增加代码---------------------
// 要给视图模板使用path模块
import path from 'path'
//-----------------------------------------

// 创建app作为使用express框架的入口
const app = express()
// 使用morgan日志中间件
app.use(morgan('dev'))

//---------------增加代码---------------------
// 设置视图path
app.set('views', path.resolve(__dirname, 'views'))
// 设置视图引擎
app.set('view engine', 'ejs')
//-----------------------------------------

// 监听路由
app.get('/', (request, response) => {
  // 渲染视图
  response.render('index')
})

// 监听端口
app.listen(3000, () => {
  console.log("Listen port : 3000");
})

如上述代码, 因为设置了视图所在路径为'views'
所以在根目录中添加views文件夹, 里面放置视图模板文件

建立视图文件
在根目录的views文件夹里新建index.ejs文件, 在里面写个简单的页面

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Express</title>
</head>
<body>
  <h1>Hello~你好</h1>
</body>
</html>

刷新, 即可在访问web应用根网址'/'时, 展示index.ejs视图

定义route路由

监听一个新的路由, 就要有对应的视图文件

import express from 'express'
import morgan from 'morgan'
// 要给视图模板使用path模块
import path from 'path'


// 创建app作为使用express框架的入口
const app = express()
// 使用morgan日志中间件
app.use(morgan('dev'))

// 设置视图path
app.set('views', path.resolve(__dirname, 'views'))
// 设置视图引擎
app.set('view engine', 'ejs')

// 监听路由
app.get('/', (request, response) => {
  // 渲染视图
  response.render('index')
})

//---------------增加代码---------------------
app.get('/comments/new', (request, response) => {
  response.render('comments/new')
})
//-----------------------------------------

// 监听端口
app.listen(3000, () => {
  console.log("Listen port : 3000");
})

在views中建立comments/new.ejs文件

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>New Comments</title>
</head>
<body>
  <form method="post">
    <textarea name="comment" rows="8" cols="80"></textarea>
    <input type="submit" value="Comment">
  </form>
</body>
</html>

于是访问http://localhost:3000/comments/new时, 会出来新建评论的页面.

提交评论功能(后台逻辑)

这里我们需要使用到body-parser中间件,

body-parser实现的�要点如下:

  • 处理不同类型的请求体:比如text、json、urlencoded等,对应的报文主体的格式�不同。
  • 处理不同的编码:比如utf8、gbk等。
  • 处理不同的压缩类型:比如gzip、deflare等。
  • 其他边界、异常的处理。

首先向项目中添加body-parser中间件
npm install body-parser --save
然后在项目中使用body-parser中间件

import express from 'express'
import morgan from 'morgan'
// 要给视图模板使用path模块
import path from 'path'

// 导入body-parser
import bodyParser from 'body-parser'


// 创建app作为使用express框架的入口
const app = express()

//---------------增加代码---------------------
// 构建一个本地评论数组
let comments = []
// 将本地评论数组放入本地local中
app.locals.comments = comments
//----------------------------------------

// 使用morgan日志中间件
app.use(morgan('dev'))
//---------------增加代码---------------------
// 使用body-parser中间件
app.use(bodyParser.urlencoded({ extended: false }))
//----------------------------------------

// 设置视图path
app.set('views', path.resolve(__dirname, 'views'))
// 设置视图引擎
app.set('view engine', 'ejs')

// 监听路由
app.get('/', (request, response) => {
  // 渲染视图
  response.render('index')
})

app.get('/comments/new', (request, response) => {
  response.render('comments/new')
})

//---------------增加代码---------------------
app.post('/comments/new', (request, response) => {
  if (!request.body.comment) {
    response.status(400).send("Do you have something to say???")
    return
  }
  // 本地数组存入信息
  comments.push({
    comment: request.body.comment,
    created_at: new Date(),
  })
  // 进行重定向
  response.redirect('/comments')
})
//-----------------------------------------

// 监听端口
app.listen(3000, () => {
  console.log("Listen port : 3000");
})

评论视图

跳转到comment/index , 那么我们应该在views/comments/index.ejs文件里写出评论列表的视图

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Comments</title>
</head>
<body>
  <h1>Comments</h1>
  <% comments.forEach((comment) => { %>
    <div>
      <%= comment.comment %>
      <span style="color: #ccc"><%= comment.created_at %></span>
    </div>
  <% }) %>
</body>
</html>

注意模板文件的语法
套用js使用<% %>
输出使用<%= %>
具体语法可以参考这里 http://www.jianshu.com/p/0bc6c2d7a502

相关文章

  • 使用express创建web应用

    包介绍 express: 是nodeJS的一个Web框架 nodemon: 是用来nodeJS改变代码时自动重启的...

  • mongodb(入门)

    1.express node Web应用框架,提供了很多Web应用和HTTP工具 使用express可以快速搭建一...

  • mongodb(入门)

    1.express node Web应用框架,提供了很多Web应用和HTTP工具 使用express可以快速搭建一...

  • nodejs(5)

    express node web应用框架,提供了很多web应用和HTTP工具 使用express可以快速搭建一个完...

  • 运行vue打包后的项目

    使用基于 Node.js 平台,快速、开放、极简的 Web 开发框架Express 1、按照express创建出基...

  • Node.js 撸第一个Web应用

    使用Node.js 创建Web 应用与使用PHP/Java 语言创建Web应用略有不同。使用PHP/Java 来编...

  • node.js Web应用开发框架Express

    Express提供了帮你创建各种Web应用的一系列强大特性,可以帮你快速搭建完整功能的网站。 安装Express ...

  • koa入门

    koa介绍 Koa是由Express背后的团队创建的新流行的Web应用框架。它旨在成为Express的现代和极简主...

  • 前端面试2021-009

    1、如何创建并启动一个Express服务应用 2、什么是路由?Express中是如何管理路由的? 路由是WEB服务...

  • Web应用使用Hibernate

    对于创建Web应用程序,使用Hibernate创建一个Web应用程序——使用Jsp表示逻辑层,使用Bean类表示数...

网友评论

      本文标题:使用express创建web应用

      本文链接:https://www.haomeiwen.com/subject/iefrwxtx.html