Node.js建站之安装express(一)

Node.js(三)之Express 官方给出的概念:Express 是基于Node.js平台快速、开放、极简的Web开发框架。通俗的理解:Express 的作用和Node.js内置的http模块类似,是专门用来创建Web服务器的。Express的本质:就是一个npm上的第三方包,提供了快速创建Web服务器的便捷方法。广义上来讲,路由就是映射关系。中间件(Middleware), 特指业务流程的中间处理环节。全局中间件可以使用 app.use()连续定义多个全局中间件。 阅读详情

最近用Node写了个简单的多人博客系统,想着总结一下经验。
github地址:https://github.com/Destinygu/node-blog
demo地址:http://123.207.248.56:3000/

功能
- 查看个人信息
- 支持简单markdown语法编辑
- 可以管理自己的博客及登录后查看他人博客
- 博客页面对移动端适配优化

用到的技术

前端:

  • bootstrap

后端

  • Node.js
  • mongoDB (mongoose)
  • Express

工具和模板

  • Webpack
  • Ejs

项目目录:
这里写图片描述

数据库model
这里写图片描述

路由回调函数专门放在这个plugins,便于管理
这里写图片描述

routes只负责指定路由
这里写图片描述

安装express和node-dev

express是基于 Node.js 平台,快速、开放、极简的 web 开发框架(官网上copy的…)
node-dev是用于Node后台代码修改自动更新

cnpm i -g express
cnpm i -g express-generator
cnpm i -g node-div

搭建express项目

-e代表采用ejs模板,这里用npm install,cnpm install 下载依赖包有时会有缺失的情况。(i是install缩写)

express -e blog && cd blog
npm i

安装其他依赖

-S是–save的缩写,表示添加到dependencies,即运行时依赖。-D是–save-dev缩写,表示添加到开发时的依赖,即开发时依赖。
express-session:用来存取session的,依赖于connect-mongo。
mongoose: mongoDB的一个对象模型工具,是基于node-mongodb-native开发的mongoDB Nodejs驱动,可以在异步的环境下执行。同时它也是针对mongoDB操作的一个对象模型库,封装了mongoDB对文档的的一些增删改查等常用方法,让Node.js操作mongoDB数据库变得更加灵活简单

cnpm i -S express-session
cnpm i -S connect-mongo
cnpm i -S mongoose

地址栏输入localhost:3000,安装成功
这里写图片描述

查看项目结构

这里写图片描述

app.js:启动文件
package.json:存储着工程的信息及所需的依赖模块,当在 dependencies 中添加依赖时,运行 npm install ,npm 会检查当前目录下的package.json,并自动安装所有指定的依赖模块
node_modules:存放 package.json 中安装的模块,当你在 package.json 添加依赖的模块并安装后,就会存放在这个文件夹下
public:存放 image、css、js 等文件
routes:存放路由文件
views:存放模版文件

安装mongoDB

下载mongoDB:
http://pan.baidu.com/s/1c14urV6
配置mongoDB :下面链接说的很详细,我也是照着来配置的,耐心一点。不过里面有点小错误,第7步与第8步mongo.log 与mongodb.log有冲突的,实际上文件名应该相同。
http://jingyan.baidu.com/article/d5c4b52bef7268da560dc5f8.html

原始app.js:

var express = require('express');
var app = express();
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

// 导入路由文件
var index = require('./routes/index');
var users = require('./routes/users');

// view engine setup
//视图路径
app.set('views', path.join(__dirname, 'views'));
//设置视图模版引擎为 ejs
app.set('view engine', 'ejs');

// uncomment after placing your favicon in /public
// 网站图标
app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
//在开发环境下使用,在终端显示简单的日志
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
//设置根目录下的 public 文件夹为存放 image、css、js
等静态文件的目录
app.use(express.static(path.join(__dirname, 'public')));

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

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

// 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');
});

module.exports = app;

修改app.js,只写重要部分
直接将routes文件夹下的index.js名字改为routes.js,

//新加载三个模块
var session = require('express-session');
var mongoose = require('mongoose');
var MongoStore = require('connect-mongo')(session);

//加载路由文件
var routes = require('./routes/routes');

其实数据库部分可以单独提到一个文件夹,这里也将它写在了app.js,希望大家都能看懂吧

