nodejs web开发入门: Simple-TODO Nodejs 实现版

标签: 代码 学习 | 发表时间:2011-07-07 07:32 | 作者:suqian Aleafs
分享到:
出处:http://cnodejs.org/blog

起因

看到simple todo的各种python版本实现, 我也来凑凑热闹…
既然已经有这么多python版本了, 我就对比实现了一个Simple-TODO的nodejs版本: Node TODO, 模版和樣式全部copy自web.py版本.

Source Code && Demo

http://ww3.sinaimg.cn/large/6cfc7910jw1diwdadumcwj.jpg

代码目录

目录还是很清晰的, public存放静态文件, views存放模版, controllers处理业务逻辑,
还有配置config.js, web主入口server.js

代码目录

使用到的第三方nodejs模块

  • express: Web框架, 目前nodejs使用最广泛的web框架
  • ejs: 模版渲染引擎, 用于生成动态内容
  • node-mysql: 纯javascript实现的mysql驱动, 无法安装任何mysql包依赖.

这3个模块都可以直接通过npm安装获得:

$ npm install express ejs mysql

开发过程记录

config.js

可配置的信息:
* 网站名称
* 监听端口号, 默认8080
* 数据库配置信息

如何访问数据库

config.js文件里面, 会使用一下方式保持着数据库的链接对象

var db = exports.db = new require('mysql').Client(db_options);
db.connect(function(err) {
    if(err) {
        console.error('connect db ' + db.host + ' error: ' + err);
        process.exit();
    }
});

这样我们就可以在别的地方直接使用db对象了

server.js

express可以帮我们默认实现了静态文件处理, cookie处理, 请求参数处理等事情, 只需要配置一下, 就可以使用上这些功能了.

var app = express.createServer();
app.use(express.static(__dirname + '/public', {maxAge: 3600000 * 24 * 30}));
app.use(express.cookieParser());
app.use(express.bodyParser());

同样, 需要配置模版渲染引擎为ejs

app.set("view engine", "html");
app.set("views", __dirname + '/views');
app.register("html", ejs);

看看views/index.html里面的一个最复杂的模版例子,
ejs最让我喜欢的是不用再学一套语法, 直接是内嵌js, 还是很容易读懂的

http://ww1.sinaimg.cn/large/6cfc7910jw1dix6f9kailj.jpg

URL Routing与Controllers

一个http请求过来, 由那个controller处理, express提供了简便的routing方式

app.get('/', todo.index);
app.post('/todo/new', todo.new);
app.get('/todo/:id', todo.view);
app.get('/todo/:id/edit', todo.edit);
app.post('/todo/:id/edit', todo.save);
app.get('/todo/:id/delete', todo.delete);
app.get('/todo/:id/finish', todo.finish);

如添加一条todo记录: HTTP GET /new, 将由todo.new方法处理,
代码逻辑包括了title参数有效性验证, 数据保存到数据库, http redirect:

exports.new = function(req, res, next) {
    var title = req.body.title || '';
    title = title.trim();
    if(!title) {
        return res.render('error', {message: '标题是必须的'});
    }
    db.query('insert into todo set title=?, post_date=now()', [title], function(err, result) {
        if(err) return next(err);
        res.redirect('/');
    });
};

更多的controller处理逻辑请查看/controllers/todo.js.

数据库初始化及启动Web进程

$ mysql xxx
$ source ~/todo/todo.sql
$ node server.js

有爱

可以看到, 无论是python的web开发, 还是nodejs, 我们以前对web的概念还是无需改变的.
都是我们熟悉的一些关键词:
http, request, response, html, template engine, url routing, MVC, GET, POST, MYSQL, Database…

不同的是, 这里只使用javascript就可以驱动着以上的一切.

希望本文对你有用 ^_^

您可能也喜欢:

nodejs: 真正的一份代码,到处运行

nodejs-post文件上传原理详解

如何提高NodeJS程序的稳定性

Node.js简单介绍并实现一个简单的Web MVC框架

nodejs异步IO的实现
无觅

相关 [nodejs web 开发] 推荐:

nodejs web开发入门: Simple-TODO Nodejs 实现版

