针对express新version,通过Node.js, Express, Ejs, Mongodb搭建一个简单的web应用。可实现用户的查看和增加。...

本文来自于看了 工具猫的  “从零开始搭建Node.js, Express, Ejs, Mongodb服务器”这篇文章之后,针对工具的版本的不同,对代码进行了一些自己的改动。

这是我的第一篇博客,写的有不好之处,烦请见谅。

1.安装工具,搭建环境

这里我就不赘述了。直接引用别人的安装搭建环境的步骤就好,如果遇到java版本,环境变量等的问题,请自己百度谷歌之。

1.1安装node

这很容易,进入Node.js官方网站,点击绿色的大Install按钮,它会自动检测你的系统并给你一个正确的安装文件的下载。(如果没有,点击Download按钮选择你需要的下载)。运行安装程序,这样就好了。你已经装上了Node.js,和NPM(Node包管理器)可以让你很容易的安装各种有用的包到Node里。

  • 打开一个终端窗口
  • cd进入一个你想存放你的测试App的目录,比如C:\>cd NodeJS_Project

1.2安装express

此时在有了node之后,我们需要安装express,

这是一个把Node从一个原始的应用变成一个更像我们平时使用的Web服务器的框架。我们需要从Express开始,因为我们需要它提供的scaffolding功能。我们现在输入这个命令:

npm install -g express。这样Express就被正确的安装到我们的Node里了,并且已经设为全局可用的。你会在命令行窗口看到一堆输出,大部分是http 304和GET请求,这是正常的。Express应该已经装好并可用了。

1.3用express创建项目

我们使用express和Ejs来实现出来express和node的数据。现在在命令行输入:(-e就是加入了Ejs的support)。

这个时候,我们已经利用了express工具新建了一个项目。

1.4编辑依赖项

进入到新建的项目nodeTest01中,我们可以看到有一个package.json的文件。打开它可以看到有如下依赖项:

我们要加入对mongodb 和monk的依赖。改完之后,文件所示:

1.5安装依赖项

定义好了依赖之后,在项目的目录下,运行命令:npm install。那么项目就会根据我们的package.json文件安装项目所需要的依赖的module。

运行完这个命令之后,您的项目的文件夹下面应该会新建node_modules这个文件夹,里面放的就是刚要安装的依赖的工具。

 对于express4.X版本,在当前目录输入npm start命令,启动项目。

回车之后如下:,然后在浏览器输入:http://localhost:3000/,显示如下:

2.实现一个简单的应用。

原文中有实现一个helloworld。我这里就直接跳过了,想要看helloworld实现的朋友可以去原文“从零开始搭建Node.js, Express, Ejs, Mongodb服务器”中学习。

 2.1安装mongodb,实现本地的数据库的运行。

我们先关掉文本编辑器,回到命令行窗口。先用浏览器,打开http://mongodb.org/,下载Mongo。点击主菜单里的下载链接,找到适合你的系统的版本。对于64位win8,下载64-bit *2008R2+版本。下载后是个zip文件,解压到c:\mongo或者c:\program files\mongo或者随便什么地方,这不重要。我们把数据保存在我们的nodeTest01目录里。

在nodeTest01里面新建一个文件夹,文件夹命名为:data。

后在命令行窗口中进入你的mongodb安装目录的bin目录里,输入:

  • mongod –dbpath C:\NodeJS_Projects\nodeTest01\data          

(C:\NodeJS_Projects\nodeTest01\data)是我的工程目录path

看到如下图命令,说明你的数据库已经在我们nodeTest01项目下面启动了,开始工作,嗯,服务器开始运行。:

现在你需要另外打开一个命令行窗口,进入mongo目录的bin目录中,输入

  • mongo

 提示如下:

2.2创建一个数据库

在mongodb的命令行中,输入:use nodeTest01, 这个时候我们就创建了一个叫nodeTest01的数据库,并转到这个数据库中,以便进行对数据库的下一步操作。

现在我们给这个数据库插入添加一些初始的数据:

这里插一句,mongodb是以json作为数据格式的。

在mongo的窗口中,输入:

  • db.usercollection.insert({ "username":"testuser1", "email":"testuser1@testdomain.com" })

db就是刚创建的数据库nodeTest01,usercollection就是我们的表。

然后我们可以用命令:

  • db.usercollection.find().pretty()来输出刚插入的数据

在mongo窗口中输入:

