Clouda 之我见

1 前言

官方文档中已经介绍了基本部署和丰富的例子,而且很多网页也提交了关于 clouda 意义和作用的相关文章。所以本篇博客中的主要重点在于介绍博主在安装、使用、部署 clouda 中遇到的一些问题及解决办法,希望对大家有所帮助。

2 环境搭建

2.1 node.js

http://nodejs.org/

1. 无法打开下载的安装包

点击 INSTALL 按钮,提示“无法打开下载的安装包”。所以还是从 download 下载比较好

2. DOWNLOAD 的文件不能安装

直接下载 node.exe,就一个文件而已,发现下载的那个安装包只有1M,而实际的大小应该是有 5M,所以,应该是下载的文件错误。重新下载,确保文件大小正确后,再次安装即可。

2.2 MongoDB

http://www.mongodb.org/

1. 链接打开好慢

不知道是什么原因,官方 mongodb 网址的打开速度好慢好慢。我下载使用的是 32 位的 mongodb-win32-i386-2.4.8 也是等待了好久才下载下来的。本想传到 CSDN 资源中的,由于文件太大了不能上传,那读者自己慢慢下吧,可能晚上的时候速度稍微好一些。

2. 配置环境变量

将程序路径(例如:F:\Program Files\mongodb-win32-i386-2.4.8\bin) 加入到 path 目录,然后在某个盘符的根目录下创建如下路径 /data/db (例如 f:/data/db)。注意一定要在根目录下,而不是指当前路径下。

3. 启动 mongodb服务器

打开命令行窗口,进入上一步创建 data 文件夹的盘符,执行 mongod,启动服务器。

如果需要连接数据库,那么再打开一个新的命令行窗口,执行 mongo 即可

2.3 安装 clouda

启动 node.js 命令行,安装好 sumeru 工具:

npm install -g sumeru

详细参照 http://cloudajs.org/docs 中的步骤安装即可。

3 初识 clouda

3.1 学习第一个项目

http://cloudajs.org/docs/step1_getting_started

在上述官网地址有详细的步骤描述,这里主要介绍编程中遇到的想法及问题解决办法。第一感觉是访问创建的示例页面时有些小卡,或许是因为 debug 的缘故吧…

1. 访问地址 localhost:8080/debug.html/itworks,后面传递参数“itworks”代表什么意思呢?

通过查看文件夹目录,debug.html 文件位于 myproject/app 目录下,在从后来的示例中了解到:itworks 代表 sumeru.router 中添加的链接。

2. 类似 extjs 的目录管理方式

突然发现这里的 js 使用方式和 extjs 的项目管理路径方式很类似,因为 extjs 的目录管理结构也是 app 文件夹中建立了各种类。

3. 不能找到控制器

错误信息:"error when pubsub callback on line 84 Can NOT find a controller [null]" 忘记将 controller/package.js 中的文件替换成 'helloworld.js' 了。

无需重新启动服务器,随时修改文件,随时就可以看到效果,很不错。

3.2 练习聊天室项目

http://cloudajs.org/docs/step2_your_first_app

  1. 在 nodejs 命令行中创建 webchat 项目:sumeru init ./webchat
  2. 创建 Model message 时,发现每个大括号结尾处都有个分号;和 extjs model 定义类似,可以定义字段名称以及数据类型
  3. package.js 是定义好了项目访问地址的映射关系
  4. 超喜欢 "pub-message.js" 这种命名方式,但不喜欢左大括号和右小括号结合在黏在一起的方式
  5. 后面看不下去了,直接粘贴代码,先运行来看看
3.2.1 问题及解决
1. Error: ENOENT, no such file or directory 'F:\workspace\webchat\app\controller\itworks.js hall.js'

首先看到错误信息中包含了 'itworks.js' 文件,所以怀疑是 controller/package.js 中信息没有修改正确,发现文件中我是这样写的:

