nodejs 搭建简易服务器

www文件夹下

template文件夹下

server.js代码:
const express=require('express');
const static=require('express-static'); //托管静态文件
const cookieParser=require('cookie-parser'); //解析cookie
const cookieSession=require('cookie-session'); //解析session
const bodyParser=require('body-parser'); //解析post数据
const multer=require('multer');
const consolidate=require('consolidate');
const mysql=require('mysql');
//连接池
const db=mysql.createPool({host: 'localhost', user: 'root', password: '123456', database: 'blog'});
var server=express();
server.listen(8080);
//1.解析cookie
server.use(cookieParser('sdfasl43kjoifguokn4lkhoifo4k3'));
//2.使用session
var arr=[];
for(var i=0;i<100000;i++){
arr.push('keys_'+Math.random());
}
server.use(cookieSession({name: 'zns_sess_id', keys: arr, maxAge: 20*3600*1000}));
//3.post数据
server.use(bodyParser.urlencoded({extended: false}));
server.use(multer({dest: './www/upload'}).any());
//4.配置模板引擎
//输出什么东西
server.set('view engine', 'html');
//模板文件放在哪儿
server.set('views', './template');
//哪种模板引擎
server.engine('html', consolidate.ejs);
//接收用户请求
server.get('/', (req, res, next)=>{
//查询banner的东西
db.query("SELECT * FROM banner_table", (err, data)=>{
if(err){
res.status(500).send('database error').end();
}else{
res.banners=data;
next();
}
});
});
server.get('/', (req, res, next)=>{
//查询文章列表
db.query('SELECT ID,title,summery FROM article_table', (err, data)=>{
if(err){
res.status(500).send('database error').end();
}else{
res.articles=data;
next();
}
});
});
server.get('/', (req, res)=>{
res.render('index.ejs', {banners: res.banners, articles: res.articles});
});
server.get('/article', (req, res)=>{
res.render('conText.ejs', {});
});
//4.static数据
server.use(static('./www'));
index.ejs代码:
<div class="content">
<div class="banner">
<ul class="clearfix">
<% for(var i=0;i<banners.length;i++){ %>
<li>
<img src="<%= banners[i].src %>" alt=""/>
<div class="text-box">
<h2><%= banners[i].title %></h2>
<p><%= banners[i].sub_title %></p>
</div>
</li>
<% } %>
</ul>
<ol>
<li class="active"></li>
<li></li>
<li></li>
</ol>
</div>
<div class="newsList">
<ul>
<% for(var i=0;i<articles.length;i++){ %>
<li>
<a href="/article?id=<%= articles[i].ID %>">
<h2><%= articles[i].title %></h2>
<p><%= articles[i].summery %></p>
</a>
</li>
<% } %>
</ul>
</div>
</div>
nodejs 搭建简易服务器的更多相关文章
- NodeJS搭建HTTPS服务器
[NodeJS搭建HTTPS服务器] http://cnodejs.org/topic/54745ac22804a0997d38b32d
- python搭建简易服务器实例参考
有关python搭建简易服务器的方法. 需求分析: 省油宝用户数 已经破了6000,原有的静态报表 已经变得臃肿不堪, 每次打开都要缓上半天,甚至浏览器直接挂掉 采用python搭建一个最最简易的 w ...
- python3+socket搭建简易服务器
踩了一上午的坑之后,终于对网络编程有了一点大致的.基本的了解.真的是0基础,之前对socket网络编程一点都不知道.(感觉自己与时代脱轨....) 首先我想对这些美妙的专业术语进行一番搜索: 服务器: ...
- nodejs搭建web服务器初级
nodejs搭建简单的web服务器 1.1简介 Node.js是基于Chrome JavaScript运行时建立的一个平台,实际上它是对Google Chrome V8引擎进行了封装,它主要用于创建快 ...
- Python使用socketServer包搭建简易服务器过程详解
官方提供了socketserver包去方便我们快速的搭建一个服务器框架. 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的 ...
- 使用nodejs搭建图片服务器(一)
背景 当我们开发一个Web项目的时候,为了将图片管理与web服务分离开,通常都会搭建一个图片服务器. 之所以选择nodejs是因为使用nodejs来搭建web项目相当简单而且快速,虽然这个图片服务器很 ...
- 巨杉Tech | 使用 SequoiaDB + Docker + Nodejs 搭建 Web 服务器
容器化技术的出现大大简化了应用开发人员在构建底层基础设施的工作.SequoiaDB 巨杉数据库于3.2.1版本正式推出了 Docker 容器化部署方案,本文将会基于 SequoiaDB 巨杉数据库与N ...
- Nginx+Nodejs搭建图片服务器
图片上传请求由Node处理,图片访问请求由Nginx处理. 1.Nginx配置 #user nobody; worker_processes 1; #error_log logs/error.log; ...
- 使用Python3.7.0搭建简易服务器
一.下载并安装Python 官网地址 二.新建start_server.bat 在需要搭建服务器的根目录位置,新建一个start_server.bat文件 内容 python -m http.serv ...
随机推荐
- Linux下如何查看定位当前正在运行的Nginx的配置文件
1. 查看nginx的PID,以常用的80端口为例: [root@xiaoyuer scripts]# netstat -lntup|grep 80 tcp 0 0 0.0.0.0:80 0.0.0. ...
- ubuntu Pycharm 2017 3.3 Active
1.打开激活窗口 2.选择 Activate new license with License server (用license server 激活) 3.在 License sever addres ...
- Mysql索引最左匹配原则
先来看个例子: 1. 示例1:假设有如下的一张表: DROP TABLE IF EXISTS testTable; CREATE TABLE testTable ( ID BIGINT NOT NUL ...
- 为什么公司宁愿 25K 重新招人,也不给你加到 20K?原因太现实……
年底了,还有几天就要过年了,年后必定又是一波跳槽季,我们为什么要跳槽,为什么公司不能满足我们加薪的需求? 说到这个话题,想必从事码农的各位都清楚的一个道理:工资都是跳出来的,其他行业我不太清楚,但在 ...
- TensorFlow tf.gradients的用法详细解析以及具体例子
tf.gradients 官方定义: tf.gradients( ys, xs, grad_ys=None, name='gradients', stop_gradients=None, ) Cons ...
- 46道史上最全Redis面试题,面试官能问的都被我找到了(含答案)
Redis高性能缓存数据库 1.什么是 Redis?简述它的优缺点? Redis 的全称是:Remote Dictionary.Server,本质上是一个 Key-Value 类型的内存数据库,很像m ...
- 【Spark篇】---Spark中广播变量和累加器
一.前述 Spark中因为算子中的真正逻辑是发送到Executor中去运行的,所以当Executor中需要引用外部变量时,需要使用广播变量. 累机器相当于统筹大变量,常用于计数,统计. 二.具体原理 ...
- Apache生产配置
httpd.conf # # This is the main Apache HTTP server configuration file. It contains the # configurati ...
- Filebeat 模块与配置
续 • <开始使用Filebeat> 1. 关于Filebeat 当你要面对成百上千.甚至成千上万的服务器.虚拟机和容器生成的日志时,请告别 SSH 吧!Filebeat 将为你提供一种 ...
- 并发编程(四)—— ThreadLocal源码分析及内存泄露预防
今天我们一起探讨下ThreadLocal的实现原理和源码分析.首先,本文先谈一下对ThreadLocal的理解,然后根据ThreadLocal类的源码分析了其实现原理和使用需要注意的地方,最后给出了两 ...