//连接数据库
mongoose.Promise = global.Promise;
var db = mongoose.connect("mongodb://127.0.0.1:27017/blog");
db.connection.on("error", function (error) {
  console.log("数据库连接失败:" + error);
});
db.connection.on("open", function () {
  console.log("------数据库连接成功!------");
});


//加载中间件,存储session
app.use(session({
  resave:false,
  saveUninitialized:false,
  cookie: { maxAge: 60 * 10000 },
  secret:'45454',
  store: new MongoStore({
    cookieSecret:'agshavsdhas',
    db: 'blog',
    host:'localhost'
  })
}));

有必要放一下package.json,各种依赖包的版本的变化也是很坑的

{
  "name": "myblog",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node-dev ./bin/www"
  },
  "dependencies": {
    "body-parser": "~1.17.1",
    "connect-mongo": "~0.8.2",
    "cookie-parser": "~1.4.3",
    "debug": "~2.6.3",
    "ejs": "~2.3.3",
    "express": "~4.15.2",
    "express-session": "~1.15.2",
    "markdown": "0.5.0",
    "mongoose": "~4.9.5",
    "morgan": "~1.8.1",
    "serve-favicon": "~2.4.2",
  }
}

修改scripts部分node修改为node-dev(据说比 supervisor好),这样就能自动更新了。之前写java web的时候,每次修改servlet重启Tomcat,想想就心塞…

 "scripts": {
    "start": "node-dev ./bin/www"
  },

当然,这只是实现了后台的热更新,前端代码修改后还是要F5的。全栈刷新的感觉比较复杂,有兴趣的可以看一下这个http://acgtofe.com/posts/2016/02/full-live-reload-for-express-with-webpack。

今天就先写到这里吧,感觉有点乱。。。

