搭建KeystoneJS(未完待续)

序言:
为啥要写这篇文章:
仅仅是因为这个框架让我了解和学习了很多其他额外的东西,不吐不快。
最近一直在寻找一个简单方便的模板框架,了解了众多nodejs的blog 和 cms 框架,
如:
calypso,ghost, wordexpress, netlify-cms 电脑里装了一大坨各类项目。 
纠结来纠结去,感觉KeystoneJS更具有特色。

calypso, wordexpress 说到底依赖wordpress的phpserver,并且wordpress 异常难用
ghost git上目前最火的cms项目,十分简洁高大上,theme目前还是太少
keystone 他特别的地方是,前端代码完全交给你创造,吼吼,可能起点比较其他高了一丢丢。
但是做过wordpress,你会发现这是多么难得。

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

Demo:https://tobeone.herokuapp.com/home

列个提纲

安装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做的单页面应用。十分的方便。

image

解读一下目录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',

然后就可以https://localhost:3001/ 了。

猜你喜欢

转载自my.oschina.net/xmqywx/blog/1804846
今日推荐