我做了一个mvc框架的模版,基于Express.js的,代码用CoffeeScript写,然后会自动编译成JavaScript。我做这个东西是希望它就像完形填空一样,想做web app的人不用写太多代码,把制定的内容填到指定的空白就可以了。
用到的一些东西:
- CoffeeScript:号称是“更合理的JavaScript”。就是一种脚本语言,写完了可以逐行编译成JavaScript。
- Express.js:Node,js上最火的web框架
- CoffeeKup:基于CoffeeScript的模版引擎。Express.js需要一个模版引擎来渲染出html文件。
- async:node.js的一个插件,用来执行同步代码。(node本身是异步的)
能实现什么功能呢:
- 能做一个web app
- 能连MySQL数据库
- 能轻松做ajax的API
安装
代码放到了GitHub上,本身是一个例子,我尽量多做了注释帮助大伙理解。下载代码:
git clone https://github.com/xizhang/coffee-mvc
运行:
- 打开一个终端,运行:“cake watch”。这是实时监视CoffeeScript代码,把它编译成JavaScript
- 打开另外一个终端,运行:“node server.js”。
设置数据库参数。我例子里的是MySQL数据库:
- 编辑 coffee_server/config.coffee 设置带”DB_”的参数
- 导入db_create.sql
说明
模版里大部分文件是不用动的,具体请看我这份洋文说明: http://coffeemvc.appinmotion.com/guide
如果不了解mvc或者node.js是啥,先百度一下咯。简单说明一下其他的:
- 如果你想添加一个页面,就把controller和view分别添到 coffee_server/controller和coffee_view目录。
- 每个method是controller里面的一个函数。当计算完毕后,调用那个叫render的回调函数,就可以渲染页面了。——你也可以选择不渲染页面,只发送数据。这时候它就会变成一个Web Service。
- 静态文件放在file_client的文件夹里,比如图像啊,css啥的。
结论
其实呢,我觉着MVC什么的可能并不适合Node.js。因为Node的本质和长处是异步处理,所以必须借助async之类的模块才能做同步的事情,看那个example controller就知道了,很麻烦。其次呢,你们觉着CoffeeScript真能提高效率吗?反正喜欢和不喜欢的人都有。
总之,反正这个模版我写出来了,想用的人就试试吧。
开发阶段,我都是直接 coffee app.coffee 或nodemon app.coffee
不把coffeescript 编译成javascript
这。。。这么长时间以来,我完全不知道有这个功能啊。这就是和别人交流的必要性吧哎。
我用这个来监视文件改动,自动重新编译 coffee --watch --compile .
是啊,可以从中获知别人的经验