国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Cabloy-CMS:動靜結(jié)合,解決Hexo痛點問題

alin / 3385人閱讀

摘要:文章也不例外,只有提交進(jìn)入正常狀態(tài),才會進(jìn)行渲染。提交并預(yù)覽首頁文章頁部署實例與子域名支持多實例,實例與網(wǎng)站子域名一一對應(yīng),不同實例的數(shù)據(jù)完全隔離。

介紹 Cabloy-CMS是什么

Cabloy-CMS是基于CabloyJS全棧業(yè)務(wù)開發(fā)框架開發(fā)的“動靜結(jié)合”的CMS,可以快速構(gòu)建企業(yè)網(wǎng)站、博客、社區(qū)、商城等Web應(yīng)用。

在線演示

https://zhennann.com

特性

Cabloy-CMS受Hexo啟發(fā),采用“靜態(tài)+動態(tài)”的架構(gòu),彌補(bǔ)了Hexo許多功能上的不足,主要特性如下:

內(nèi)置多站點、多語言支持

不同語言可多帶帶設(shè)置主題

內(nèi)置SEO優(yōu)化,自動生成Sitemap文件

文章在線撰寫、發(fā)布

文章發(fā)布時實時渲染靜態(tài)頁面,不必整站輸出,提升整體性能

內(nèi)置文章查看計數(shù)器

內(nèi)置評論系統(tǒng)

內(nèi)置全文檢索

文章可添加附件

自動合并并最小化CSS和JS

JS支持ES6語法,并在合并時自動babel編譯

首頁圖片延遲加載,自動匹配設(shè)備像素比

調(diào)試便捷

架構(gòu) - 動靜結(jié)合 動態(tài)部分

Cabloy-CMS基于CabloyJS全棧業(yè)務(wù)開發(fā)框架,提供了強(qiáng)大的文章后臺管理系統(tǒng)。CMS當(dāng)中經(jīng)常變動的功能均通過“動態(tài)部分”實現(xiàn),并提供API供“靜態(tài)部分”調(diào)用。

靜態(tài)部分

Cabloy-CMS將“首頁”和“文章”等靜態(tài)元素實時渲染成靜態(tài)文件,既滿足了SEO的需求,同時也提升了訪問性能。

此外,“靜態(tài)部分”通過Ajax訪問“動態(tài)部分”提供的API,可實現(xiàn)豐富的頁面功能。

快速開始 安裝EggBorn
$ npm install -g egg-born
新建Cabloy項目
$ egg-born cabloy-cms --type=cabloy
$ cd cabloy-cms
$ npm i
安裝CMS模塊
$ npm i egg-born-module-a-cms
安裝CMS主題模塊
$ npm i egg-born-module-cms-themeblog
配置MySQL 測試環(huán)境

src/backend/config/config.unittest.js

  // mysql
  config.mysql = {
    clients: {
      // donnot change the name
      __ebdb: {
        host: "127.0.0.1",
        port: "3306",
        user: "root",
        password: "",
        database: "sys", // donnot change the name
      },
    },
  };
開發(fā)環(huán)境

src/backend/config/config.local.js

  // mysql
  config.mysql = {
    clients: {
      // donnot change the name
      __ebdb: {
        host: "127.0.0.1",
        port: "3306",
        user: "root",
        password: "",
        database: "sys", // recommended
      },
    },
  };
生產(chǎn)環(huán)境

src/backend/config/config.prod.js

  // mysql
  config.mysql = {
    clients: {
      // donnot change the name
      __ebdb: {
        host: "127.0.0.1",
        port: "3306",
        user: "root",
        password: "",
        database: "{{name}}",
      },
    },
  };
運(yùn)行

啟動后端服務(wù)

$ npm run dev:backend

啟動前端服務(wù)

$ npm run dev:front
進(jìn)入后臺管理頁面

網(wǎng)址:http://localhost:9092/

用戶名:root

密碼:123456

參數(shù)配置 參數(shù)覆蓋規(guī)則

語言配置 > 站點配置 > 缺省配置

語言配置:由于支持多語言,因此不同的語言可以配置不同的參數(shù)

站點配置:配置與語言無關(guān)的全局參數(shù)

缺省配置:會因使用不同的主題而擁有不同的參數(shù)

站點配置

進(jìn)入設(shè)置/cms頁面

點擊站點/配置,進(jìn)入站點配置頁面

點擊右側(cè)的“ !”按鈕,查看缺省配置

缺省配置拷貝需要修改的屬性到站點配置頁面,并修改成所需要的值。

在這里,我們修改如下參數(shù):

{
 "host": {
    "url": "http://example.com",
    "rootPath": ""
  },
  "language": {
    "default": "zh-cn",
    "items": "zh-cn,en-us"
  },
  "themes": {
    "zh-cn": "cms-themeblog",
    "en-us": "cms-themeblog"
  },
  "plugins": {
    "cms-plugintrack": {
      "track": {
        "google": "",
        "baidu": "",
        "qq": ""
      }
    }
  }
}

