介绍
Keystone是以Express和MongoDB为基础搭建的开源的Node.js CMS和web应用程序平台。
Keystone在官网上声称:在Node.js中,用Keystone搭建数据驱动的网站、应用程序和API是最容易的。
之所以出此狂言,背后还是有料的,Keystone自带以下功能:
- 内置Express.js和MongoDB
- 动态路由
- 实用的数据库域类型
- 自动生成管理员界面
- 基于数据模型的表单处理
- 会话管理和认证功能
我觉得keystone最牛逼的地方就是根据你定义的模型自动帮你实现后台管理界面,创建、管理、编辑和删除等,这得省掉很多功夫了。这样实现一个网站只要定义model和写前端代码就好了。
这应该是前端猴子接外包的一个利器吧。
安装准备
- 安装node.js 0.10+
- 安装mongodb v2.4+
- 安装yeoman
npm install -g yo
- 安装keystone生成器
npm install -g generator-keystone
开始
- 创建项目目录
mkdir my-keystone
- 进入项目目录
cd my-keystone
- 生成代码
yo keystone
代码生成器会问你几个问题,比如项目名称,是否内置博客、相册和联系表单,是否添加User模型,添加管理员账户密码 - 安装依赖
npm install
- 运行项目
node keystone
打开http://localhost:3000 在浏览器查看
通过http://localhost:3000/keystone 打开后台管理
Model
1 | var keystone = require('keystone'), |
这是官网中给出的例子,一个文章的model,详情
不得不提一下,keystone的图片类型是Types.CloudinaryImage
,需要购买CloudinaryImage的服务,如果你不想用Cloudinary的服务的话,keystone还提供了Types.LocalFile
,这样我们就可以把image改成:
1 | image: { type: Types.LocalFile, dest: 'public/upload', |
这里format
是指针对后台管理用的
如果你想使用CDN服务的话,可以对图片文件夹进行了CDN同步,然后修改prefix
为你的CDN提供商提供的前缀。
路由与视图
路由配置文件:routes/index.js
中间件:routes/middleware.js
1 | var keystone = require('keystone'), |
配置
keystone提供了很多可配置项,你可以随心所欲地根据自己的需求配置,要了解Keystone支持的更多选项,请参见配置指南。
配置需要修改的文件是keystone.js
项目结构
1 | |--lib |
缺点
keystone强大的自动生成的管理后台,也是给我使用限制的地方,支持增删改查、上传文件等基础功能,但是在一些业务定制下却有失灵活性,或许是我研究不透,目前官方也没有给出对后台管理定制的文档,后续我将研究下如何深度定制管理后台,如果可行的话再来分享。
参考
中文文档:http://keystonejs.com/zh/docs/
项目地址:https://github.com/keystonejs/keystone