基于Node.js Express搭建Https服务器 内容:1、安装Node.js2、安装Express和express-generator3、利用express-generator生成新项目4、生成SSL证书5、将项目从http转换为https关键词:Node.js,Express,Https,EJS,SSL证书                                                         1、安装Node.js(... 阅读详情

相关推荐

通达信浮筹多空波段抓牛擒龙指标公式源码

VAR33:=VA3>=REF(VA4,1) AND C<REF(C,1) AND VAR19=60 AND VAR18=0 AND 活跃线>=REF(活跃线,1) AND VA12<REF(VA13,1);DRAWTEXT(VAR28 AND COUNT(VAR28,30)=1,65,' ★超涨注意风险'),COLOR0000FF;DRAWTEXT(VAR26 AND COUNT(VAR26,30)=1,90,' ←继续等'),COLOR00FFFF;浮筹线:VA3,COLORFF00FF;

2401_86043146的博客 5271

EXPRESS项目PM2启动NODE_ENV传参数不生效问题解决方法

expree项目开发完,涉及到不同环境,要在启动到时候就要配置好环境变量, packge.json文件如下: "scripts": { "dev": "NODE_ENV=development DEBUG=name nodemon ./bin/www --name 'name'", "start": "NODE_ENV=production pm2 start...

weixin_30492047的博客 1006

PTA-浙大版 《Python程序设计》 第三章编程题目及答案

博主第一次写优快云的博客,所以排版上可能有些不尽人意,代码部分均为自己的思路,可能复杂或者考虑欠妥,欢迎大家一起讨论~ 第一题:大于身高的平均值 这里用了np数组求得平均数,当然for循环累加也是可以的 import numpy as np data = input().split() data = list(map(int,data)) avg = np.mean(data) for i in data: if i > avg: print(i,end = '

Legendwqs的博客 1万+

5) 搭建服务器Express【Node】

服务器:1. 接收请求报文 2. 发送响应报文服务器这辈子只干一件事——等。等前端向它发请求要数据,所以服务器一直在"监听请求、处理请求、回复请求"的死循环里。

m0_45295314的博客 2630

【Office激活】学校正版Office已激活成功仍弹出激活窗口

学校正版Office激活问题:已激活成功仍弹出激活窗口

ESCM_的博客 1万+

unet学习笔记(milesial/Pytorch-UNet)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 unet学习笔记(milesial/Pytorch-UNet)原理讲解unet_parts.py内容predict.py内容 所用到的代码Pytorch-UNet/predict.py at master · milesial/Pytorch-UNet ·GitHub 原理讲解 蓝/白色框表示 feature map; 蓝色箭头表示 3x3 卷积,用于特征提取; 灰色箭头表示skip-connection,用于特征融合; 红色箭头.

weixin_67138138的博客 2554

express的基础使用,利用postman模拟后端路由

Node.js 使 JavaScript\TypeScript 脚本能够脱离浏览器环境在服务端(后端)运行(实际上是对 Chrome V8 引擎进行了封装),为我们开发后端提供了一种选项。不像前端有统一的浏览器标准,如果不遵循的话浏览器就没法正常显示;后端的开发相对就自由许多,开发语言有很多选项,如 Java,PHP,python,C,Go 等,我们科协网站采用的是 TypeScript 语言,有关 TypeScript 的知识在之前课程当中已有介绍。

killsime的博客 821

车底盘:阿克曼转向和四轮差速

特性四轮差速四轮转向阿克曼转向转向方式控制左右轮组速度差控制四个轮子的角度控制前轮角度(后轮固定)运动原理滑移摩擦(搓着走)纯滚动(滚着走)近乎纯滚动(低速时)能耗高低(实现纯滚动时)中轮胎磨损非常严重小中灵活性高(可原地旋转)极高(可全向移动)低(转弯半径大)控制精度较低(受地面摩擦影响大)极高高机械复杂度低(通常只需2个驱动电机)极高(需4个转向+4个驱动执行器)中(需1个转向+2个驱动执行器)典型应用坦克、履带车辆、简单AGV、扫地机器人豪华轿车、高性能全向AGV。

bing_feilong的博客 1928

界面组件DevExpress中文教程 - 如何在Node.js应用中创建报表?

本文将为大家介绍如何通过.NET和WebAssembly集成如何在Node.js应用程序中创建报表,欢迎下载相关组件体验!

需要界面开发、IDE工具研发中文教程资料的小伙伴,记得私信我~ 1634

病理组学分析系列教程1:使用Python-histolab进行病理图像预处理,tiles切片自动生成

病理图像tiles自动生成,WSI图像预处理

qq_43449643的博客 1742

VMware Horizon 8 2111 部署系列(十一)准备RDS主机

RDS (Remote Desktop Service),即远程桌面服务。我们可以使用 Microsoft 远程桌面服务 (RDS) 提供 RDS 主机上的桌面会话并将应用程序传送给多个用户。

白昼的技术专栏 3473

nodejs与Express4配合搭建网站

最近用nodejs和Express试了一下搭建网站,感觉速度还是相当快的,总结一下,好记性不如烂笔头!node的安装可以直接到官网下载最新版本,安装就好。 node安装好后我们来依次安装,其中-g表示全局安装,好处是可以直接在命令行里输入。-v可以查看相应轮子的版本,不过express的查看版本命令要用-V。npm installnpm uninstall-express安装因为用的是版本四,所以

SirM2z的博客 2023

逆向工具:一文讲述 Ghidra 的详细使用

Ghidra是由NSA开源的一款功能强大的逆向工程框架,支持多平台、多架构和多种文件格式分析。本文详细介绍了Ghidra的核心优势、安装配置方法、主界面功能模块,并通过一个CrackMe示例演示了完整的逆向分析流程。文章还讲解了高级功能如交叉引用、控制流图分析、数据类型重建和脚本自动化等,最后提供了常见文件格式的分析技巧。作为IDA Pro的免费替代方案,Ghidra适合个人学习、教学和中小项目使用。(149字)

数据知道的博客 4351

Node.js开发入门—Express安装与使用

express安装,重写HelloWorld和HTTP文件服务器,了解express与http模块的不同

安晓辉生涯——聚焦程序员的职业规划与成长 3万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

node.js——express框架

Express 是一个流行的 Node.js 框架,为开发者提供了简洁的 API,用于处理 HTTP 请求、响应,以及管理中间件、路由和错误处理。Express 简化了构建 RESTful API、Web 应用程序和微服务的过程。快速开始Express 框架是构建 Node.js Web 应用程序的理想选择。它提供了强大且易于使用的工具,可以满足各种不同类型的 Web 开发需求。本期到此结束,关注我,我会继续写的!!

weixin_64916164的博客 5424

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Node.js 笔记(一) nodejs、npm、express安装

Windows平台下的node.js安装 直接去nodejs的官网http://nodejs.org/上下载nodejs安装程序,双击安装就可以了 测试安装是否成功: 在命令行输入 node –v 应该可以查看到当前安装的nodejs版本号 简单的例子 写一段简短的代码,保存为helloworld.js,大致看下nodejs是怎么用的。 如下:该代码主要是创建一个http服务器

haidao的专栏 14万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

node.js的Express框架的介绍 与 安装详细教程

node.js的Express框架介绍与安装详细教程

2301_76669854的博客 5494

Windows安装Node.js+Express+Nodemon

在《Node.js+Express+Nodemon+Socket.IO构建Web实时通信》一文中我们介绍了在Linux系统上的安装过程,本文我们在在Windows操作系统上安装Node.js、Express和Nodemon。

晨之清风 1224

Node.js 安装及配置

一、安装Node.js 1、Node.js安装包下载地址 2、安装Node.js 3、检验Node.js是否安装成功 4、Node.js刚安装好时的文件目录 二、npm的全局配置 1、配置说明 2、新建npm的缓存、全局安装目录 3、设置npm的缓存、全局安装目录设置为指定路径 4、检验指定路径是否设置成功 三、环境变量配置 1、进入环境变量配置页面 2、用户变量的配置 3、系统变量的配置 4、测试:对常用模块express进行全局安装 四、安装其他 1、安装淘宝镜像 2、安装cnpm

qq_56219731的博客 2674

windows下的node.js的安装及express安装步骤

从下午四点到晚上八点一直在安装express框架,起初一直是npm安装报错,附一张图大家看看: 真的是安装到崩溃,以下是我整理的正确安装方法,希望对大家有帮助吧! 1.在node.js的官网https://nodejs.org/en/download/下载安装。 2.安装完成后,打开运行命令窗口,输入cmd。输入node -v,测试是否安装成功,会输出版本信息。新的node....

weixin_41082623的博客 845

【Node.js】Node.js安装详细步骤和创建Express项目演示

Node.js是一个开源的、跨平台的JavaScript运行环境,用于在服务器端运行JavaScript代码。它提供了一个简单的API,可以用于开发各种网络和服务器应用程序。

qq_22744093的博客 1826

前端之node.js的express和路由

Express框架介绍Express是Node.js中一个流行且强大的Web应用框架,它简化了HTTP服务器的开发过程,提供了丰富的中间件机制、路由控制等功能。Express基于Node.js的http模块构建,允许开发者快速创建可扩展的Web应用程序和API服务。安装Express的例子要在Node.js项目中安装Express,请按照以下步骤操作:首先确保已经安装了Node.js环境,并在命令行工具(如终端或命令提示符)中进入你的项目目录。

m0_74242675的博客 1445

JavaScript结合node.js和Express框架制作项目教程详细版(一)——基础语法

学习用node.js创建一个项目

ttowill的博客 1394

Node.js安装Express,Node.js支持Typescript以及Express支持Typescript的步骤

新建 src/index.ts (因为我们在tsconfig.json里配置的路径是 src/**/*)如果我们想自动监视项目中的应用程序文件的更改,并在更改时自动重启服务器,可以安装nodemon。还可以创建一个nodemon.json 配置文件来定义nodemon 的行为。打开package.json,修改或添加"scripts"2. Node.js 安装Typescript。1. Node.js 安装Express。另外,还可以修改为使用npm运行。另外,还可以修改为使用npm运行。

y523648的博客 1307

Node.js——express项目搭建、请求、响应

本篇文章我们学习express项目的搭建及请求、响应的相关知识。

HuoZhiyan 的博客 1580

Node.js Express 框架

Node.js Express 框架是一个轻量级、灵活且功能强大的 Web 应用框架,基于 Node.js 的 http 模块构建。它简化了路由管理、请求处理和中间件集成,广泛应用于中小型项目和 API 开发。Express 提供简洁的路由系统(支持参数和查询)、中间件机制(日志、认证等)、模板引擎支持(如 EJS)和静态文件服务。通过模块化设计和丰富的生态(如 morgan、cors),Express 能快速构建高效、可扩展的 Web 服务。安装简单(npm install express),示例代码展示

m0_57545130的博客 1231
上一篇: HTML5canvas时钟实例
下一篇: ES6为字符串做了哪些扩展?
Hi-ZhiWei
博客等级 码龄10年 3粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值