用Express搭建 blog (一)
Info
公司马上要举行 hack day 了,这次决定和小伙伴用 Express 作为框架来搭建我们的应用,所以昨天搭出来UI后,今天开始系统的学习下 Express。
Start
首先是express的全局设置。
1 |
sudo npm install -g express |
接着我们试着用express搭建一个简单的blog程序
在work path 运行命令
1 |
express -e ejs blog |
可以看到express已经帮你创建了一系列的模板程序。接着进入blog目录安装ejs等相关依赖。
1 |
cd blog && npm install |
运行
1 |
node app |
并访问http://localhost:3000/ ,简单的hello world 程序已经生成。
下面来看下程序的整个结构,运行command
1 |
tree -I node* |
express的模板程序结构看起来和rails的结构很相像。
1 |
├── app.js |
Blog Design
对express的模板程序有了基本概念后,我们开始来实现一个稍微复杂的blog。
blog 需要实现下面的功能。
1 |
/:首页 |
blog 的数据存储采用mongodb。
Improve
首先我门先简单的改进下我们当前的blog程序。
首先是重写默认的路由
在 app.js 里面我们可以看到以下两行语句。
1 |
app.get('/', routes.index);
|
我们把这部分代码移到 routes/index.js 使代码结构看起来更为清晰。
1 |
module.exports = function(app){
|
同时在 app.js里将上面两行代码替换成。
1 |
routes(app); |
Ok,接下来我们添加相应的ejs,实现后的前端界面结构应该如图所示。
1 |
└── views |
footer.ejs
1 |
</article> |
header.ejs
1 |
<!DOCTYPE html> |
index.ejs
1 |
<%- include header %> |
login.ejs
1 |
<%- include header %> |
reg.ejs
1 |
<%- include header %> |
上面所做的工作简单的概括来说就是把整个 blog 的 header 和 footer 分离开,并按此建立相应的登陆,注册页面。
可以通过访问http://localhost:3000/ 来查看当前主页。
mongo db
首先是安装。mac下安装mongodb很简单。
1 |
brew update |
测试
1 |
mongo |
mongo db装上后 开始安装node js的依赖。
在 package.json 中加入。
1 |
"mongodb":"*", |
运行
1 |
npm install |
安装完成后,我们就能够在程序中对mongo db进行操作了。
我们在blog下面新建 settings.js 用来存储我们blog程序的相关配置。
1 |
module.exports = {
|
创建 models 目录并新建 js 文件 db.js 用来操作 db
1 |
var settings = require('../settings'),
|
而Package connect-mongo 是用来存储会话信息到数据库。
在 app.js 中添加。
1 |
var MongoStore = require('connect-mongo')(express);
|
同时在 app.use(express.methodOverride()) 后面添加
1 |
app.use(express.cookieParser()); |
其中 express.cookieParser() 是 Cookie 解析的中间件。express.session() 则提供会话支持,设置它的 store 参数为 MongoStore 实例,把会话信息存储到数据库中,以避免丢失。
在后面的小节中,我们可以通过 req.session 获取当前用户的会话对象,以维护用户相关的信息。”
至此,数据库的配置工作完成了,后面我们就可以用数据库了。
结论
Express的代码结构看起来还是蛮清晰的,npm上的第三方的资源也很丰富。
由于本人是Express的初学者,所以整个 blog 的过程也是完全参考 【一起学node.js (一)】用node+express搭建多人博客 这篇blog的内容,在此也感谢下原作者。
参考
用Express搭建 blog (一)的更多相关文章
- 用express搭建一个简单的博客系统
转自:https://blog.csdn.net/qq_29721837/article/details/62055603 Express 简介 Express 是一个简洁而灵活的 node.js W ...
- 建立一个node.js服务器(使用express搭建第一个Web环境)
一.官网下载node.js 下载地址:https://nodejs.org/en/download/ 根据向导,下一步安装就可以了! 二.使用express搭建Web环境 express是一个开源的n ...
- express搭建简易web的服务器
express搭建简易web的服务器 说到express我们就会想到nodejs,应为它是一款基于nodejs平台的web应用开发框架.既然它是基于nodejs平台的框架那么就得先安装nodejs. ...
- Hugo快速搭建Blog
以往我们搭建blog要么学习一个编程语言+Web开发框架,要么使用现成的blog系统(如WordPress).其实我们还可以使用Hugo.Hugo是由Go语言实现的静态网站生成器,它不需要数据库,所以 ...
- 用Nodejs+Express搭建web,nodejs路由和Ajax传数据并返回状态,nodejs+mysql通过ajax获取数据并写入数据库
小编自学Nodejs,看了好多文章发现都不全,而且好多都是一模一样的 当然了,这只是基础的demo,经供参考,但是相信也会有收获 今天的内容是用Nodejs+Express搭建基本的web,然后呢no ...
- 用 hugo 和 netlify 搭建blog【转】
用 hugo 和 netlify 搭建blog - kok的笔记本 Releases · gohugoio/hugo · GitHub 测试baidu 测试163
- nodejs-使用multer实现多张图片上传,express搭建脚手架
nodejs-使用multer实现多张图片上传,express搭建脚手架 在工作中,我们经常会看到用户有多张图片上传,并且预览展示的需求.那么在具体实现中又该怎么做呢? 本实例需要nodejs基础,本 ...
- express搭建服务器
学习express搭建node服务器 一.安装express框架 1.了解框架(百度) 2.下载框架 (1)使用npm命令下载 npm install express -g //全局安装,安装的是ex ...
- 基于 Express 搭建一个node项目 - 起步
一,如何基于 Express 搭建一个node项目 什么是Express 借用官方的介绍,Express是一个基于Node.js平台的极简.灵活的web应用开发框架,它提供了一系列强大的特性,帮助你创 ...
随机推荐
- mysql拒绝访问(Error 1044/1045)问题的解决
遇到此问题 一般是权限问题 修改权限即可 然后用grant命令下放权限. GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY 'ro ...
- 今天在研究jquery用ajax提交form表单中得数据时,学习到了一种新的提交方式
今天在研究jquery用ajax提交form表单中得数据时,学习到了一种新的提交方式 jquery中的serialize() 方法 该方法通过序列化表单值,创建 URL 编码文本字符串 序列化的值可在 ...
- 进程外Session和进程内Session存储
- shell基础——二元比较操作符
二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别. 整数比较 -eq 等于,如:if [ "$a" -eq "$b" ]-ne 不等于,如:if [ ...
- ubuntu 下添加sublime text 启动图标
ubuntu下无快捷方式一说,如果想快速打开sublime Text,可以创建sublime text 启动图标 1. 创建空白文档 sublime.desktop,注意权限 $ vi /usr/sh ...
- 解决:Incorrect line ending: found carriage return (\r) without corresponding newline (\n)
解决方案: ——clean一下项目,这个方法可以解决 . 此方案经过验证OK
- struts2.3.15.3中动态方法调用默认是关闭的
初学ssh,用的struts2.3.15.3,使用了如下表单: <form action="/spring3/index/login.action" method=" ...
- C语言中两个相等的char值比较 结果为false
unsigned char appendChar1[] = {0xD3, 0xD0, 0xCF, 0xDE, 0xB9, 0xAB, 0xCB, 0xBE}; char appendChar2[] = ...
- IntPtr问题
public aaa(IntPtr myPtr,int left, int top, int width, short height) 这里myPtr应该是对应到一块内存,你需要查看aaa函数是如何把 ...
- 转 android 侧滑实现
本篇博客给大家分享一个效果比较好的侧滑菜单的Demo,实现点击左边菜单切换Fragment. 效果如下: 主Activity代码: package com.infzm.slidingmenu.demo ...