express-generator快速构建node后端项目

news2024/11/13 23:41:28

express-generator是express官方团队开发者准备的一个快速生成工具,可以非常快速的生成一个基于express开发的框架基础应用。

npm安装

npm install express-generator -g

初始化应用

express my_node_test
创建了一个名为 my_node_test 的express骨架项目
通过 Express 应用生成器创建的应用一般都有如下目录结构:
.
├── app.js
├── bin
│   └── www
├── package.json
├── public
│   ├── images
│   ├── javascripts
│   └── stylesheets
│       └── style.css
├── routes
│   ├── index.js
│   └── users.js
└── views
	├── error.jade
	├── index.jade
	└── layout.jade

个文件含义及用途
app.js 是项目的主文件(入口文件),相当于vue项目的main.js
bin: 启动目录 里面包含了一个启动文件
bin/www 一个启动文件,配置了项目运行的端口信息 默认监听端口是 3000
package.json 包描述文件  最重要的是 依赖的模板列表 dependencies
             依赖列表里面的所有模板 可以通过 npm i / cnpm i  一次性全部安装
public:  所有的前端静态资源  html css image  js
views: 主要放置后端模板文件
routes:  放的是 路由 文件 (默认有两个),主要在这个目录下开发接口
         路由主要定义 url 和 资源 的映射关系 ( 一一对应关系 )
         主要用来接收前端发送的请求 响应数据给前端
dataBase:是我自己新增的一个文件,主要用来配置数据库账号密码和端口以及连接mysql
安装依赖
cd my_node_test
npm install  或  cnpm i  	或   npm i

启动项目

SET DEBUG=myapp:* & npm start
或者 npm start (非debug模式启动)

运行成功,控制台输出服务运行端口 3000 
myapp:server Listening on port 3000 +0ms

通过浏览器访问 :http://localhost:3000

接口的开发与引用
在项目的routes目录下写接口,app.js中引用

routes/index.js

var express = require('express');
var router = express.Router();
//引入数据库连接
var db = require('../dataBase/db')

router.get('/', function (req, res, next) {
  res.render('index', { title: 'Express' });
});
router.get('/users', function (req, res, next) {
  res.send('respond with a resource');
});

// 完整接口路径,下面可以看到结果 http://localhost:3000/demo
router.get('/demo', function (req, res, next) {
  db.query("select * from t_user",
    function (err, result) {
      if (err) {
        console.log('查询错误', err);
      } else {
        res.send({
          code: 200,
          data: result
        });
      }
    }
  )
});

module.exports = router;

数据库配置和连接

config.js

module.exports = {
  db: {
    host: "127.0.0.1",//如果是操作本地数据库,填写127.0.0.1;如果是远程服务器上的数据库填服务公网ip
    user: "root",//通常为root
    password: "xxxxx",//密码
    database: "node_test"//你所要操作的数据库的名称(是你在mysql中建立的数据库)
  }
}
db.js

const mysql = require('mysql')
const config = require('./config').db
//连接数据库
module.exports = mysql.createConnection(config)
app.js

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
//一定要在路由之前,配置cors这个中间件,从而解决接口跨域的问题
var cors = require('cors')
// 导入路由模块  -- 接口
var indexRouter = require('./routes/index');

var app = express();

app.set('views', path.join(__dirname, 'views'));  // 模板引擎的配置
app.set('view engine', 'jade');  // 模板引擎的配置  新版引擎从jade换成了pug,貌似是因为jade商标被注册了
app.use(cors())  //  中间件,解决跨域问题
app.use(logger('dev')); // 将信息打印到控制台
app.use(express.json());  // 内置的中间件,将解析的数据放到req.body中
app.use(express.urlencoded({ extended: false }));// req.body,因为我们采用了application/x-www-form-urlencoded的数据格式,
// 故我们需要采用对应解析的中间件,express为我们内置了一个express.urlencoded({extended: false})
// 如果设置为false,那么对URL-encoded的数据的解析采用querystring库
// 如果设置为true,那么采用qs库,允许将富对象和数组编码为url编码格式,允许使用url编码的json体验
app.use(cookieParser()); // 中间件,处理每一个cookie,可以获取并设置cookie  获取方式 req.cookie.xxx
app.use(express.static(path.join(__dirname, 'public')));  // 访问静态文件

// 注册路由 --接口
app.use(indexRouter);

