序言:

为啥要写这篇文章:

仅仅是因为这个框架让我了解和学习了很多其他额外的东西,不吐不快。

最近一直在寻找一个简单方便的模板框架,了解了众多nodejs的blog 和 cms 框架,

如:

calypso,ghost, wordexpress, netlify-cms 电脑里装了一大坨各类项目。

纠结来纠结去,感觉KeystoneJS更具有特色。

calypso, wordexpress 说到底依赖wordpress的phpserver,并且wordpress 异常难用

ghost git上目前最火的cms项目,十分简洁高大上,theme目前还是太少

keystone 他特别的地方是,前端代码完全交给你创造,吼吼,可能起点比较其他高了一丢丢。

但是做过wordpress,你会发现这是多么难得。

接下来就是记录一下我研究Keystone的整个过程,和该框架关系并不大。

列个提纲

部署到heroku

注册使用MongoLab云database

使用cloudinary云服务存图片

注册使用mailchimp邮件系统

安装keystone

安装方法可以看官网。

准备工作,需要Node + MongoDB ,确保你的电脑里可以切换几个node版本,万一你运行不起来,就呵呵了。

最好安装一个node 版本管理工具

npm install -g i

或者 Mac系统的可以安装brew,然后通过brew 安装nvm

brew install nvm

这里我我补充一下,看github上该项目 以及出来了4.0版本,有很多重大的改动。

npm install --save keystone[@next](https://my.oschina.net/u/223423)

算了还是直接干这个最快的办法,去找demo:

git clone https://github.com/JedWatson/keystone-demo.git

cd keystone-demo

npm install

了解keystone以及如何编写

这个是不大好形容滴。 首先得会nodejs,然后就是express框架,会一个其中的模板。

当然keystone更强大的地方在于他还可以不依赖,框架自身的express框架,你完全可以自己单独用个koa啥的框架。

目前是用jade的模板,属于后端渲染页面,当然你可以做一个前后端分离的页面。但是我觉得意义不大,目前阿里也在回归到react render seaver,假如不是app类,不是前端业务项目,前后端分离就过于执念。

当然这个项目本身后台管理系统就是用的react + redux做的单页面应用。十分的方便。

解读一下目录route 和 templates 最好能相互对应,方便以后维护。 里面的代码还是清晰可见的。在router里面,使用res.locals往前端发送数据。

目录models是 要在设计之前,定义好你要的字段,和需要的业务。数据结构都需要你事先想好定义好在这个目录里面,貌似对开发人员的要求又有点提高了。:)

public文件夹是一些静态资源文件,比如js css。css可以配置是用less 还是 sass。

建议还是稍微再阅读一下官网的文档,方便理解,代码的作者提倡看一下源码。:)其实我说的也是废话。作为一个平时只写页面的前端来说,可能需要提前掌握的东西实在太多。

配置HTTP2

一开始我认为他当时为啥没有考虑HTTP2, 因为express server自身是不支持http2, 后来研究了该项目的很多关闭的bug,已经后来的代码提交记录。结合这源码,发现代码里是有考虑的

try {

// Use spdy if available

https = require('spdy');

} catch (e) {

https = require('https');

}

不知道为啥目前没在文档里提到,只需要安装

npm install spdy -s

下面介绍一下我本地生成证书,配置HTTPS的过程

~ openssl genrsa -out privatekey.pem 1024

~ openssl req -new -key privatekey.pem -out certrequest.csr

~ openssl x509 -req -in certrequest.csr -signkey privatekey.pem -out certificate.pem

我都放在了 keys这个文件夹

'ssl key': 'keys/privatekey.pem',

'ssl cert': 'keys/certificate.pem',

部署到heroku

这个项目keystonejs 的github上提到了一个东西,Heroku。一开始真滴不知道干什么的。后来google了一下,哇塞,不错,==免费==的云服务啊!!。。

相当方便,主要是方便到了连上传代码都那么自在。

首先下载一个 Heroku,然后注册一下 CLI(OSX) 首先全局登录

heroku login

这里就是说一下nodejs项目的部署过程,相当的方便 只需要在你当前的git项目目录下

heroku create

//然后push

git push heroku master

//最后

heroku open

然后你会发现远程分支就会有两个。 下次你的git分支有更新,只需要在你提交完你的分支之后。 执行

git push heroku master

其他还有很多操作比如切换分支发布,比如定义系统变量,比如查看发布log等等。还是去看文档喽:) Document

注册使用MongoLab云database

因为Keystonejs使用的MongoDB,so 在heroku整个database, 这一步当时没有按照Heroku提供的方式来:(

我是直接去了官网 重新注册了个账户,然后选择的AWS的服务。数据库说实话国内访问是略微慢了一点。==免费==!!! 然后注意需要创建一个用户,然后你就可以自己copy一下你的数据库地址去使用了。

将相关信息填到你的根目录下的keystone.js init方法里面 'mongo'

使用cloudinary云服务存图片

cloudinary这个==免费==的服务器,其实也提供了很多云服务,我选择了他们的Media Cloud

弄完一系列之后,Dashborad上你会看到你的Account Detail。将相关信息填到你的根目录下的keystone.js init方法 里面,'cloudinary config'。

如何在代码里面使用cloudinary,只需要在项目目录里该model里面把需要上传img的字段定义为CloudinaryImage。

Post.add({

image: { type: Types.CloudinaryImage },

content: {

brief: { type: Types.Html, wysiwyg: true, height: 150 },

extended: { type: Types.Html, wysiwyg: true, height: 400 },

},

});

注册使用mailchimp邮件系统

因为该CMS一开始就说到了可以发邮件。那么它里面也配置了mailchimp一只大猩猩。

将相关信息填到你的根目录下的keystone.js init方法 里面,'mandrill api key'

总结

总结:后面有些新的东西我还没具体研究,只能说作为工具可以使用了,搭建起来了,每个新事物都有其精彩的地方。

KeystoneJS我感觉介于单纯的MVC 和 完善的CMS 之前的框架。他把能够自定义 和想去 自定义的东西给让你做决定。

最大的痛点,想去用他,首先你得是个程序员。。:)

