当前位置: 首页 > news >正文

nodejs搭建服务篇章三:nodejs搭建服务项目目录的简单介绍及app.js文件简单说明

  • nodejs搭建服务篇章一:nodejs搭建简易原生服务和基于express框架服务

  • nodejs搭建服务篇章二:nodejs搭建服务的路由目录分析及前端请求demo

  • nodejs搭建服务篇章三:nodejs搭建服务项目目录的简单介绍及app.js文件简单说明

  • nodejs搭建服务篇章四:前端通过nodejs搭建的服务连接MySQL数据库中的数据(数据库安装,数据库管理,ajax查询数据),超多图超详细

  1. 新构建目录的结构:

image

bin:项目的启动文件,也可以放其他脚本。

node_modules:用来存放项目的依赖库。

public:用来存放静态文件(css,js,img)。

routes:路由控制器。

views:视图目录(相当于MVC中的V)。

app.js:项目入口及程序启动文件。

package.json:包描述文件及开发者信息。

package-lock.json:记录模块与模块之间的依赖关系,锁定包的版本,记录项目所依赖第三方包的树状结构和包的下载地址,加快重新安装的下载速度

  1. 自己创建目录的结构:

models:数据模型(相当于MVC中的M)。

controllers:控制器,对请求的操作(相当于MVC中的C)。

tools:工具库。

config:配置目录。

test:测试目录。

README.md:项目说明文件。

  1. app.js文件简单说明:

require引入依赖模块:

// 引入express框架内置模块
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');

// 引入自己创建的模块
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');

添加express模块:

var app = express();

视图引擎设置:

// view engine setup
app.set('views', path.join(__dirname, 'views'));
// app.set('view engine', 'ejs');
app.engine('.html',require('ejs').__express)
app.set('view engine', 'html');

加载环境变量:

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

加载路由:

app.use('/', indexRouter);
app.use('/users', usersRouter);

加载错误处理解决办法:

// 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) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

导出app对象:

module.exports = app;
 res.status(err.status || 500);
  res.render('error');
});

导出app对象:

module.exports = app;

相关文章:

  • 搭建rsync服务器,实现文件备份同步
  • nodejs搭建服务篇章四:前端通过nodejs搭建的服务连接MySQL数据库中的数据(数据库安装,数据库管理,ajax查询数据),超多图超详细
  • XCode升级到7后,规范注释生成器VVDocumenter插件没有用了,怎么办?
  • vue传值处理:vue中父组件通过props传值给子组件,子组件表单控件使用值,子组件改变该值时如何避免报错
  • axios的二次封装:在vue中如何灵活运用axios请求,二次封装更加灵活,更多参数可配置
  • 清理C盘内存:电脑C盘飘红了,那么如何清理垃圾文件,总结几种亲测方案
  • Part05 - (图文)NSX系列之检查NSX Controller状态
  • JSON.parse转化:如何使得一个字符串类型‘false‘等于布尔类型的false(使‘1‘===1?成立的2种处理办法,与JSON.stringify的)
  • 常用工具函数推荐:前端开发常用的工具函数(拷贝、排序、防抖、去重、合并、时间处理、DOM操作...).md
  • 正则表达式校验文件路径
  • img制图技巧:给img图片添加背景颜色和背景图片,制作出新图片
  • 移动端h5页面click事件延迟300ms,出现该问题的原因分析及解决方案FastClick.js
  • ios移动端兼容:iPhone X等机型底部的安全距离样式的设置
  • js简单判断:js判断对象是否为{},js判断对象是否为null
  • Linux Pmap 命令:查看进程用了多少内存
  • 分享的文章《人生如棋》
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • 3.7、@ResponseBody 和 @RestController
  • CSS居中完全指南——构建CSS居中决策树
  • GitUp, 你不可错过的秀外慧中的git工具
  • IndexedDB
  • React中的“虫洞”——Context
  • Transformer-XL: Unleashing the Potential of Attention Models
  • 翻译--Thinking in React
  • 仿天猫超市收藏抛物线动画工具库
  • 基于webpack 的 vue 多页架构
  • 盘点那些不知名却常用的 Git 操作
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 《天龙八部3D》Unity技术方案揭秘
  • 数据库巡检项
  • # Panda3d 碰撞检测系统介绍
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (1)SpringCloud 整合Python
  • (Java数据结构)ArrayList
  • (LeetCode C++)盛最多水的容器
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (六)vue-router+UI组件库
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .NET CLR基本术语
  • .NET Micro Framework初体验(二)
  • .NET Remoting学习笔记(三)信道
  • .NET 发展历程
  • .net对接阿里云CSB服务
  • .net和php怎么连接,php和apache之间如何连接
  • .net生成的类,跨工程调用显示注释
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • @RequestMapping处理请求异常
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解
  • [AI]ChatGPT4 与 ChatGPT3.5 区别有多大