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

标签: 代码 学习 | 发表时间:2011-07-07 15: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.

eclipse配置nodejs开发环境

- - CSDN博客云计算推荐文章
首先说明一下本人的开发环境,个人兴趣爱好问题,这边使用的很多环境都是基于Linux系统下做的,这次也不例外. 前提条件:NodeJs已经在系统中正确安装. 1、下载安装eclipse,地址: http://www.eclipse.org/downloads/. Eclipse Standard 版本即可.

Geolocation和Web Sockets基于NodeJs的实战(2)

- - ria之家--RIA三部曲:jquery、ext、flex
上一篇教程明河讲解了一些NodeJs的知识点,这一篇教程将给大家讲解前端方面的知识点. Geolocation是html5中的主要内容,用于处理客户端的地理信息,特别在手持设备上有广泛的使用场景. Geolocation的简单的demo. (PS:demo中虽然实现了位置定位,但不能随着你的移动,坐标也发生变化,借助NodeJs的socket.io模块即可实现.

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

- - TaoBaoUED
随着不同终端(pad/mobile/pc)的兴起,对开发人员的要求越来越高,纯浏览器端的响应式已经不能满足用户体验的高要求,我们往往需要针对不同的终端开发定制的版本. 为了提升开发效率,前后端分离的需求越来越被重视,后端负责业务/数据接口,前端负责展现/交互逻辑,同一份数据接口,我们可以定制开发多个版本.

nodejs快速入门

- AreYouOK? - 淘宝数据平台与产品部官方博客 tbdata.org
主要介绍了一下node.js的发展, 现状, 安装, 使用.

NodeJS学习笔记

- - Web前端 - ITeye博客
今天开始学习NodeJS,在这里做个笔记,记录一下我的学习历程,也方便以后参考. Node.js® 是一个基于  Chrome V8 引擎 的 JavaScript 运行时. 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台.

Web开发入门(转载)

- linchanx - Starming星光社最新更新
Web应用的竞争异常激烈,开发难度也是入门容易做好很难,所以第一次开发的应用不成功是很正常的事情. 不过这正是一个积累的过程,反正你需要的只是电脑和少量服务器经费,所以多磨练几次,水平自然会提高. 2, 习惯阅读及查阅英文资料. 前沿信息基本源自美国,翻译的东西不及时,不全,很多水平不高,再加之中文原创资料毕竟很有限,因此是否能熟练地查阅英文资料决定了你获取信息的 及时性和质量.

Spring MVC 与 web开发

- - 码蜂笔记
项目组用了 Spring MVC 进行开发,觉得对里面的使用方式不是很满意,就想,如果是我来搭建开发环境,我会怎么做. 下面就是我的想法,只关注于 MVC 的 View 层. 现在基本上都是用 ajax 来调用后台接口,拿到 json格式的数据再展示,有的人直接返回数据,却没有考虑异常的情况,我觉得返回的报文里必须包含表示可能的异常信息的数据和业务响应数据.

web开发利器之grunt

- - CSDN博客Web前端推荐文章
grunt不难,它主要依赖的是nodeJS的npm包管理器,和一个JSON及一个JS文件,先说说npm包管理器,玩过nodeJS的对它应该都很熟悉,在这里我们只需要安装nodeJS即可(新版的nodeJS基本都集成了npm),至于nodeJS的安装可以 点这里,这这篇文章就不做详细介绍,安装完后打开命令管理器(nodeJS安装完后的终端)输入:.

NodeJS与Mysql的交互

- - CSDN博客推荐文章
把Mysql Module装到 NodeJS中.   JS脚本 mysqlTest.js. //加载mysql Module  .   //要创建的数据库名  .     //要创建的表名  . 作者:qxs965266509 发表于2013-8-17 9:47:35 原文链接. 阅读:0 评论:0 查看评论.