• 基于nodejs的开源CMS博客搭建-keystone篇


    现在前端搭建一个CMS有很多选择,可以用php,不过听说php马上也考虑使用vue了。基于php的有wordpress,typora等,都是很成熟的cms。
    其它的还有静态博客,如hexo,jekyll,敲一敲命令,就可以部署到github或者阿里云上面。

    当然我们可以选择node来作为我们开发的动力,这里又有很多开源的基于node的CMS可以选择了

    1 node的框架

    express
    koa
    thinkjs 360开发的node框架,有点类似thinkphp 可以直接写async和awaite 支持ts
    sails.js
    阿里的egg
    hapi

    今天我们要讲的是keystone,仓库在这里 https://github.com/keystonejs/keystone

    官网在这里 http://keystonejs.com/

    2 好看的demo

    http://www.sydjs.com/
    http://makeandbuild.com/

    3 安装

    1. 首先安装node和mongodb

    2. 安装keystone-generaotr
      npm install -g generator-keystone

    3. 安装yeoman
      npm install -g yeoman

    4. 创建新目录
      mkdir test
      cd test

    5. 生成
      yo keystone

    6. 启动
      node keystone
      打开浏览器的3000端口你就可以看到你的项目了

    4 目录结构

    |--lib
    |  定制的库和代码
    |--models
    |  程序的数据库模型
    |--public
    |  公开的静态文件 (css、js、images等)
    |--routes
    |  |--api
    |  |  程序的api控制器
    |  |--views
    |  |  程序的视图控制器
    |  |--index.js
    |  |  初始化程序的路由和视图
    |  |--middleware.js
    |  |  为路由定制的中间件
    |--templates
    |  |--includes
    |  |  通用的 .jade 组件放这里
    |  |--layouts
    |  |  基础 .jade 布局放这里
    |  |--mixins
    |  |  通用的 .jade mixins放这里
    |  |--views
    |  |  程序的视图模板
    |--updates
    |  数据组装和迁移脚本
    |--package.json
    |  给npm的项目配置
    |--web.js
    |  启动程序的主脚本
    
    

    5 设置参数

    如果你学过express 那么这些参数都很简单

    有3种方式配置keystone的参数

    1. keystone.init( object )
    2. keystone.set(key, object)
    3. 在.env环境中配置 仅有部分配置项支持

    env参数 影响缓存已编译模板
    views 放程序视图模板的路径

    5.1 设置模板引擎

    	'views': 'templates/views',
    	'view engine': '.hbs',
    	'custom engine': handlebars.create({
    		layoutsDir: 'templates/views/layouts',
    		partialsDir: 'templates/views/partials',
    		defaultLayout: 'default',
    		helpers: new require('./templates/views/helpers')(),
    		extname: '.hbs',
    	}).engine,
    

    5.2 mongodb的设置

    如果你的Mongodb在阿里云上或者在其他主机上,需要自定义,因为默认是localhost
    MONGO_URI=mongodb://your-server/database-name

    5.3 https服务器参数

    可以选用nginx或者node提供的https服务器
    如果选择keystone提供额,需要设置下面的参数
    ssl
    ssl key 指向SSL秘钥的路径
    ssl cert 指向ssl证书的路径
    ssl port 启动ssl服务器的端口,默认为3001

    5.4 配置文件.env不要上传到你的代码仓库

    mongo process.env.MONGO_URI || "mongodb://localhost/your-db"

    5.5 配置管理界面参数 - 富文本编辑器

    wysiwyg 所见即所得

    keystone.set('wysiwyg additional options', {
        external_plugins: {
            'image':'http://bhaltair.oss-cn-shanghai.aliyuncs.com/tinyMCE/plugins/image/plugin.min.js'
        },
    	selector: "textarea",  // change this value according to your HTML
    	plugin: 'textpattern',
    	textpattern_patterns: [
    		{start: '*', end: '*', format: 'italic'},
    		{start: '**', end: '**', format: 'bold'},
    		{start: '#', format: 'h1'},
    		{start: '##', format: 'h2'},
    		{start: '###', format: 'h3'},
    		{start: '####', format: 'h4'},
    		{start: '#####', format: 'h5'},
    		{start: '######', format: 'h6'},
    		{start: '1. ', cmd: 'InsertOrderedList'},
    		{start: '* ', cmd: 'InsertUnorderedList'},
    		{start: '- ', cmd: 'InsertUnorderedList'}
    	]	
    	
    })
    

    5.6 用户认证参数

    cookie secret 浏览器cookies的加密秘钥,最好设为一个长长的随机字符串
    session store 默认存在内存中,你可以设置为mongo 或者conncet-redis

    6 使用pm2部署你的本地应用的远程服务器

    设置你的云服务器和github的ssl登录
    设置你本地主机到你的云服务器的ssl登录
    配置pm2的.echosystem.config.js
    pm2 deploy

  • 相关阅读:
    饿了么P7级前端工程师进入大厂的面试经验
    前端程序员面试的坑,简历写上这一条信息会被虐死!
    这次来分享前端的九条bug吧
    移动端开发必会出现的问题和解决方案
    创建一个dynamics 365 CRM online plugin (八)
    创建一个dynamics 365 CRM online plugin (七)
    创建一个dynamics 365 CRM online plugin (六)
    创建一个dynamics 365 CRM online plugin (五)
    使用User Primary Email作为GUID的问题
    怎样Debug Dynamics 365 CRM Plugin
  • 原文地址:https://www.cnblogs.com/bhaltair/p/6939634.html
Copyright © 2020-2023  润新知