两年前,在被php的$符号和字符串处理折磨得半夜骂娘以后,我义无反顾地决定:珍爱生命,远离php。javascript
以后一直在寻找一门“完美的语言”,前后接触了Lisp、python、java、Ruby。Lisp几乎在语法和思想上达到了完美,但却因为过于小众和开发环境的不完善,致使基本找不到工做,也只能做为业余时间的写一些有趣的东西了。python的强制缩进,说实话至关于告诉程序员:嘿,你个SB!到底会不会排版?我一直坚决的认为,充分相信程序员给于程序员最大的自由,而不是惧怕程序员犯错误替程序员作出决定的语言更加Geek,难道不是么?java的语法像老奶奶的裹脚布,又臭又长,各类库臃肿庞大,我可不想到哪儿都背着一个沉重的工具箱,我但愿的是一把瑞士军刀,或者一件能制做工具的工具。Ruby各方面比较平衡,看起来还比较适合。php
就在我作好准备投入Ruby的怀抱时,因为项目须要写了一些javascript代码,才对这个一直被我忽略的语言有了充分的认识和了解。若是说写js有什么体会,那就是“自由”!你只须要专一于功能自己的实现,不用花大量时间和精力去跟语言自己的特征打交道。举个反例,个人入门语言是C++,当时作MFC开发的感受就是本身简直是一个弱智,巨大的挫折感天天都在打垮本身的意志,由于大量的时间被耗费在了解和突破语言的限制、担忧内存泄露和程序出错上面,战战兢兢如履薄冰,甚至半夜惊醒。后来写js以后发现,以前在c++里写的大量代码,竟然是在实现另外一们语言自己的“高级”特征!css
当Node.js带着精简优雅的设计和优越的性能扑面而来时,我感受本身像坠入了爱河。关于Node.js的优缺点,能够看我在君鉴上的文章专辑:Node.js技术研究。在这个文章大大地将node夸赞了一番,极尽谄媚马屁之能事。html
接下来就是长时间高强度的了解Node.js了。在基本阅读了手册以后,我开始写了一些代码,好比按照教程写了静态文件服务器,和websocket聊天程序。以后开始寻找一个开发框架,固然第一个映入眼帘的就是大名鼎鼎的Express。简单尝试以后,惊叹于Express的url路由真的十分强大!可是也学是由于本身长时间习惯于php开发,总以为Express“不像”是一个框架,由于Express还须要本身组织程序的模块化,须要本身进行视图和处理程序的分离,等等。前端
因而,我决定不借助任何框架从零开始重写君鉴,并在重写的过程当中开发一个MVC模式的框架。我认为这是一个大工程,将要耗费我大量的时间。java
事实上,得益于语言自己的“高级”,重写并无花掉我太多的时间。一路畅快的完成开发后,一个粗略的框架基本完成了。因为以前写php时一直使用codeigniter,我把这个新开发的框架命名为 Codekart ,kart的意思是卡丁车,Codekart 是小巧精简、高性能、功能完善的框架,使用Codekart开发web程序就像驾驶卡丁车同样畅快并且“好玩儿”。Codekart已经帮你出色的完成了下面的工做:node
框架的设计思想和目录结构一部分借鉴了codeigniter,将app与framework分开,在此基础上再将静态全部静态文件归类到static目录,大体以下:python
│ ├─ app ┐ //工程文件目录,程序开发工做在此进行 │ ├─ framework ┐ //框架文件目录 │ ├─ static ┐ //静态文件目录 │
详细文件夹结构,在这里:Codekart目录结构。jquery
因为篇幅所限,这里不能一一介绍。下面就选取框架比较突出的功能:web页面模块化配置。c++
例如: framework/view/html.js 内容以下:
//web页面顶级页面定义 exports.stuff = { tpl:{html:'html'}, //页面的tpl模板文件列表 tpl_pre:[], //待用的tpl文件列表 会被加入js文件里面待用 保存在app/view/tpl文件夹 格式{note_list:'abc/abc'} less:'html', //页面的css模板文件列表 csslib:[], //css库文件,在static/csslib目录下 js:[ 'functions', 'json', 'cookie', 'jq-extend', 'tmpl', 'pro' ], //页面的js模板文件列表 jslib: 'jquery-2.0.3.min' //js库文件列表,在static/jslib目录下 }; var website = require_config('website'); /** * tpl模板数据获取函数 * @param callback 返回模板数据 */ exports.data = function(callback){ var that = this , req = this.request; //原生的request请求对象 callback({ title: website.name, time: req.time, website: website },{ website: website }); };
exports.stuff 对象及为web页面的配置,exports.data函数为页面模板数据的获取函数。你也能够方便的进行页面的继承。更多内容能够访问 Codekart文档手册。
目前为止,Node.js仍然是一个年轻的但却充满活力的服务器解决方案。国内的使用者包括阿里巴巴、一些大数据处理和一些游戏公司使用,但它的适用环境却远不止作游戏后端和大数据接口。用Node可让网站更加“实时”,性能更加突出,能够处理海量的数据请求,Codekart的开发初衷是为了在享受高性能的同时,让网站开发更加快速和便捷。
你能够在以下地方下载或了解Codekart:
Github: https://github.com/myworld4059/Codekart
主页: http://codekart.jojoin.com/
使用手册: http://docs.codekart.jojoin.com
欢迎提出建议或者BUG反馈!