- Aleafs - CNode社区
看到simple todo的各种python版本实现, 我也来凑凑热闹…. 既然已经有这么多python版本了, 我就对比实现了一个Simple-TODO的nodejs版本: Node TODO, 模版和樣式全部copy自web.py版本.. 源代码: https://github.com/fengmk2/todo. 在线demo: http://api.yongwo.de:3888. 目录还是很清晰的, public存放静态文件, views存放模版, controllers处理业务逻辑,. 还有配置config.js, web主入口server.js. 使用到的第三方nodejs模块. express: Web框架, 目前nodejs使用最广泛的web框架.

eclipse配置nodejs开发环境

- - CSDN博客云计算推荐文章
首先说明一下本人的开发环境,个人兴趣爱好问题,这边使用的很多环境都是基于Linux系统下做的,这次也不例外. 前提条件:NodeJs已经在系统中正确安装. 1、下载安装eclipse,地址: http://www.eclipse.org/downloads/. Eclipse Standard 版本即可. 2、安装nodeclipse插件:. 3、javascript编辑插件 -- VJET. 4、google V8插件(调试必备). 5、安装完成重启eclipse,配置node相关信息:. 在项目中新建hello.js文件,代码如下:. respose.end('世界你好. \n'); }).listen(8080,'192.168.2.112'); console.log("服务器已经启动,地址为:http://192.168.2.112:8080");.

Web开发入门(转载)

- linchanx - Starming星光社最新更新
Web应用的竞争异常激烈,开发难度也是入门容易做好很难,所以第一次开发的应用不成功是很正常的事情. 不过这正是一个积累的过程,反正你需要的只是电脑和少量服务器经费,所以多磨练几次,水平自然会提高. 2, 习惯阅读及查阅英文资料. 前沿信息基本源自美国,翻译的东西不及时,不全,很多水平不高,再加之中文原创资料毕竟很有限,因此是否能熟练地查阅英文资料决定了你获取信息的 及时性和质量. 另外习惯用英文思考,你才能更好地用英文表达自己碰到的问题,借力StackOverflow, ServerFault, Quora这些社区. 阅读原版书,常上英文程序员社区,并且把谷歌的默认界面语言调为英文,都是强迫自己使用英文的好办法.

web开发利器之grunt

- - CSDN博客Web前端推荐文章
grunt不难,它主要依赖的是nodeJS的npm包管理器,和一个JSON及一个JS文件,先说说npm包管理器,玩过nodeJS的对它应该都很熟悉,在这里我们只需要安装nodeJS即可(新版的nodeJS基本都集成了npm),至于nodeJS的安装可以 点这里,这这篇文章就不做详细介绍,安装完后打开命令管理器(nodeJS安装完后的终端)输入:. 在grunt中安装全局命令接口;. 然后说说JSON,确切的说应该是package.json,它主要用于安装grunt依赖的插件,和nodeJS的pakeage.json一样,在执行npm install时,它就会作为主入口,npm通过这JSON中的devDependencies去安装这些插件,具体的关于package大家可以 点击这里看看.

Spring MVC 与 web开发

