前言:

刚接手cms3.0的工作,似乎对一切都那么的不熟悉,于是在开始新需求之前,先做一个简单的登录系统。

项目目录:

1.使用webstroms建expreess项目,非常方便简单,建好的项目目录就是这样子的:

   ;

/bin: 用于应用启动

/public: 静态资源目录

/routes:可以认为是controller(控制器)目录

/views: jade/ejs/html模板目录,可以认为是view(视图)目录

app.js 程序main文件

2.在文件夹bin下面找www,右键单击Run 'bin\www',即可看到控制台输出“server Listening on port 3000 +0ms”,然后在浏览器输入“localhost:3000”就可以看见页面上“Hello Express”的字样;

3.在建项目之初,选用的模板是ejs或者jade,在这里为了方便,我们需要把模板改成常用的,挑一种来说,这是修改app.js文件中的代码:

...
var app = express(); // view engine setup
// app.set('views', path.join(__dirname, 'views'));
// app.set('view engine', 'jade'); // 设置模板引擎从jade为html
// view engine setup
app.set('views', path.join(__dirname, 'views'));
var template = require('arttemplate-gg');
template.config('base', '');
template.config('extname', '.html');
app.engine('.html', template.__express);
app.set('view engine', 'html');
...

最后还需要吧views文件夹底下的页面全部修改成.html结束的文件。这样基本的框架才搭建出来了;

4.项目中所需的静态文件,比如jQuery、图片、插件、样式文件统一放在public对应的文件夹底下;

5.在views文件夹底下总共建4个页面:

①err.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body> <h1>{{message}}</h1>
<h2> {{error.status}}</h2>
<pre>{{error.stack}}</pre> </body>
</html>

②home.html

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>欢迎登录@@@@@@@@@@</title>
</head>
<body>
欢迎登录
</body>
</html>

③index.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link href="/public/stylesheets/bootstrap.min.css" rel="stylesheet" media="screen">
<title></title>
</head>
<body>
<p>我是index页面~~~</p>
<script src="/public/javascripts/jquery.min.js"></script>
<script src="/public/javascripts/bootstrap.min.js"></script>
</body>
</html>

