MENU 服务的 91在线在线啪永久地址:
我们通过拥抱变化创造
360°的品牌价值__
简体
简体中文 English

尚品中国签约泛能网,构建泛能网数字化品牌官网升级

类型、:人工费自动化 了解更多

[北京网站制作]基于Node.js、Express和Jscex开发的ToDo网站示例

的来源:尚品中国国| 内型:网页百科全书| 期限:2011-10-24

基于Node.js、Express和Jscex开发的ToDo网站示例

Jscex的主要使用场景是“JavaScript异步编程”,不过并没有限制是跑在浏览器还是服务器端。最近Node.js很火热,也刚发布了原生的Windows版,不少同学会用它来做一些网站这样的小程序。目前用Node.js开发网站最著名的框架是Express,使用起来也是比较容易的。前段时间看到CNodeJS社区的一篇文章,有同学将一个Python写的ToDo列表网站移植到了Node.js上,我为了推广Jscex,就fork了这个项目,将其修改为基于Jscex的版本,大伙儿可𒊎以来比较一下。当然这个网站过于简单,我也正在寻找更合适的项目。()

51CTO推荐专题:Node.js专区

JavaScript不是个没能堵赛形态的文学语言,如此几大类API都会设计的为异步,这关于服务培训器的伸缩杆性和加盟商端网络的加载失败力都是益处,不在流程网站上就会变故障 各个故障 了。随后在ToDo例子中的一两个非常简单的操作变量,毕竟所需查询网的数据系统库,要编成带去调的整体:
  1. exports.index = function (req, res, next) {  
  2.     db.query('select * from todo order by finished asc, id asc limit 50'function (err, rows) {  
  3.         if (err) return next(err);  
  4.         res.render('index', { todos: rows });  
  5.     });  
  6. }; 
