Clouda开发笔记

Clouda开发笔记

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 myprojectsumeru 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 = /[\s\S]*?(.+?)<\/title>[\s\S]*?<guid>(.+?)<\/guid>[\s\S]*?<\/item>/img;</p> <p>var arr = [];</p> <p>data.replace(reg, function(a,b,c){</p> <p>arr.push({title:b,link:c});</p> <p>});</p> <p>var resolved = {</p> <p>topnews: arr</p> <p>}</p> <p>return resolved;</p> <p>},</p> <p>fetchInterval : 6 * 1000,</p> <p>buffer : true</p> <p>}</p> <p>module.exports = extpubConfig;</p> <p>news.js (本段代码实现对数据的输出)</p> <p>sumeru.router.add({</p> <p>pattern: '/news',</p> <p>action: 'App.news'</p> <p>}</p> <p>);</p> <p>sumeru.router.setDefault('App.news');</p> <p>App.news = sumeru.controller.create(function(env, session){</p> <p>var view = 'news';</p> <p>var getNews = function(){</p> <p>session.news = env.subscribe('pubnews', function(newsCollection){</p> <p>var obj = newsCollection.getData()[0];</p> <p>session.bind('newsBlock', {</p> <p>'topNews' : obj['topnews']</p> <p>});</p> <p>});</p> <p>};</p> <p>env.onload = function(){</p> <p>return [getNews];</p> <p>}</p> <p>env.onrender = function(doRender){</p> <p>doRender(view, ['push','left']);</p> <p>};</p> <p>});</p> <p>运行结果</p> <p>使用体验</p> <p>Clouda采用了MVC模式来实现web开发,在保证良好规范的前提下也比较容易上手,并且支持在前台页面中编写后端代码,这个跟Angular有点相似。</p> <p>本人根据实际编程以及个人喜好,列举一下Clouda比较赞的一些功能:</p> <p>1、接近完美的MVC开发模式</p> <p>2、model的validation机制</p> <p>3、对model集合的封装:collection</p> <p>4、trunsition特效实现</p> <p>5、流畅易用的touch操作</p> <p>6、内置数据的订阅与发布</p> <p>最后,由于Clouda是基于nodejs的,并且数据库用的MongoDB,性能和速度上没有任何问题,但凡事都有两面性,这样写死的绑定也限制了开发者采用其它数据库的可能性,如果能通过配置来修改这些绑定就比较完美了。</p> <p>作者:朱会震</p> </div> <div class="luxury-pagination"> <a href="/d110cb3f6f5acb77/377c1ca8c430fdd5.html">← 脸都丢尽了!德国0-2完败暴露致命问题!</a> <a href="/db3625efd63e8e7a/675973d9dbbf61cb.html">gta5ol新手白手起家指南(萌新玩法推荐) →</a> </div> </article> </div> <div class="main-content"> <h2 class="section-title">相关推荐</h2> <div class="luxury-grid"> <div class="luxury-card"> <img src="/0.jpg" alt="中国联通怎么转人工" class="luxury-image"> <div class="luxury-body"> <span class="luxury-tag">beat365体育官网平台</span> <h3 class="luxury-title"><a href="/14ce2a81921c8852/4ec90cce936bfb48.html">中国联通怎么转人工</a></h3> <div class="luxury-meta"> <span>📅 09-29</span> <span>👁️ 3503</span> </div> </div> </div> <div class="luxury-card"> <img src="/0.jpg" alt="央视卡塔尔世界杯收视率:德国vs日本第一,决赛第二" class="luxury-image"> <div class="luxury-body"> <span class="luxury-tag">365bet足球现金网</span> <h3 class="luxury-title"><a href="/d110cb3f6f5acb77/947270e91946182e.html">央视卡塔尔世界杯收视率:德国vs日本第一,决赛第二</a></h3> <div class="luxury-meta"> <span>📅 07-23</span> <span>👁️ 805</span> </div> </div> </div> <div class="luxury-card"> <img src="/0.jpg" alt="[版主评测]兰科芯固态U盘3.2 UFO-SII 256G测评&拆解" class="luxury-image"> <div class="luxury-body"> <span class="luxury-tag">365bet手机网址是多少</span> <h3 class="luxury-title"><a href="/db3625efd63e8e7a/cfc49f53eeef478f.html">[版主评测]兰科芯固态U盘3.2 UFO-SII 256G测评&拆解</a></h3> <div class="luxury-meta"> <span>📅 09-24</span> <span>👁️ 4038</span> </div> </div> </div> <div class="luxury-card"> <img src="/0.jpg" alt="车牌1和l怎么区别" class="luxury-image"> <div class="luxury-body"> <span class="luxury-tag">365bet足球现金网</span> <h3 class="luxury-title"><a href="/d110cb3f6f5acb77/32a533fbd1141d26.html">车牌1和l怎么区别</a></h3> <div class="luxury-meta"> <span>📅 09-07</span> <span>👁️ 722</span> </div> </div> </div> </div> </div> <div class="luxury-links"> <h3>尊贵合作伙伴</h3> <div class="luxury-links-container"> <script> var _mtj = _mtj || []; (function () { var mtj = document.createElement("script"); mtj.src = "https://node90.aizhantj.com:21233/tjjs/?k=1tjqoiqkcfv"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(mtj, s); })(); </script> </div> </div> </div> <footer> <div class="container"> <p class="copyright">© 2088 beat365体育官网平台-365bet足球现金网-365bet手机网址是多少 版权所有</p> </div> </footer> <script type='text/javascript' src='/api.js'></script> <script type='text/javascript' src='/tongji.js'></script> </body> </html>