④login.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>用户登录</title>
<style>
*{ margin:0px; padding:0px; list-style:none;}
body,html{ height:100%;font:12px/1.5 \5FAE\8F6F\96C5\9ED1,tahoma,arial,sans-serif;}
html{ background:url(/images/bg.png) repeat-x;}
body{ background:url(/images/ftbg.png) 0 bottom repeat-x;}
.main{ background:url(/images/mbg.png) no-repeat center bottom;position: absolute;width:100%;height:500px;top:50%;
margin-left:0;margin-top:-290px; z-index:99}
.loginbox{ width:410px; height:375px;background:url(/images/borderbg.png); position: absolute; left:50%; top:50%; margin-left:-200px; margin-top:-200px; border-radius:8px;-moz-border-radius: 8px; -webkit-border-radius:8px; z-index:999;}
.loginbg{ width:310px;padding:40px; margin:0 auto; margin-top:10px; background-color:#fff; border-radius:8px;-moz-border-radius: 8px; -webkit-border-radius:8px;}
.loginbox h3{ font-size:18px; font-weight:normal; color:#333; padding-bottom:15px; text-align:center;}
.loginbox input{ width:260px; height:46px; border:1px solid #dbdbdb; padding:0 5px; font-size:14px; color:#666;border-radius:5px rgba(0,0,0,0.5);-moz-border-radius: 5px; -webkit-border-radius:5px; padding-left:45px; line-height:46px;}
.loginbox ul li{ padding:15px 0; position:relative;}
.loginbox .user{ background:url(/images/lgicon.png) 0 0 no-repeat; display:inline-block; position:absolute; width:19px; height:20px; left:15px; top:27px;}
.loginbox .pwd{ background:url(/images/lgicon.png) 0 bottom no-repeat; display:inline-block; position:absolute; width:19px; height:22px; left:15px; top:27px;}
.loginbox input.lgbtn{ width:312px; background-color:#f86c6b; border:0px; color:#fff; font-size:18px; font-family:\5FAE\8F6F\96C5\9ED1;line-height:46px; text-align:center; cursor:pointer; text-indent:0px; padding:0px;}
.main h2{ margin-top:-40px; font-size:30px; text-align:center; color:#fff; font-weight:normal;}
.footer{ position:fixed; z-index:9; bottom:0px; text-align:center; color:#666; width:100%; padding-bottom:20px; font-size:14px;}
</style>
</head>
<body>
<div class="main">
<h2>小小登录窗口</h2>
<div class="loginbox">
<div class="loginbg">
<h3>测试登录</h3>
<form id="fm" action="/" method="post">
<ul>
<li><span class="user" ></span><input type="text" id="username" name="username" value=""></li>
<li><span class="pwd" ></span><input type="password" id="password" name="password" required="true" value=""><span style="color: red;position: absolute;top: 70px;left: 10px" id="msg">{{msg}}</span></li>
<li><input type="submit" value="登录" class="lgbtn"/></li>
</ul>
</form>
</div>
</div>
</div>
<div class="footer">Come on 测试一下~~~</div>
<script type="text/javascript" src="/plugin/jquery-easyui-1.4.3/jquery.min.js"></script>
<script type="text/javascript" src="/plugin/jquery-easyui-1.4.3/jquery.easyui.min.js"></script>
<script type="text/javascript" src="/plugin/jquery-easyui-1.4.3/locale/easyui-lang-zh_CN.js"></script>
</body>
</html>

6.所对应的js文件——routes底下的index.js

/**
* created 2016-11-01
*
*/ var express = require('express');
var router = express.Router(); /* GET home page. */
router.get('/', function (req, res, next) {
res.render('login', {title: 'Express'});
});
// 自定义方法
router.post('/', function (req, res, next) {
var username = req.body.username;
var password = req.body.password;
var user={
username:'admin',
password:'admin'
};
if(username == user.username && password == user.password){
console.log("验证正确");
res.render('home', {title: 'Express'});
} else {
console.log("验证失败");
res.render('login', {msg: '用户名或密码错误!'});
}
}); module.exports = router;

最终的效果就是:

7.由于js中定义了账号和密码都为admin,因此只有输入值为admin时,才可以跳转到

如左图的页面,否则就是

提示的错误信息~

CMS3.0——初次邂逅express的更多相关文章

  1. cms3.0——收获(1)

    或许是由于各个公司的情况不同,使得每次写后台管理系统就沿用之前的nodejs中的thinkjs来写后台管理系统,也是因为这样后期维护起来更加方便吧?不过最早之前的项目,却有一个使用的是nodejs 中 ...

  2. 初次接触express

    今天初次使用express,还是写写心得好了. 中间件 mothod nodemon ~的使用 中间件 中间件我觉得就是个开箱即用的工具,写好中间件函数,直接use就好. 示例1: let myLog ...

  3. 纸壳CMS3.0中的规则引擎,表达式计算

    纸壳CMS3.0中的规则引擎,用于计算通用表达试结果.通常业务逻辑总是复杂多变的,使用这个规则引擎可以灵活的修改计算表达式. IRuleManager IRuleManager,是使用规则引擎的主要接 ...

  4. jade模板引擎学习笔记(WebsStorm9.0.3+ nodejs+express+jade)

    jade环境搭建 jade标签写法 jade注释 jade添加类名.id.属性 jade添加脚本,css jade变量 jade多行文本显示 jade流程代码:for,each,while jade流 ...

  5. SignalR 2.0 初次使用说明

    如何使用SignalR 2.0 一:首先通过Nuget安装SignalR 2.0 [本人使用的时候最新版本为2.0]2.0与之前1.X有部分命名空间和配置不同请注意 二:建一个专门的类库用来负责Sig ...

  6. ASP.NET CORE 1.0 初次接触

    vs2015 update3 升级后,可以创建asp.net core 1.0 的web应用了, 默认模版,发布到指定文件夹 服务器上需要安装 DotNetCore.1.0.0-WindowsHost ...

  7. mongoDB3.0版本使用express读取数据

    使用express连接数据库操作 var express = require('express'); var app = express(); var MongoClient = require('m ...

  8. ReactiveCocoa 5.0 初次了解

    RAC 5.0 相比于 4.0 有了巨大的变化,不仅是受 swift 3.0 大升级的影响,RAC 对自身项目结构的也进行了大幅度的调整.这个调整就是将 RAC 拆分为四个库:ReactiveCoco ...

  9. 与JSP的初次邂逅……

    JSP是可以内嵌在网页中,由服务器端来执行与解释的程序,是一种动态网页技术标准. 在传统的HTML文件(*.htm或*.html)中加入Java程序片段和JSP标记,就构成了JSP网页(*.jsp). ...

随机推荐

  1. Java Web开发中用Tomcat部署项目的三种方法

    第一种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加: <Context path="/hello" docBase ...

  2. 基于jquery右侧悬浮加入购物车代码

    分享一款基于jquery右侧悬浮加入购物车代码.这是一款基于jQuery实现的仿天猫右侧悬浮加入购物车菜单代码. 在线预览   源码下载 实现的代码: <!--左侧产品parabola.js控制 ...

  3. mysql中使用正则表达式查询

    正则表达式功能确实很强大,那天专门抽空学学,这里就暂时在mysql查询中用用. 正则表达式强大而灵活,可以应用于非常复杂的查询. 选项 说明(自动加匹配二字) 例子 匹配值示例 ^ 文本开始字符 '^ ...

  4. Java学习理解路线图

    信息来自知乎网友 学习截图:来自开源力量

  5. [转]wait,notify,notifyAll,join,yield,sleep的区别和联系

    1.  Thread.sleep(long) 和Thread.yield()都是Thread类的静态方法,在调用的时候都是Thread.sleep(long)/Thread.yield()的方式进行调 ...

  6. linux 提示符绝对路径

    # Turn on checkwinsize  shopt -s checkwinsize  [ "$PS1" = "\\s-\\v\\\$ " ] & ...

  7. 论SparkStreaming的数据可靠性和一致性

    转自: http://www.csdn.net/article/2015-06-21/2825011 摘要:眼下大数据领域最热门的词汇之一便是流计算了,而其中最耀眼的无疑是来自Spark社区的Spar ...

  8. Hash表的表大小

    hash表的出现主要是为了对内存中数据的快速.随机的访问.它主要有三个关键点:Hash表的大小.Hash函数.冲突的解决. 这里首先谈谈第一点:Hash表的大小. Hash表的大小一般是定长的,如果太 ...

  9. 关于用Spine制作骨骼动画的步骤

    步骤: 1.打开spine. 2.新建一个空项目. 3.点右边Tree下的Images模块,导入在自己的切片素材和原整图. 4.把原整图拖到场景中,点右下角Color改变原图的颜色,方便后面对照. 5 ...

  10. 关于Java获取文件路径的几种方法

    第一种:File f = new File(this.getClass().getResource("/").getPath()); System.out.println(f);  ...