基于Node.JS脚手架express-generator,生成express项目

3,803 阅读4分钟

前言:

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型。 Express基于Node.js封装的,快速、开放、极简的 Node.js Web 开发框架。它通过中间件和路由让程序的组织管理变得更加容易;它提供了丰富的HTTP工具;它让动态视图的渲染变得更加容易;他还定义了一组可扩展的标准。 初始化一个Express项目,通过生成器工具express-generator快速生成了一个Express应用。

一.安装express生成器

    检查express版本  $  express --version  可以查看版本
    npm i -g express-generator

二.初始化一个express引用

2.1 查看电脑里面是否有Node.js,因为Express基于Node.js,所以电脑里面得安装有Node.js,下面是Node.js下载网址

2.2 创建项目文件夹,然后在文件夹下使用命令npm init生成package.json文件,安装Express

express express-app

2.3 目录结构:

app.js应用的初始化文件,包括引入应用程序的基础依赖项、设置视图即view的引擎目录以及模板、设置静态资源路径、配置通用的中间件、引入路由和一些错误处理中间件等。 package.json应用的配置文件,文件内包含程序的基础信息、启动脚本和依赖包等。 bin/www应用的启动文件,文件内包含引用要启动的应用、设置应用监听的端口和启动http服务等。 public/**应用的静态资源文件目录,该目录下的文件资源不需要经过文件映射就可以直接访问。 routes/**应用的路由文件,这些路由文件中设置的接口最终会以指定的HTTP请求方式暴露给用户,并在用户请求之后将结果返回。 views应用的视图文件,在app.js中设置好视图引擎和模板之后,该目录即为应用视图的根目录,然后路由文件就会根据app.js中的设置加载并渲染该目录下的视图文件。

  • 应用的启动 npm install 启动程序
node bin/www

启动后并没有什么反应,在浏览器上打开 http://localhost:3000/,显示下面图就表示安装成功了

2.4 通过pm2启动项目,安装:

npm install pm2 -g

启动项目: pm2 start app.js

注意:pm2是在后台启动的,还可以操作其他命令

停止:

pm2 stop app.js 或者 pm2 stop all 具体操作可以去npm官网查看,收搜pm2 www.npmjs.com/package/pm2

三.更改express项目的模板

  • 该应用中是jade模板,相信大家都不习惯,可以去学习一下:也可以改成html,我是使用ejs模板的

安装ejs  

 npm i ejs --save

打开app.js文件,引入ejs模板

var ejs = require('ejs');
app.engine('.html',ejs.__express);  //新增
app.set('view engine', 'html');  // 将jade模板改成html

最后在views新建一个html文件就可以啦!

四. 路由

路由表示应用程序端点 (URI) 的定义以及端点响应客户机请求的方式。 有关路由的简介,请参阅基本路由expressjs.com/zh-cn/start…

  • Express 支持对应于 HTTP 方法的以下路由方法:get、post、put、head、delete、options、trace、copy、lock、mkcol、move、purge、propfind、proppatch、unlock、report、mkactivity、checkout、merge、m-search、notify、subscribe、unsubscribe、patch、search 和 connect。
  • 一个简单的基本理由:
var express = require('express');
var app = express();

app.get('/', function(req, res) {
  res.send('hello world');
});

路由路径与请求方法相结合,用于定义可以在其中提出请求的端点。路由路径可以是字符串、字符串模式或正则表达式。 路由处理程序您可以提供多个回调函数,以类似于中间件的行为方式来处理请求。唯一例外是这些回调函数可能调用 next('route') 来绕过剩余的路由回调。您可以使用此机制对路由施加先决条件,在没有理由继续执行当前路由的情况下,可将控制权传递给后续路由。 路由处理程序的形式可以是一个函数、一组函数或者两者的结合,如以下示例中所示。

app.get('/hello/a', function (req, res) {
  res.send('Hello from A!');
});

有一种特殊路由方法:app.all(),它并非派生自 HTTP 方法。该方法用于在所有请求方法的路径中装入中间件函数。

app.all('/secret', function (req, res, next) {
  console.log('Accessing the secret section ...');
  next(); 
});

每天学习一点,记录下自己学习的东西!!!