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
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
能夠很方便地把現在開發的項目立刻部署到外網,確實是一個很吸引人的地方??蓪嶋H操作過程中,并不是那么容易。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. 百度 Cloudahttp://cloudajs.org/
2. 論壇http://forum.cloudajs.org/forum.php
3. Clouda API 文檔:doc 版本的,比上官網查看 API 更方便、好用一些http://download.csdn.net/detail/lvye1221/6752053
總結
以上是生活随笔為你收集整理的Clouda 之我见的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu常用软件安装,持续更新中。。
- 下一篇: 如何修复硬盘的分区表