host

url: 實際部署時的站點域名

rootPath: 根路徑,一般設(shè)置

languange

default: 缺省語言。

缺省語言渲染的靜態(tài)文件位于站點“根目錄”,其他語言位于站點“根目錄/[語言]”

items: 支持的語言列表,用逗號分隔

themes

zh-cn: 語言所使用的主題

en-us: 語言所使用的主題

plugins

cms-plugintrack

track

google: google統(tǒng)計的跟蹤代碼

baidu: 百度統(tǒng)計的跟蹤代碼

qq: 騰訊統(tǒng)計的跟蹤代碼

語言配置

可以依次對不同的語言配置參數(shù),這里從略

構(gòu)建

為了提升渲染速度,在發(fā)表文章時,僅對“當(dāng)前文章”和“首頁”進(jìn)行渲染,其他靜態(tài)文件不變。所以,當(dāng)設(shè)計到整站元素變更時,需要進(jìn)行“整站渲染”。

如何操作

進(jìn)入設(shè)置/cms頁面

整站構(gòu)建:“整站參數(shù)”變更時

語言構(gòu)建:“語言參數(shù)”變更時

預(yù)覽

可點擊“預(yù)覽”,直接查看渲染效果

此時生成的網(wǎng)址沒有內(nèi)容,接下來可以創(chuàng)建目錄,然后發(fā)表文章

目錄

Cabloy-CMS有以下約定:

所有目錄必屬于某一個“語言”

所有文章必屬于某一個“目錄”

有的CMS工具,文章可以分屬多個“目錄”,其實這種特性可以用“標(biāo)簽”來解決
如何操作

進(jìn)入設(shè)置/cms頁面,點擊語言的“目錄”按鈕,添加“目錄”,效果如下:

此時,可以進(jìn)行“語言構(gòu)建”,并預(yù)覽效果

文章

Cabloy-CMS后臺提供了完備的文章管理功能。當(dāng)文章提交發(fā)表時,實時渲染成靜態(tài)文件,并寫入Sitemap文件

如何操作 基本屬性

在后臺首頁,點擊新建文章,進(jìn)入文章編輯頁面,依次輸入或選擇如下屬性值:

原子名稱:也就是文章標(biāo)題。原子是Cabloy對基礎(chǔ)業(yè)務(wù)數(shù)據(jù)的通用定義

語言:

目錄:

標(biāo)簽:支持多標(biāo)簽,用逗號隔開

內(nèi)容

Cabloy-CMS采用開源組件mavonEditor,實現(xiàn)了markdown格式的編輯和預(yù)覽效果

請輸入以下內(nèi)容,并查看效果