// catch 404 and forward to error handler
app.use(function (req, res, next) {
  next(createError(404));
});
// error handler
app.use(function (err, req, res, next) {
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;

查看demo接口效果,表中4条数据全部拿到,正常

最后推荐安装nodemon插件,因为每次更改后都需要重启服务才生效,太麻烦

$ npm i -g nodemon

安装成功后记得修改package.json的配置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1075597.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Session 机制

一、Session 会话机制原理 Session(会话)机制是一种在 Web 应用程序中用来跟踪用户状态的技术。它通过在服务器端存储和管理用户信息,为每个用户分配一个唯一的会话标识符(Session ID/Token),并将该标识符…

CMS难题待解?头部企业已领跑前装量产与集成趋势

对汽车智能化来说,又一项智能交互的科技新配置已经兴起。 今年9月初,阿维塔12在德国慕尼黑车展上全球首发亮相,作为一款纯电智能豪华轿跑,新车采用电子外后视镜(CMS)取代了传统外后视镜,为这款…

提供电商API接口,点击获取API文档及测试

提供电商API接口,点击获取API文档及测试,一键对接各大主流电商平台 随着电子商务的飞速发展,电商API接口在业务运营中发挥着越来越重要的作用。它们提供了高效、便捷的连接方式,使得不同系统之间能够无缝协同工作,提升…

iPhone删除的照片怎么找回?总有一个方法适合你

大家都知道,手机使用久了就会产生很多垃圾文件。特别是占内存最大的照片,女生应该深有体会。对于相册里那些已经用不到的照片以及拍摄失败的“废片”,我们通常会选择将其一键删除。 但是如果在清理的过程中将一些重要的照片误删了该怎么办&a…

设计PCB时天线区域不想涂绿油怎么办?

摘要:本文以嘉立创EDA为例介绍一下如何将天线区域的绿油去掉。 设计制作带有PCB天线的电路板时,为了提升天线性能,最好是将天线金属部分裸露,不要盖上绿油。处理的方式有三种:第一种是将天线部分的一个小矩形区域开窗&…

【深蓝学院】手写VIO第6章--视觉前端--笔记

第5章相关内容,还是CSDN的传统Markdown编辑器好用。 视觉前段在14讲课程中已经讲过,这里再简单复习一下。 1. 前端工作的定性比较,分析 这一节讲了很多关于前端的方法框架的对比讨论,后面看完了相关的论文之后强烈建议再回来听一…

如何在Firefox中配置HTTP?

在浏览器中配置HTTP是一个常见的需求,它可以让我们轻松访问需要的网站或保护个人隐私。本文将为您详细介绍如何在Firefox浏览器中配置HTTP应用,帮助您实现无缝的HTTP体验。无论您是初次接触HTTP还是有一定经验的用户,本文都能为您提供实用的操…

ParCNetV2: Oversized Kernel with Enhanced Attention(超大的内核,增强了注意力)

贡献: 提出了超大卷积,用于CNN中长距离特征相互作用的有效建模。与ParCNetV1相比,它能够在所有空间位置上进行均匀卷积,同时消除了对额外位置编码的需求。提出了两个分叉门单元(空间BGU和通道BGU),它们是紧凑而强大的…

阿里云服务器计算型规格族18个实例规格性能特点和适用场景汇总

阿里云服务器ECS计算型规格族属于独享型云服务器,在高负载不会出现计算资源争夺现象,因为每一个vCPU都对应一个Intel Xeon 处理器核心的超线程,具有性能稳定且资源独享的特点。本文介绍阿里云服务器ECS计算型实例规格族18个具体实例规格的性…

力扣第113题 路径总和 || 树 深度优先搜索 回溯 二叉树

题目 113. 路径总和 II 中等 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1: 输入:root [5,4,8,11,null,13,4,7,2,null,n…

Maven系列第3篇:详解maven解决依赖问题

maven系列目标:从入门开始开始掌握一个高级开发所需要的maven技能。 这是maven系列第3篇。 我们先来回顾一下什么是maven? maven是apache软件基金会组织维护的一款自动化构件工具,专注服务于java平台的项目构件和依赖管理。 本文主要内容…

高频时序数据仓库

天软课堂将在本周四添加新主题--天软超高频行情数据。针对市场上高频行情数据处理业务的相关痛点,直观的在线演示如何通过天软高频数仓及高性能计算能力,将其逐个击破,期待各位老师的参会。

不吹不黑,网络安全工程师年薪30万是真的吗?

近几年,网络安全愈演愈烈,很多人都开始重视网络安全,有些公司为了招聘网安人才主动给出去30万甚至更高的年薪,那么,今天就来说一下网络安全工程师的那些事,看看他们真的是有这么厉害吗?他们又凭…

如何处理前端路由?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

【Redis】Redis性能优化:理解与使用Redis Pipeline

原创不易,注重版权。转载请注明原作者和原文链接 文章目录 Pipeline介绍原生批命令(MSET, MGET) VS PipelinePipeline的优缺点一些疑问Pipeline代码实现 当我们谈论Redis数据处理和存储的优化方法时,「 Redis Pipeline」无疑是一个不能忽视的重要技术。…

06-Zookeeper选举Leader源码剖析

上一篇:05-Zookeeper典型使用场景实战 一、为什么要看源码 提升技术功底:学习源码里的优秀设计思想,比如一些疑难问题的解决思路,还有一些优秀的设计模式,整体提升自己的技术功底深度掌握技术框架:源码看多…

文献检索技巧收集

在进行文献阅读之前最重要的工作就是文献检索,筛选出有价值的文献进行阅读。在写作的时候直接plain text,少用标题 文献检索–>文献阅读–>文献整理–>… 一、搜索技巧 加不加引号,在搜索中文时不会有这个烦恼,中文分词时…

Unity实现设计模式——适配器模式

Unity实现设计模式——适配器模式 适配器模式又称为变压器模式、包装模式(Wrapper) 将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 在一个在役的项目期望在原有接口的基础…

短视频营销:品牌与年轻消费者的新连接方式

近年短视频平台早已成为了品牌推广的首选热门渠道。通过短小精悍、生动有趣的视频内容,品牌可以与用户进行更直接、更有效的互动,传递品牌形象和价值观。在本文中,我们将介绍一些成功的短视频营销案例,展示创新引领品牌推广的新时…

K8S存储总结持久化存储解决方案(以NFS为例)

目录 K8S存储 一、emptydir 1. emptydir是什么 2. emptydir例子 二、hostpath hostpath 是什么 hostpath 例子 弊端 三、持久化存储 1.Persistent Volume(PV) 2.Persistent Volume Claim(PVC) 3.PV/PVC结合NFS使用实践(持久存储) 1. NFS服务…