newstuff = [{ "username" : "testuser2", "email" : "testuser2@testdomain.com" }, { "username" : "testuser3", "email" : "testuser3@testdomain.com" }]
db.usercollection.insert(newstuff);

 

用来多插入几行数据。

2.3将数据库和我们的web项目连接起来

在index.js里面添加如下几行代码:

这几行会告诉app我们需要连接MongoDB,我们用Monk来负责这个连接,我们数据库位置是localhost:27017/nodeTest01。

然后再在inde.js里面加入如下代码:

router.get('/userlist', function(req, res, next) {
    
    var collection = db.get('usercollection');
    collection.find({}, {}, function(e, docs) {
        res.render('userlist', {
            "userlist": docs
        });
    });
});

 

这段代码的意思是,当浏览器访问/userlist路径的时候,我们会读取db里面的数据。我们读取usercollection,做一个查找,返回的数据保存在docs变量中。一旦我们读取到了内容,就调用render来渲染userlist模板页面,把获取到的docs变量作为模板引擎中的userlist变量传递进去。这时我们就需要调用views目录下面的userlist.ejs
我们在views目录下新建userlist.ejs,然后在这个文件里面写入以下内容:

<!DOCTYPE html>
<html>
<head>
<title>USERLIST</title>
<link rel=’stylesheet’ href=’/stylesheets/style.css’ />
</head>
<body>
<h1>Userlist</h1>
<ul>
<%
for(var i in userlist){
%>
<li><a href="mailto:<%=userlist[i].email%>"><%=userlist[i].username%></a></li>
<% } %>
</ul>
</body>
</html>

保存文件,重启node服务器。希望你还记得怎么重启。打开浏览器,访问http://localhost:3000/userlist,你应该能看到这样的界面:

2.4实现从网页端往数据库里面写入数据

注意此时的添加时post的service,所以我们在routes的index.js里面输入如下代码:

router.get('/newuser', function(req, res, next) {
res.render('newuser', { title: 'Add New User' });
});

router.post('/adduser', function(req, res, next) {
     // Get our form values. These rely on the "name" attributes
        var userName = req.body.username;
        var userEmail = req.body.useremail;
         // Set our collection
        var collection = db.get('usercollection');

         // Submit to the DB
        collection.insert({
            "username" : userName,
            "email" : userEmail
        }, function (err, doc) {
            if (err) {
                // If it failed, return error
                res.send("There was a problem adding the information to the database.");
            }
            else {
                // If it worked, set the header so the address bar doesn't still say /adduser
                res.location("userlist");//重定向
                // And forward to success page
                res.redirect("userlist");
            }
        });
});

 

 然后在views的目录下面新建一个文件newuser.ejs.

输入如下代码:

<!DOCTYPE html>
<html>
<head>
<title>Add User</title>
<link rel=’stylesheet’ href=’/stylesheets/style.css’ />
</head>
<body>
<h1><%= title %></h1>
<form name="adduser" method="post" action="/adduser">
<input type="text" placeholder="username" name="username" />
<input type="text" placeholder="useremail" name="useremail" />
<input type="submit" value="submit" />
</form>
</body>
</html>

 

 

3– 下一步

现在开始,你拥有无限的可能。你可以看看Mongoose, 另一个处理MongoDB数据库的Node包。它比Monk更大一些,功能也更丰富。你还可以看看Stylus,一个Express的CSS引擎。你可以Google一下Node Express Mongo Tutorial,看看接下来的内容。好好学习,天天向上。

我希望这篇教程能够有所帮助,我写这个是因为当我开始学习的时候我真的很需要这样的东西,但是又真的找不到。如果你已经看到了这里,非常感谢!

在学习的过程中,非常感谢下面这些大牛们提供的教程,幻灯片,视频,和tweets。

关于作者

Christopher Buecheler is an autodidact polymath, which is an incredibly pretentious way of saying that he’s a jack of all trades who didn’t like college. By day he’s a front-end developer for a small San Francisco startup. By night he’s a popular novelist, with four books released. He also is an award-winning amateur mixologist who writes cocktail articles for Primer Magazine and runs a cocktail blog, and he brews beer on occasion. He follows the NBA avidly and the NFL casually (and sometimes glances at MLB). He lives in Providence, Rhode Island, with his awesome French wife and their two cats. He is trying to learn French but wishes he could just download it from the Matrix.

改自:http://www.unfish.net/archives/772-20131207.html

 