![5775337-414d62d7c1e152f2](http://zhennann.cabloy.org/api/a/file/file/download/00ca2e89235b47bba5b7e7580fc71834.jpg)

## 一天到晚的魚兒不停游

曾經(jīng)嘲諷

魚兒是被詛咒過的

一天到晚的不停游

here and there

here and there



如今

安然做一條魚兒

一天到晚的不停游

here and there

here and there



曾經(jīng)的嘲諷

終會落在自己身上

here and there

here and there



甚好甚好

提交發(fā)布

Cabloy中所有的原子數(shù)據(jù)均有兩個狀態(tài):草稿正常草稿狀態(tài)下只有創(chuàng)建人能訪問和編輯,通過提交轉(zhuǎn)入正常狀態(tài),其他用戶才能訪問。

文章也不例外,只有提交進(jìn)入正常狀態(tài),才會進(jìn)行渲染。

當(dāng)然,如果文章已是正常狀態(tài),那么再次編輯并保存時,也會進(jìn)行渲染。

提交并預(yù)覽

首頁

文章頁

部署 實例與子域名

Cabloy支持多實例,實例與網(wǎng)站子域名一一對應(yīng),不同實例的數(shù)據(jù)完全隔離。比如instance1.cabloy.orginstance2.cabloy.org

調(diào)試階段,Cabloy啟用了一個缺省實例,但在部署階段,需要規(guī)劃實例與子域名

在CMS應(yīng)用中,把域名example.com留給靜態(tài)文件,需要給后臺管理系統(tǒng)分配一個子域名,如admin.example.com

多站點支持

由于一個實例對應(yīng)一個CMS應(yīng)用,通過多實例就可以支持多站點

實例配置

編輯文件:src/backend/config/config.prod.js

// instances
config.instances = [
  { subdomain: "admin", password: "", title: "",
    meta: {
      jsonp: { whiteList: "example.com" },
    },
  },
];

subdomain: 子域名

password: 實例中用戶root的訪問密碼

title: 網(wǎng)站標(biāo)題

meta.jsonp.whiteList: 白名單,只有白名單中的域名可以通過ajax訪問后臺API接口

構(gòu)建前端代碼
$ npm run build:front
啟動后端服務(wù)
$ npm run start:backend

別忘了創(chuàng)建MySQL數(shù)據(jù)庫,并配置src/backend/config/config.prod.js

停止后端服務(wù)
$ npm run stop:backend
后端服務(wù)啟動參數(shù)配置

編輯文件:build/config.js

// backend
const backend = {
  port: 7002,
  hostname: "127.0.0.1",
};
nginx配置

強(qiáng)烈建議使用nginx托管前端靜態(tài)資源,并反向代理后端服務(wù)

在項目根目錄已經(jīng)生成了兩個nginx配置文件,分別對應(yīng)Cabloy-CMS的“動態(tài)部分”和“靜態(tài)部分”,請根據(jù)實際情況修改

動態(tài)部分:nginx.conf
server {

  listen 80;
  server_name admin.example.com;
  set $node_port 7002;

  root /Users/wind/Documents/temp/cabloy-cms/dist;

  location /public {
    root /Users/wind/cabloy/cabloy-cms;
    internal;
  }

  location  /api/ {
    proxy_http_version 1.1;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_pass http://127.0.0.1:$node_port$request_uri;
    proxy_redirect off;
  }

}
靜態(tài)部分:nginx-cms.conf
server {

  listen 80;
  server_name example.com;

  root /Users/wind/cabloy/cabloy-cms/public/1/cms/dist;

}
GitHub貢獻(xiàn)
有任何疑問,歡迎提交 issue!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/98347.html

相關(guān)文章

  • Hexo 博客終極玩法:云端寫作,自動部署

    摘要:配置觸發(fā)方式一般會得到這么個語雀配置配置一個倉庫的可以選擇所有更新觸發(fā)或者主動觸發(fā),主動觸發(fā)的意思即發(fā)布需要勾選一個選項才會觸發(fā)。 Hexo + Github + 語雀 + yuque-hexo +travis-ci+severless 打造全自動持續(xù)集成個人博客,云端寫作,自動部署,完美體驗~ 一、Hexo+Github 的痛點 1.為啥要用hexo+github? 作為一個程序猿,...

    AlphaWallet 評論0 收藏0
  • Hexo 博客終極玩法:云端寫作,自動部署

    摘要:配置觸發(fā)方式一般會得到這么個語雀配置配置一個倉庫的可以選擇所有更新觸發(fā)或者主動觸發(fā),主動觸發(fā)的意思即發(fā)布需要勾選一個選項才會觸發(fā)。 Hexo + Github + 語雀 + yuque-hexo +travis-ci+severless 打造全自動持續(xù)集成個人博客,云端寫作,自動部署,完美體驗~ 一、Hexo+Github 的痛點 1.為啥要用hexo+github? 作為一個程序猿,...

    EsgynChina 評論0 收藏0
  • 紅黑樹,超強(qiáng)動靜圖詳解,簡單易懂

    摘要:寫在前面紅黑樹,對很多童鞋來說,是既熟悉又陌生。每次需要查看紅黑樹內(nèi)容時都很難以更生動形象的方式來理解其內(nèi)容。 寫在前面 紅黑樹,對很多童鞋來說,是既熟悉又陌生。學(xué)校中學(xué)過,只了解大概;工作中不怎么使用,但面試又是重點。每次需要查看紅黑樹內(nèi)容時都很難以更生動形象的方式來理解其內(nèi)容。沒錯,本文內(nèi)容就是要解決這個問題,用簡單的語言,搭配靜圖和動圖(利用大腦圖形記憶方式),讓你對紅黑樹有更深...

    Scorpion 評論0 收藏0
  • 全站緩存時代

    摘要:頁面緩存的方案純靜態(tài)頁面直接放。原則靜態(tài)頁面緩存,動態(tài)部分異步請求。靜態(tài)部分也是模板渲染過來的,瀏覽器會從或者后臺緩存中獲取到靜態(tài)頁面。 原則:動靜分離,分級緩存,主動失效。 Web 開發(fā)中,接口會被分為以下幾類: 純靜態(tài)頁面。打死我都不會修改的頁面。很長一段時間內(nèi),基本上不會修改。比如:關(guān)于我們。 純動態(tài)頁面。實時性,個性化要求比較高。頁面變化很大,或者每個用戶看到的都不一樣,比如...

    Zhuxy 評論0 收藏0
  • 全站緩存時代

    摘要:頁面緩存的方案純靜態(tài)頁面直接放。原則靜態(tài)頁面緩存,動態(tài)部分異步請求。靜態(tài)部分也是模板渲染過來的,瀏覽器會從或者后臺緩存中獲取到靜態(tài)頁面。 原則:動靜分離,分級緩存,主動失效。 Web 開發(fā)中,接口會被分為以下幾類: 純靜態(tài)頁面。打死我都不會修改的頁面。很長一段時間內(nèi),基本上不會修改。比如:關(guān)于我們。 純動態(tài)頁面。實時性,個性化要求比較高。頁面變化很大,或者每個用戶看到的都不一樣,比如...

    X1nFLY 評論0 收藏0

發(fā)表評論

0條評論

alin

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<