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;
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,性能和速度上没有任何问题,但凡事都有两面性,这样写死的绑定也限制了开发者采用其它数据库的可能性,如果能通过配置来修改这些绑定就比较完美了。