express

Express框架是依赖connect框架创建而成的,connectnode的一个中间框架

1.创建项目

Express -e vlan 创建完整的项目

生成四个文件

Bin 项目启动文件 配置以什么方式启动项目,修改端口 默认启动npm start

Public 项目的静态文件 前端目录 放js css img文件

Routes 项目的路由信息文件 控制地址路由

Views 视图文件 放模板文件ejsjade等 相当于html

ExpressMVC框架模式 是web项目的基本构成

 

2.文件信息分析

Package.json 项目主要信息在这里产生

{

  "name": "test",  名称

  "version": "0.0.0",  包版本

  "private": true,  私人模块

  "scripts": {   脚本

    "start": "node ./bin/www"

  },

  "dependencies": {  项目应用运行依赖模块

    "body-parser": "~1.12.0", 解析器 中间件 解析http请求体

    "cookie-parser": "~1.3.4",解析器 中间件 获取web浏览器发送的cookie中的内容

    "debug": "~2.1.1",程序调试工具,检查内存中任何地方的字节以及修改任何地方的字节

    "ejs": "~2.3.1", js模板库从json数据中生成html子符串

    "express": "~4.12.2", 版本号

    "morgan": "~1.5.1", 记录日志

    "serve-favicon": "~2.2.0" 请求网页logo

  }

}

App.js 能够继续导出给bin文件夹下www文件使用

1 var express = require('express');  导入express

 2 var path = require('path');

 3 var favicon = require('serve-favicon'); 网页图标logo

 4 var logger = require('morgan');

 5 var cookieParser = require('cookie-parser');

 6 var bodyParser = require('body-parser');

 7

 8 var routes = require('./routes/index'); 导入路由位置

 9 var users = require('./routes/users');

10

11 var app = express();

12

13 // view engine setup

14 app.set('views', path.join(__dirname, 'views')); 获取当前模块文件所在目录的绝对路径

15 app.set('view engine', 'ejs'); 视图引擎  ejs模板库

16

17 // uncomment after placing your favicon in /public

18 //app.use(favicon(__dirname + '/public/favicon.ico'));

19 app.use(logger('dev')); app.use用来给path注册中间函数的,用来处理任何请求

Connect内建的中间件,终端显示不同颜色的日志,logger日志

20 app.use(bodyParser.json()); 返回用来解析json格式的中间件,中间件能接受任何unicode编码字符,自动解析gzipzlib

21 app.use(bodyParser.urlencoded({ extended: false }));返回中间件,中间件能解析urlencoded字符,只支持utf-8编码的字符,自动解析gzipzlib 扩展:

22 app.use(cookieParser());

23 app.use(express.static(path.join(__dirname, 'public'))); 设置静态文件目录

  path默认是/  static:静态,静止

25 app.use('/', routes);

26 app.use('/users', users);

27

28 // catch 404 and forward to error handler

29 app.use(function(req, res, next) {

30   var err = new Error('Not Found'); 错误,404

31   err.status = 404;

32   next(err);

33 });

34

35 // error handlers

36

37 // development error handler

38 // will print stacktrace   发展,进化;新产品,开发区

39 if (app.get('env') === 'development') { 开发环境下的错误处理,输出错误原因

40   app.use(function(err, req, res, next) {

41     res.status(err.status || 500);

42     res.render('error', {

43       message: err.message,

44       error: err

45     });

46   });

47 }

48

49 // production error handler

50 // no stacktraces leaked to user

51 app.use(function(err, req, res, next) {

52   res.status(err.status || 500);

53   res.render('error', {

54     message: err.message,

55     error: {}

56   });

57 });

58

59

60 module.exports = app;

View里的index.ejs

<!DOCTYPE html>

<html>

  <head>

    <title><%= title %></title>  title的值通过路由routes文件夹下index.js代码转入

    <link rel='stylesheet' href='/stylesheets/style.css' />

  </head>

  <body>

    <h1><%= title %></h1>

    <p>Welcome to <%= title %></p>

  </body>

</html>

Ejs简单使用


2

3

<h1><%=title %></h1>                    注:会把title里面存的值给显示出来在h1中。

<p><%= 'hello world' %></p>             注:会把hello world显示在h1中。

<h1><%= '<b>hello world</b>' %></h1>    注:会把hello world变粗,然后显示在h1中。

<%- code %>将不会进行转义;,这一行代码不会执行,像是被注释了一样,然后显示原来的html。也不会影响整个页面的执行。

 

<h1><%-title %>asd</h1>          最后显示asd,及显示原网页

<p><%# 'hello world' %>asd</p>   最后显示asd,及显示原网页

设计流程

一个初始界面(其实就是原始地址:比如 localhost:3000(index.html  路径为/ ) ,在初始界面选择登录或注册

跳进来之后会先跳进登录界面(login.html  路径为 /login),可以选择先注册(跳转 register.html  路径为/register)

跳进注册界面后就会跳进(register.html 路径为 /register),注册成功后就跳转登录界面(login.html  路径为 /login)

在登录界面登录成功后就跳转(home.html  路径为 /home). 在home这里还提供了注销的功能(无页面文件,它的路径为 /logout

如果浏览器直接输入localhost:3000/home  要先判断是否登录成功,未登录不允许进入

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值