- - 码蜂笔记
项目组用了 Spring MVC 进行开发,觉得对里面的使用方式不是很满意,就想,如果是我来搭建开发环境,我会怎么做. 下面就是我的想法,只关注于 MVC 的 View 层. 现在基本上都是用 ajax 来调用后台接口,拿到 json格式的数据再展示,有的人直接返回数据,却没有考虑异常的情况,我觉得返回的报文里必须包含表示可能的异常信息的数据和业务响应数据. 我定义了下面这个类来表示报文格式:. /** * 统一的 HTTP 响应格式. <br/> * code 为 "ok" 表示业务调用成功,否则是失败的错误码,如果有多个则以逗号分隔. <br/> * data 是业务数据,如果失败了则是 null.

也谈基于NodeJS的全栈式开发(基于NodeJS的前端后端分离)

- - TaoBaoUED
随着不同终端(pad/mobile/pc)的兴起,对开发人员的要求越来越高,纯浏览器端的响应式已经不能满足用户体验的高要求,我们往往需要针对不同的终端开发定制的版本. 为了提升开发效率,前后端分离的需求越来越被重视,后端负责业务/数据接口,前端负责展现/交互逻辑,同一份数据接口,我们可以定制开发多个版本. 这个话题最近被讨论得比较多,阿里有些BU也在进行一些尝试. 讨论了很久之后,我们团队决定探索一套基于NodeJS的前后端分离方案,过程中有一些不断变化的认识以及思考,记录在这里,也希望看到的同学参与讨论,帮我们完善. 最开始组内讨论的过程中我发现,每个人对前后端分离的理解不一样,为了保证能在同一个频道讨论,先就什么是”前后端分离”达成一致.

15 个开发者必备的Web开发工具

- wangdei - ITeye资讯频道
本文介绍15个非常优秀的Web开发工具. Firebug是Firefox下的一款开发类插件,现属于Firefox的 五星级强力推荐插件之一. 它集HTML查看和编辑、Javascript控制台、网络状况监视器于一体,是开发JavaScript、CSS、HTML和 Ajax的得力助手. Firebug如同一把精巧的瑞士军刀,从各个不同的角度剖析Web页面内部的细节层面,给Web开发者带来很大的便利. GIMP 是 GNU 图像处理程序(GNU Image Manipulation Program)的缩写. 包括几乎所有图象处理所需的功能,号称Linux下的PhotoShop. GIMP在Linux系统推出时就风靡了许多绘图爱好 者的喜爱,它的接口相当轻巧,但其功能却不输于专业的绘图软件;它提供了各种的影像处理工具、滤镜,还有许多的组件模块,对于要制作一个又酷又炫的网页按 钮或网站Logo来说是一个非常方便好用的绘图软件,因为它也提供了许多的组件模块,你只要稍加修改一下,便可制作出一个属于你的网页按钮或网站 Logo.

iOS客户端开发与Web前端开发

- - bang's blog
不知不觉做iOS客户端开发已经半年多了,了解到iOS客户端开发与Web前端开发的一些异同,写一下. 用户角度上看,客户端升级必须让用户手动下载整个新的安装包覆盖安装,而web的升级无需用户做任何事情. 开发角度上看,如果客户端有个小bug需要紧急修复,需要修复完后打包一个完成的安装包,给一个版本号,发布给用户升级. 而web只需要修改后台的某些文件,然后传到自己的服务器,用多快速的迭代开发方式都没问题. web没有版本兼容性问题,客户端这个问题就大了. iOS客户端用编译语言,web用脚本语言. 编译语言好处:很多错误编译期就知道,不用担心类似写错一个字母导致的问题. iOS客户端开发只能用XCode,无法选用自己喜欢的编辑器.

40+新鲜的WEB开发人员开发框架和工具

- - Jackchen Design 1984
对于现在很多WEB开发人员来说,项目的效率就是一切,因为时间就是金钱. 很多人都不在自己的模式里捣鼓研究了,而是用各种流行的框架和第三方平台去让项目更快的推进. 今天我们要分享给大家的就是一些新鲜的WEB框架和开发工具. 这些工具也是一些GEEK长时间的总结研究出的一套体系. 用框架的好处就在于,只要你是正确的架构就能不用担心太多自身的漏洞和BUG. And for the simple case, you can even add custom metadata to your docs with nothing but the command-line.. Koala is a GUI application for Less, Sass, Compass and CoffeeScript compilation, to help web developers to use them more efficiently.

Web应用程序的开发步骤

- xxg - 月光博客
  如今已进入了web2.0高速发展的互联网时代,各种互联网的Web应用程序如雨后春笋般出现. 那么作为一名Web开发人员,怎样去开发一款优秀的Web应用程序呢. 这个问题没有一个简单的答案,甚至那些教育机构都未必能清楚的知道. 所以,像大多数在这个领域里的web开发人员一样,我们只是通过去做,去实验才学会了这些. 没有人告诉我们如何去做,我们从给自己做点什么东西开始,学会如何开发web应用程序是在这个过程中的一个副产品. 这是学习任何语言的一个非常有效的方法.   Web应用程序与网站之间的区别.   首先,我要说明,开发一个web应用程序跟开发一个网站是不一样的. 虽然在总体上有很大相似之处,但开发它们所需要的时间有巨大的差别.