db自变量代替实际操作做法MySQL数据资料库,它的query做法传到sql(有可能还会现技术参数)并给出一家调整数学函数公式,代替提醒脚本错误或重返了解没想到。在调整中我们都必需分析err需不还要有着,一旦有着便加载next评估架构图“没有响应了”。4个异步实际操作做法都必需这样这般,你会发现一旦在这一了解后还有其它家了解,则还还要开展一些嵌套和err分析。4个工作数学函数公式是这样这般,这也是异步编写程序的烦恼图片之六:不好开展大一统的系统非常工作,工作编号往往还要离心分离在各地,一极大心就成了“野系统非常”,还非常难隐患排查表而来。 我将ToDo的网站简单化地Jscex化打了个下。第一步让MySQL的查询网就可以连结Jscex(libjscex.mysql.js):
  1. exports.jscexify = function (db) {  
  2.     db.queryAsync = function () {  
  3.         var _this = this;  
  4.  
  5.         var args = [];  
  6.         for (var i = 0; i < arguments.length; i++) {  
  7.             args.push(arguments[i]);  
  8.         }  
  9.  
  10.         var delegate = {  
  11.             onStart: function (callback) {  
  12.  
  13.                 args.push(function (err, result) {  
  14.                     if (err) {  
  15.                         callback("failure", err);  
  16.                     } else {  
  17.                         callback("success", result);  
  18.                     }  
  19.                 });  
  20.  
  21.                 _this.query.apply(_this, args);  
  22.             }  
  23.         };  
  24.  
  25.         return new Jscex.Async.Task(delegate);  
  26.     }  
通常情况下总的来说,将这个异步接口协议给Jscex化并不须要那 多代码是什么怎么用(最重要的的其实是都是onStart指数数学数学变量)。在这里近30行代码是什么怎么用,中仅大个部分是从而认可“会变长”主要参数表,所以queryAsync指数数学数学变量会继承取用时的全部主要参数表,补上这个callback,再去取用query指数数学数学变量使用价值。此时此刻,便需要去改编以后的index等操作指数数学数学变量了(controllerstodo.js),举个例子:
  1. exports.index = toHandler(eval(Jscex.compile("async"function (req, res) {  
  2.  
  3.     var todos = $await(db.queryAsync('select * from todo order by finished asc, id asc limit 50'));  
  4.     res.render("index", { todos: todos });  
  5.  
  6. }))); 
toHandler方程的功效,是将一名“展开req和res,取到Task”的方程,二极管封装成标准单位的“展开req、res和next二个参数表”的工作方程,并打造统一的的报错工作:
  1. var toHandler = function (asyncFunc) {  
  2.     return function (req, res, next) {  
  3.         var task = asyncFunc(req, res);  
  4.         task.addListener(function () {  
  5.             if (task.status == "failed") {  
  6.                 next(task.error);  
  7.             }  
  8.         });  
  9.         task.start();  
  10.     }  

我在todo.js里保留了原有各个处理函数的实现,感兴趣的朋友可以对比一下它们之前的差别。可惜的是,由于ToDo实在过于简单,Jscex的优势并没有表现出来太多。例如,每个处理程序中只有一个MySQL查询,没有判断和循环,更别说为了充分利用IO并发能力,从而组合多个异步函数了。因此,我最近也一直在寻找更复杂一些的示例,不过似乎用Express的开源网站并不多见,我几乎都想自己写一个了。目前感觉Nodepad似乎还算不错,接下来可能会对它下手。

ToDo网站依赖Express,ejs和MySQL驱动,同时我把Jscex作为添加为它的子模块。如果您要克隆一份ToDo的代码把玩一番,可以:

  1. > git clone git://github.com/JeffreyZhao/todo.git  
  2. > cd todo  
  3. > git submodule init  
  4. > git submodule update  
  5. > npm install express ejs mysql  
  6. > node server.js 
从在开始了,他会在InfoQ简体中文站在发表过一些产品对Jscex的短文标题,即有对搜索器上方JavaScript发展,有在服务质量器端根据Node.js发展的玩法。可能您当下还可能就是有所问题,列如为有什么要便用快消失的eval数学数学函数,eval和Jscex.compile数学数学函数不许装封变得吗?其实是在好看我的短文标题并对Jscex拥有了核心知道之前,就是挖掘哪些都是以“传统式阳光”来面对Jscex出现导致的错解。Jscex的手工制作方法事实上“勇于尝试”,因此在JavaScript异步类库以经多如牛毛的现状下,不知咋样让它超常发挥。()
来源声明:本文章系尚品中国编辑原创或采编整理,如需转载请注明来自尚品中国。以上内容部分(包含图片、文字)来源于网络,如有侵权,请及时与本站联系(010-60259772)。
TAG标记:
如果您的网站可以增加转化次数并提高客户满意度,该怎么办?

预约专业咨询顾问沟通!

*尚品专业顾问将尽快与您联系

免责声明

极其感激您访问浏览企业的平台。在您便用本平台开始之前,请您缜密读本声明范文的全部的保险条款。 1、所有网站个大部分的内容来出自手机网络,必须有一个特定的功效的到的个大部分短文和画面著作权应属原著者,所有网站引用仅限于小伙伴深造和交流电,切忌主要用于任何人餐饮业活跃。 2、永久域名不负责用户的因实用这部分資源对属于自己和个别人引致丝毫风格的损害或输出。 3、本书面声明函未涉及面的间题参照一个國家的相关的英文一个國家法律法律规定法律法律规定规定法律法律规定法律法律规定规定规定,当本书面声明函与一个國家的一个國家法律法律规定法律法律规定规定法律法律规定法律法律规定规定规定矛盾时,以一个國家的一个國家法律法律规定法律法律规定规定法律法律规定法律法律规定规定规定是以。 4、假若侵入了您的非法财产权,请您直接与.我的,.我的会在一是时候删除图片相应方式!

联系方式:010-60259772
电子邮件:394588593@qq.com

现在就与专业咨询顾问沟通!

  • 山东省保障电話 400-700-4979
  • 武汉服務咨询热线 010-60259772
信息保护中请放心填写
在线咨询

免责声明

十分感激您访问共享让我们的小程序。在您选用本小程序以前,请您认真查看本书面声明的一切条款英文。 1、所有网站部位内部来来源系统,包含到的部位软文和圖片邻接权专属于原著者,所有网站男体艺术仅限于人们學習和联席会,千万不要中用一点商业圈活动内容。 2、99热不添加用户的因选用这类材料对自我和个别人引致不管什么模式的折损或真实伤害。 3、本严正声明范文未在拆迁中遇到的的问题参照国有关中国发律发律规定,当本严正声明范文与国中国发律发律规定发生冲突时,以国中国发律发律规定准确。 4、若是 伤害了您的允许功能,请您直接与咱们,咱们会在首要耗时去除相关游戏内容游戏内容!

联系方式:010-60259772
电子邮件:394588593@qq.com