转载于:https://www.cnblogs.com/Aptenk/p/6758047.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个系统其实是出于学习nodejs的目的而改写的系统。 原来的系统前端使用了extjs4.2.1,后端使用了PHP5.4和ZEND框架开发,后台数据库是用mongodb2.2.2。 我抽离出了原来系统中的账户管理,角色管理,菜单管理,权限管理这4个部分, 我想这4个部分,基本上所有的系统都会用到。具有一定的普遍性。所以将这4个部分用nodejs改写了。 该系统目前使用模块有express,ejs,connect-mongo,mongodb,express-partials,connect-flash,fibers,wind等 其实wind模块这次系统中没有使用。可以将它排除出去。我是出于学习wind的目的,才加入这个模块的。 本来准备使用wind模块,是为了实现同步的目的,由于后来改用了fibers模块之后,就没有使用它。这里说明一下 不是fibers要比wind好,而是我暂时不能理解wind,或则是说对wind的研究不够吧。 众所周知nodejs是推崇异步模式。但是这个系统是从php过来的,而php的代码是同步模式的写法,所以为了在改写的过程中 希望 1是代码改动最少 2是同步写法更加适合思维习惯。而且代码可读性高的目的,用到了fibers。 这个系统的源代码中有些js文件里保留了一些原来的PHP代码,这是出于代码对比的目的。 是让大家了解原来的php代码是怎么实现的,用nodejs之后是如何改写的。通过对比,大家会发现 其实通过使用fibers之后,几乎两者是一模一样的。 还有源代码中还保留了一些被注释掉的函数,有些是用到了wind,有些是用到了fibers,有些是直接异步的写法。 这些内容都是在开发过程中我不断尝试后的产物。我花了1周的时间才实现一个递归的调用,而且还是同步的方式。 到目前为止,我还不能理解在异步模式下实现递归调用函数。比如说源代码中有个函数getMenuTree,菜单下面可能有子菜单, 子菜单的下面可能还有菜单。所以是一个递归的过程。我现在是同步的写法实现了这个函数,如果有人能够提供异步写法实现的递归函数并 emai给我,我不胜荣幸。 在使用本系统之前,必须要安装nodejs 0.10.10,mongodb2.2.2,python2.7.5至于安装的方法请googel解决。 将源代码下载之后,解压到某个目录下,比如说d:\nodejs\umav4simple目录。 进入到那个目录, a)运行以下命令 npm install express npm install ejs npm install connect-mongo npm install mongodb npm install express-partials npm install connect-flash npm install fibers npm install wind 尽管在源代码中已包含了这些模块,但是最好还是要重运行一遍。 因为有些模块可能需要重的编译。 比如说fibers模块,我在window下运行npm install fibers的时候编译了一个win32-ia32-v8-3.14 而在linux下重编译了linux-ia32-v8-3.14。所以说根据操作系统的不同,可能会有一些不同。 以免造成想不到的错误。 b)打开settings.js,并且将你的mongodb的设置改写并保存。 c)运行node app.js或则node cluster.js 如果没有提示错误的话,那么就说明环境配置成功了。 d)通过以下的URL可以在mongodb中追加一些数据,不过只能运行一次。否则会重复追加数据。 浏览器上输入 http://localhost:3000/admin/index/install 做完之后, 浏览器上输入http://localhost:3000/ 就通过用户名admin 密码adminadmin进行登录,并使用这个系统了。
信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古以来的短板,有效的提升管理的效率和业务水平。传统的管理模式,时间越久管理的内容越多,也需要更多的人来对数据进行整理,并且数据的汇总查询方面效率也是极其的低下,并且数据安全方面永远不会保证安全性能。结合数据内容管理的种种缺点,在互联网时代都可以得到有效的补充。结合先进的互联网技术,开发符合需求的软件,让数据内容管理不管是从录入的及时性,查看的及时性还是汇总分析的及时性,都能让正确率达到最高,管理更加的科学和便捷。本次开发的医院后台管理系统实现了病房管理、病例管理、处方管理、字典管理、公告信息管理、患者管理、药品管理、医生管理、预约医生管理、住院管理、管理员管理等功能。系统用到了关系型数据库中王者MySql作为系统的数据库,有效的对数据进行安全的存储,有效的备份,对数据可靠性方面得到了保证。并且程序也具备程序需求的所有功能,使得操作性还是安全性都大大提高,让医院后台管理系统更能从理念走到现实,确确实实的让人们提升信息处理效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值