sumeru.packages(// 'itworks.js''hall.js')

删掉 "// 'itworks.js'" 这一行就可以了。看来 nodejs 不支持 "//" 这样 的注释方式呀。

2. 浏览器可以打开网页,但是从控制台中看到如下信息:error when pubsub callback on line 84 Can NOT find a controller [null]

演示地址写成 http://localhost:8080/ 正确写法应该是:http://localhost:8080/debug.html/hall

3.2.2 技术分析
  • 怎么为提交按钮关联事件响应的 
    在 controller/hall.js 中定义了提交消息的函数 submitMessage = function()

    那么怎么关联到按钮上的点击事件的呢?

    在 controller/hall.js 定义的 env.onready 函数中:

    Library.touch.on('.messageSubmit', 'touchstart', submitMessage);

    那么发现是根据元素的样式名进行绑定的。所以,我尝试在添加一个提交按钮:刷新后页面没有发生改变

    因为,每一次修改都需要重启服务器,所以刚才的修改没有生效,重启服务器就可以了。

  • 为什么会自动更新聊天信息 
    原来一直在不断地发送请求,向服务器请求数据。从关闭服务器时就可以看出来。

    通过 env 的定义消息通知量,以及 env 订阅消息。

    在 publish 中定义了 module.exports

    在 subscribe 定义了注册消息的步骤。

  • 聊天信息存储 

    所有操作的核心在于 session.messages,不管是 add, save destroy 均是以这个对象为准。

3.2.3 感受

好厉害,这样就实现了一个聊天室,真的在这个浏览器发送信息,另外一个浏览器就自动刷新了最新信息。好棒!

4 部署到百度BAE

能够很方便地把现在开发的项目立刻部署到外网,确实是一个很吸引人的地方。可实际操作过程中,并不是那么容易。http://developer.baidu.com/

4.1 不靠谱的个人信息注册

写个人简介,发送手机注册,邮箱链接确认注册,就成功了。

申请了,需要等待一周的结果,所以,本来打算先本地来开发一个项目,但是有些无从下手。找到了官方文档中的技术支持栏目,加入了 QQ 群,就发现了如下通过论坛来开通账号部署功能的方式。

4.2 申请 BAE3.0 公测项目

当时笔者申请的时候,还是公测时期,现在已经不是公测了,不知道能否用这种方式来开通账号。

论坛开通地址位于:http://forum.cloudajs.org/forum.php?mod=viewthread&tid=16开通原则是每天下午5点左右统一开通,挺快捷的。

4.3 部署项目

依次参照 http://cloudajs.org/docs/upload_to_BAE_3.0 说明一步一步部署。

我比较喜欢用 git,在创建版本库的时候就选择 git。

刚开始使用的命令行来提交,但是尽管已经执行了远程 push 的命令,但是没有在 BAE 管理器中“发布最新版”的按钮依然不可以。可能是 git 命令行的命令写错了,如下所示,如果有读者知道原因,请在留言中告知,谢谢。

git push https://git.duapp.com/appidl0tf8e104p master

这里是用 git 界面提交版本的详细流程http://developer.baidu.com/wiki/index.php?title=docs/cplat/bae/start#GIT.E6.96.B9.E5.BC.8F

4.4 不能安装 TortoiseGit?

无法通过 Windows Installer 服务安装此安装程序包。您需要安装带有更新版本的 Windows Installer 服务的 Windows Service Pack

http://www.microsoft.com/zh-cn/download/confirmation.aspx?id=8483

下载新的更新补丁然后重启之后再次安装 tortoisegit 就 ok 了。

嘿嘿,注意安装完上面的版本后,安装下语言包哦,不然界面是全英文的。

4.5 用 TortoiseGit 提交出错

不知道是不是因为 BAE 关闭了公测的原因,反正现在是不能提交更新了。

Total 804 (delta 52), reused 0 (delta 0)fatal: The remote end hung up unexpectedlyfatal: recursion detected in die handlererror: RPC failed; result=22, HTTP code = 411Everything up-to-date

5 技术积累

5.1 handlebarsjs

handlebars 使用了模版,只要你定义一个模版,提供一个json对象,handlebars 就能吧json对象放到你定的模版中。关于详细视图页面中的标签语言介绍文档如下:

http://handlebarsjs.com/

5.1.1 each

就是将数组中的信息循环列举出来

<ul class="peoplelist">{{#each people}}<li>{{this}}</li>{{/each}}</ul>

{people: ["Yehuda Katz","Alan Johnson","Charles Jolley"]}

6 资料

1. 百度 Clouda

http://cloudajs.org/

2. 论坛

http://forum.cloudajs.org/forum.php

3. Clouda API 文档:doc 版本的,比上官网查看 API 更方便、好用一些

http://download.csdn.net/detail/lvye1221/6752053

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值