Clouda介绍
Clouda是由百度开发的基于nodejs的Javascript开发框架,主要为移动端设计,运行性能和兼容性都比较好。
可以从这里获得源码: https://github.com/brandnewera/sumeru
官方网站: http://cloudajs.org/
安装与运行
由于Clouda是基于nodejs的框架,所以试用前首先要安装nodejs。
nodejs可以从这里下载: http://nodejs.org/download/
此外,Clouda使用MongoDB作为本地数据库,计算机还需要安装MongoDB。
MongoDB可以从这里下载: http://www.mongodb.org/downloads
接下来安装Clouda就比较简单了,使用一条简单的命令即可搞定:
npm install -g sumeru
然后创建一个项目:
sumeru init ./testpro
运行该项目:
cd myproject
sumeru start
开发实战
下边利用Clouda开发一个RSS阅读器,本文只列出核心代码,具体项目源码可以参考https://github.com/brandnewera/clouda-examples/tree/master/SpiderNews 然后将对应文件替换为文中代码即可。
externalPublishConfig.js (本段代码实现获取RSS内容的功能)
var iconv = require('iconv-lite');
var extpubConfig = {}
extpubConfig['pubnews'] = {
geturl : function(params){
return 'http://blog.csdn.net/rss.html?type=Home&onlytitle=1';
},
resolve : function(originData){
data = iconv.decode(originData,'utf-8');
var reg = /<item>[\s\S]*?<title>(.+?)<\/title>[\s\S]*?<guid>(.+?)<\/guid>[\s\S]*?<\/item>/img;
var arr = [];
data.replace(reg, function(a,b,c){
arr.push({title:b,link:c});
});
var resolved = {
topnews: arr
}
return resolved;
},
fetchInterval : 6 * 1000,
buffer : true
}
module.exports = extpubConfig;
news.js (本段代码实现对数据的输出)
sumeru.router.add({
pattern: '/news',
action: 'App.news'
}
);
sumeru.router.setDefault('App.news');
App.news = sumeru.controller.create(function(env, session){
var view = 'news';
var getNews = function(){
session.news = env.subscribe('pubnews', function(newsCollection){
var obj = newsCollection.getData()[0];
session.bind('newsBlock', {
'topNews' : obj['topnews']
});
});
};
env.onload = function(){
return [getNews];
}
env.onrender = function(doRender){
doRender(view, ['push','left']);
};
});
运行结果
使用体验
Clouda采用了MVC模式来实现web开发,在保证良好规范的前提下也比较容易上手,并且支持在前台页面中编写后端代码,这个跟Angular有点相似。
本人根据实际编程以及个人喜好,列举一下Clouda比较赞的一些功能:
1、接近完美的MVC开发模式
2、model的validation机制
3、对model集合的封装:collection
4、trunsition特效实现
5、流畅易用的touch操作
6、内置数据的订阅与发布
最后,由于Clouda是基于nodejs的,并且数据库用的MongoDB,性能和速度上没有任何问题,但凡事都有两面性,这样写死的绑定也限制了开发者采用其它数据库的可能性,如果能通过配置来修改这些绑定就比较完美了。
作者:朱会震