我打算把这个keystonejs的demo继续做下去,边做边学习。

之后我会补充一下结合graphql的使用。

keystone java,搭建KeystoneJS相关推荐

  1. C++|Java混合实验-java搭建get方法靶场,Qt发送请求获取数据

    目录 背景 演示 java web源码 Qt端源码 背景 因为最近想进一步学习http协议,想从QNetworkAccessManager中,但访问其他网站获取的数据,太过于复杂,不便于个人的实验,在 ...

  2. Java搭建Spark程序,提交到Yarn

    文章目录 Java搭建Spark程序,提交到Yarn测试 Demo Java搭建Spark程序,提交到Yarn测试 Demo pow文件依赖 <?xml version="1.0&qu ...

  3. cucumber java 搭建_intelj idea cucumber java搭建教程

    intel j idea cucumber java搭建教程 Cucumber 是一个能够理解用普通语言 描述的测试用例的支持行为驱动开发(BDD)的自动化测试工具,用Ruby编写,支持Java和.N ...

  4. Java 搭建 Selenium 环境

    使用 java 搭建 selenium 环境,进行开发,步骤如下 1.下载浏览器对应版本驱动 笔者这里以谷歌浏览器为例 先确定谷歌浏览器版本,打开浏览器,点击帮助.关于Google Chrome 查看 ...

  5. java搭建阿里云服务器环境(java环境+mysql+tomcat)和部署 JavaWeb 项目到云服务器(十分详细)

    文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源. 购买一系列的东西 其实就是花钱买块区域,服务器,域名,云解析,花了好多money... 一. ...

  6. java 搭建企业应用框架_溯源微服务开发体系:一位Java开发者的转型思考

    作者丨赵钰莹 简单来说,微服务是将大型单体应用程序和服务拆分为数个甚至数十个微服务,可扩展单个组件而不是整个应用程序堆栈,从而满足服务等级协议.然而,这个过程涉及很多问题需要解决,比如拆分原则.容量规 ...

  7. java 搭建论坛_GitHub - NieShaoLiang/bbs: 基于spring boot的java论坛系统

    JavaBBS社区 简介 1.JavaBBS是一款使用Java编写的简易社区系统. 2.采用前后端分离的机制实现.前台项目通过http访问RESTFulAPI获取信息渲染页面. 3.项目技术分层明显, ...

  8. jfinal java搭建_Eclipse快速搭建Jfinal web应用 (一)

    JFinal简介JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restful.在拥有Java语言所有优势 ...

  9. java 搭建 web服务器 socket实现

    [写在前面] 云计算的第n个java作业,开始一直不懂为什么老师一直让我们写java web的小demo,不应该是hadoop啥的直接上框架嘛.后来慢慢了解到,其实java web 的一些内容确实是云 ...

最新文章

  1. 某程序员以阿里为原型写小说!阿里员工:每件事都是真的!网友:建议拍成电视剧!...
  2. 工业交换机是什么?矿用交换机采用的是工业级交换机吗?
  3. 【HDU - 5886】Tower Defence(树的直径,思维,dp)
  4. 苹果面试8大难题及答案
  5. 凑钱1,2,5凑20元钱有多少可能 共有哪几种可能
  6. 任正非:华为鸿蒙将比安卓快 60%;小米回应主题侵权;VS Code 1.36发布​ | 极客头条...
  7. Android:文件读写.
  8. matlab设置ga算法,matlab遗传算法ga函数
  9. 通​过​C​a​c​t​i​监​控​w​i​n​d​o​w​s​资​源
  10. Idea2017 破解版下载注册步骤(含注册码),亲测可用
  11. 机器学习深度学习面试题——Python基础知识
  12. 跨站请求伪造(CSRF)
  13. 热门小说排行榜(JSP实现)
  14. 高等教育中的人工智能市场现状研究分析报告-
  15. python中将奇数和偶数分列
  16. 【翻译】Computer Vision for Autonomous Vehicles:Problems,Datasets and State-of-Art
  17. EXCEL的水文数据四舍六入修约
  18. 高级程序员必会的程序设计原则 —— 墨菲定律及防呆设计
  19. Java 生成帮助文档
  20. 全球3D打印机行业一流服务品牌

热门文章

  1. 华中科技大学通报:取消张某某研究生导师资格,调离教师岗位,停止其教师资格...
  2. 算法工程师当前选哪个方向好?
  3. 太鸡冻了!我用 Python 偷偷查到暗恋女生的名字
  4. 520这天,我突然意识到,她根本配不上我这么聪明的男人
  5. 轻松理解汉诺塔问题(图解java描述)
  6. go-kit微服务学习-官方示例stringsvc学习
  7. Linux之复制、移动文件及目录命令
  8. 汇编语言 执行push和执行pop区别 栈顶的变化范围
  9. 约瑟夫死亡游戏算法问题
  10. 浅谈图分析商业化的机遇与挑战,你注意到了吗?