【框架實踐之路】為什麼要開發 Codekart 框架
兩年前,在被php的$符號和字串處理折磨得半夜罵娘之後,我義無反顧地決定:珍愛生命,遠離php。
之後一直在尋找一門“完美的語言”,先後接觸了Lisp、python、java、Ruby。Lisp幾乎在語法和思想上達到了完美,但卻由於過於小眾和開發環境的不完善,導致基本找不到工作,也只能作為業餘時間的寫一些有趣的東西了。python的強制縮排,說實話相當於告訴程式設計師:嘿,你個SB!到底會不會排版?我一直堅定的認為,充分相信程式設計師給於程式設計師最大的自由,而不是害怕程式設計師犯錯誤替程式設計師做出決定的語言更加Geek,難道不是麼?java的語法像老奶奶的裹腳布,又臭又長,各種庫臃腫龐大,我可不想到哪兒都揹著一個沉重的工具箱,我希望的是一把瑞士軍刀,或者一件能製作工具的工具。Ruby各方面比較平衡,看起來還比較適合。
就在我做好準備投入Ruby的懷抱時,由於專案需要寫了一些javascript程式碼,才對這個一直被我忽略的語言有了充分的認識和了解。如果說寫js有什麼體會,那就是“自由”!你只需要專注於功能本身的實現,不用花大量時間和精力去跟語言本身的特徵打交道。舉個反例,我的入門語言是C++,當時做MFC開發的感覺就是自己簡直是一個弱智,巨大的挫折感每天都在打垮自己的意志,因為大量的時間被耗費在瞭解和突破語言的限制、擔心記憶體洩露和程式出錯上面,戰戰兢兢如履薄冰,甚至半夜驚醒。後來寫js之後發現,之前在c++裡寫的大量程式碼,居然是在實現另一們語言本身的“高階”特徵!
當Node.js帶著精簡優雅的設計和優越的效能撲面而來時,我感覺自己像墜入了愛河。關於Node.js的優缺點,可以看我在君鑑上的文章專輯:Node.js技術研究。在這個文章大大地將node誇讚了一番,極盡諂媚馬屁之能事。
接下來就是長時間高強度的瞭解Node.js了。在基本閱讀了手冊之後,我開始寫了一些程式碼,比如按照教程寫了靜態檔案伺服器,和websocket聊天程式。之後開始尋找一個開發框架,當然第一個映入眼簾的就是大名鼎鼎的Express。簡單嘗試之後,驚歎於Express的url路由真的十分強大!但是也學是因為自己長時間習慣於php開發,總覺得Express“不像”是一個框架,因為Express還需要自己組織程式的模組化,需要自己進行檢視和處理程式的分離,等等。
於是,我決定不借助任何框架從零開始重寫君鑑,並在重寫的過程中開發一個MVC模式的框架。我認為這是一個大工程,將要耗費我大量的時間。
事實上,得益於語言本身的“高階”,重寫並沒有花掉我太多的時間。一路暢快的完成開發後,一個粗略的框架基本完成了。由於之前寫php時一直使用codeigniter,我把這個新開發的框架命名為 Codekart,kart的意思是卡丁車,Codekart 是小巧精簡、高效能、功能完善的框架,使用Codekart開發web程式就像駕駛卡丁車一樣暢快而且“好玩兒”。Codekart已經幫你出色的完成了下面的工作:
- 高效能 MVC 開發框架
- 具備客戶端快取支援的靜態檔案伺服器
- view頁面、binary二進位制檔案處理、api請求等 url 路由
- view頁面繼承支援、配置生成化及模板資料解析
- js、css、html 的模組化按需載入,併合並壓縮
- Tool常用工具箱,例如模板解析和流程控制工具等等
- 精簡而強大的前端 js 常用方法庫
框架的設計思想和目錄結構一部分借鑑了codeigniter,將app與framework分開,在此基礎上再將靜態所有靜態檔案歸類到static目錄,大致如下:
│
├─ app ┐ //工程檔案目錄,程式開發工作在此進行
│
├─ framework ┐ //框架檔案目錄
│
├─ static ┐ //靜態檔案目錄
│
詳細資料夾結構,在這裡:Codekart目錄結構。
由於篇幅所限,這裡不能一一介紹。下面就選取框架比較突出的功能:web頁面模組化配置。
例如: framework/view/html.js 內容如下:
//web頁面頂級頁面定義
exports.stuff = {
tpl:{html:'html'}, //頁面的tpl模板檔案列表
tpl_pre:[], //待用的tpl檔案列表 會被加入js檔案裡面待用
//儲存在app/view/tpl資料夾 格式{note_list:'abc/abc'}
less:'html', //頁面的css模板檔案列表
csslib:[], //css庫檔案,在static/csslib目錄下
js:[
'functions',
'json',
'cookie',
'jq-extend',
'tmpl',
'pro'
], //頁面的js模板檔案列表
jslib: 'jquery-2.0.3.min' //js庫檔案列表,在static/jslib目錄下
};
var website = require_config('website');
/**
* tpl模板資料獲取函式
* @param callback 返回模板資料
*/
exports.data = function(callback){
var that = this
, req = this.request; //Codekart擴充套件的request請求物件
callback({
title: website.name,
time: req.time,
website: website
},{
website: website
});
};
exports.stuff 物件及為web頁面的配置,exports.data函式為頁面模板資料的獲取函式。你也可以方便的進行頁面的繼承。更多內容可以訪問 Codekart文件手冊。
目前為止,Node.js仍然是一個年輕的但卻充滿活力的伺服器解決方案。國內的使用者包括阿里巴巴、一些大資料處理和一些遊戲公司使用,但它的適用環境卻遠不止做遊戲後端和大資料介面。用Node可以讓網站更加“實時”,效能更加突出,可以處理海量的資料請求,Codekart的開發初衷是為了在享受高效能的同時,讓網站開發更加快速和便捷。
你可以在如下地方下載或瞭解 Codekart,歡迎在Github上star和fork我!
主頁: http://codekart.jojoin.com/
使用手冊: http://docs.codekart.jojoin.com
Github: https://github.com/myworld4059/Codekart
歡迎提出建議或者BUG反饋!
相關文章
- 為什麼要建立一套統一開發框架體系框架
- 為什麼我要寫自己的框架?框架
- 企業為什麼需要UI快速開發框架UI框架
- Koala Framework是什麼?我為什麼要寫這個框架?Framework框架
- 什麼是框架?為什麼說 Angular 是框架?框架Angular
- 什麼是快速開發框架框架
- 為什麼推薦Kestrel作為網路開發框架框架
- Android元件化開發實踐(一):為什麼要進行元件化開發?Android元件化
- Python開發中,為什麼Django框架很重要?PythonDjango框架
- 什麼是前端開發?為什麼要學前端開發?前端
- 程式老鳥:我為什麼喜歡敏捷開發框架敏捷框架
- 為什麼要使用框架框架
- 什麼是框架?(最佳實踐、專案總結)框架
- 為什麼選擇Guice框架GUI框架
- 公司為什麼需要建立一套統一的開發框架?框架
- 為什麼 Web 開發人員需要學習一個 JavaScript 框架?WebJavaScript框架
- 為什麼 Django 框架持續統治著 Python 開發世界Django框架Python
- 松本行弘為什麼要開發Ruby
- Android 快速開發系列 ORMLite 框架最佳實踐AndroidORM框架
- 為什麼選擇Cynefin框架? – zwischenzugs框架
- 為什麼我不再用 .NET 框架框架
- 我為什麼不喜歡框架框架
- 為什麼我不再使用MVC框架?MVC框架
- 為什麼要寫《機器學習實踐應用》這本書機器學習
- 力軟敏捷開發框架幫您開發什麼軟體敏捷框架
- 快速開發框架為什麼得到越來越多企業的認同?框架
- 敏捷開發框架有哪些?都有什麼特點敏捷框架
- 為什麼要虛擬化,為什麼要容器,為什麼要Docker,為什麼要K8S?DockerK8S
- 免費框架那麼多,為什麼選擇付費的框架框架
- 為什麼越來越多的企業開始使用軟體快速開發框架?框架
- 寫自己的CSS框架Part1:為什麼需要CSS框架CSS框架
- 面試官: 你為什麼使用前端框架?面試前端框架
- 為什麼說開源的COLA既是架構也是框架?架構框架
- 什麼是框架框架
- 為什麼要學習大模型應用開發?大模型
- 學Flask框架有什麼用?為什麼學習Flask?Flask框架
- Django快速開發實踐:Drf框架和xadmin配置指北Django框架
- 基於 MVP 的 Android 元件化開發框架實踐MVPAndroid元件化框架