成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

從零打造一款輕量且天然支持SSR的CMS系統(tǒng)-SimpleCMS

開(kāi)發(fā) 前端
基于以上一些痛點(diǎn)和局限, 我們開(kāi)發(fā)了一款簡(jiǎn)單易用, 且天然支持服務(wù)端渲染(SSR)的全棧 cms 系統(tǒng), 方便大家輕松定制自己的博客網(wǎng)站. 筆者接下來(lái)就來(lái)帶大家一起分析 simpleCMS 的功能和技術(shù)實(shí)現(xiàn).

[[373966]]

2年前筆者開(kāi)發(fā)了一款基于 nodejs 的全棧開(kāi)源 cms 系統(tǒng) XPCMS, 主要是為了解決技術(shù)開(kāi)發(fā)者搭建自身內(nèi)容平臺(tái)的局限以及降低使用成本, 雖然1.0版本已經(jīng)完成, 但是從整體部署和二次開(kāi)發(fā)的便捷度上還是存在很多缺點(diǎn), 更加適合有一定技術(shù)能力的開(kāi)發(fā)者來(lái)使用.

為了解決 XPCMS 的不足, 去年筆者和朋友特地開(kāi)發(fā)了一款輕量便捷的內(nèi)容管理系統(tǒng)——simpleCMS, 目前已在 github 上開(kāi)源, 且能同時(shí)適配PC端和移動(dòng)端.

目前市面上已經(jīng)有很多成熟的 cms 系統(tǒng), 比如 worldPress, 博客系統(tǒng) hexo, 對(duì)于技術(shù)開(kāi)發(fā)者來(lái)說(shuō)使用和部署很簡(jiǎn)單, 但是定制和自定義擴(kuò)展方面, 卻需要一定的技術(shù)門(mén)檻和開(kāi)發(fā)成本.

基于以上一些痛點(diǎn)和局限, 我們開(kāi)發(fā)了一款簡(jiǎn)單易用, 且天然支持服務(wù)端渲染(SSR)的全棧 cms 系統(tǒng), 方便大家輕松定制自己的博客網(wǎng)站. 筆者接下來(lái)就來(lái)帶大家一起分析 simpleCMS 的功能和技術(shù)實(shí)現(xiàn).

技術(shù)架構(gòu)和實(shí)現(xiàn)方案

為了降低大家的使用和部署成本, 我們采用了如下技術(shù)實(shí)現(xiàn):

  • 服務(wù)層: koa2 + nodejs + jsonSchema(當(dāng)然其中還使用了很多nodejs中間件)
  • 前臺(tái)頁(yè)面: pug(結(jié)合nodejs實(shí)現(xiàn)前后端同構(gòu), 且天然的SSR)
  • 后臺(tái)管理: umi3.0 + react + antd + axios + typescript(當(dāng)然還用了很多前端插件, 比如富文本, md編輯器)
  • 系統(tǒng)/服務(wù)器相關(guān): linux / pm2 / nginx

基本架構(gòu)模式如下圖所示:


系統(tǒng)頁(yè)面架構(gòu)圖:


功能分析

接下來(lái)筆者就來(lái)介紹 simpleCMS 的功能點(diǎn). 我們先來(lái)分析一下后臺(tái)管理系統(tǒng).

后臺(tái)管理系統(tǒng)功能分析

后臺(tái)管理系統(tǒng)是動(dòng)態(tài)博客系統(tǒng)必備的模塊, 它能很方便的管理我們的網(wǎng)站數(shù)據(jù). 這里筆者先來(lái)帶大家看一下后臺(tái)管理系統(tǒng)的基本模塊:

  • 登錄頁(yè)面
  • 數(shù)據(jù)大盤(pán)
  • 內(nèi)容管理
  • 頁(yè)面配置
  • 廣告配置
  • 用戶(hù)信息管理
  • 多語(yǔ)言支持

以上是 cms 管理系統(tǒng)必備的模塊, 這里我們基本上采用react hooks 來(lái)寫(xiě), 具體頁(yè)面如下:

1 登錄頁(yè)面


2 數(shù)據(jù)大盤(pán)


3 文章管理


4 內(nèi)容編輯


5 多語(yǔ)言支持


其他頁(yè)面就不一一展示了, 感興趣的朋友可以體驗(yàn)一下. 主要技術(shù)采用 umi + antd + react + typescript 實(shí)現(xiàn), 感興趣可以在 github 上參考學(xué)習(xí).

前臺(tái)基本功能分析

前臺(tái)主要是我們的博客網(wǎng)站, 這里采用 pug 這個(gè)模版引擎來(lái)實(shí)現(xiàn), 交互功能使用大家最熟悉的jquery.前臺(tái)基本模塊有:

  • 博客首頁(yè)
  • 文章列表頁(yè)
  • 文章詳情頁(yè)

對(duì)應(yīng)的交互功能有點(diǎn)贊, 評(píng)論, 文章搜索功能等, 基本頁(yè)面如下:

1 首頁(yè)


2 列表頁(yè)


3 詳情頁(yè)

 

4 評(píng)論和點(diǎn)贊

 

由于pug模版引擎適合做一些展示型的網(wǎng)站, 所以非常適合用在cms系統(tǒng)中, 我們也可以使用ejs等模版引擎.

技術(shù)實(shí)現(xiàn)細(xì)節(jié)

由于整個(gè)cms 系統(tǒng)是一個(gè)完整的技術(shù)閉環(huán), 數(shù)據(jù)流轉(zhuǎn)都是相關(guān)的, 這里筆者主要總結(jié)一下實(shí)現(xiàn)一個(gè)cms的技術(shù)細(xì)節(jié).

  • 數(shù)據(jù)統(tǒng)計(jì)功能實(shí)現(xiàn) —— 采用nodejs定時(shí)任務(wù)(node-schedule)
  • 富文本和md編輯器實(shí)現(xiàn)
  • 后臺(tái)多語(yǔ)言實(shí)現(xiàn)方案
  • 內(nèi)容管理流程設(shè)計(jì)
  • pug 模版和數(shù)據(jù)交互
  • jsonSchema 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)
  • 手寫(xiě)簡(jiǎn)單加密解密算法
  • 跨域解決方案以及用戶(hù)權(quán)限設(shè)計(jì)
  • pm2管理node進(jìn)程以及做負(fù)載均衡
  • 多進(jìn)程場(chǎng)景下的并發(fā)鎖設(shè)計(jì)

數(shù)據(jù)統(tǒng)計(jì)功能實(shí)現(xiàn)

數(shù)據(jù)統(tǒng)計(jì)主要是統(tǒng)計(jì)網(wǎng)站的pv, 單篇文章閱讀量和點(diǎn)贊量, 為了更好的進(jìn)行分析我們需要對(duì)單日的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)和存庫(kù), 具體實(shí)現(xiàn)就是利用定時(shí)任務(wù)在一天結(jié)束前進(jìn)行數(shù)據(jù)的統(tǒng)計(jì), 這里我們用 node-schedule來(lái)實(shí)現(xiàn), 具體使用方式筆者也在之前的文章中做了介紹, 感興趣可以參考一下.


基本使用如下:

  1. let schedule = require('node-schedule'); 
  2.  
  3. let testJob = schedule.scheduleJob('42 * * * *'function(){ 
  4.   console.log('將在未來(lái)的每個(gè)時(shí)刻的42分時(shí)執(zhí)行此代碼, 比如22:42, 23:42'); 
  5. }); 

富文本和md編輯器方案實(shí)現(xiàn)

這里我們用的富文本組件是braft, 功能和可擴(kuò)展性基本滿(mǎn)足業(yè)務(wù)需求, md編輯器是程序員寫(xiě)博客的基本方式, 這里主要采用了for-editor, 其次就是對(duì)其進(jìn)行了二次封裝來(lái)實(shí)現(xiàn)支持剪切板功能.

國(guó)際化方案

多語(yǔ)言主要使用的react-intl, 由于umi 對(duì)其有很好的集成, 所以說(shuō)我們只需要搭建基本的多語(yǔ)言規(guī)則即可. 比如在項(xiàng)目目錄里建立locales文件夾, 然后存放zh(中文)/en(英文)文件即可, 基本的代碼如下:

  1. // locales/en/user 
  2. export default { 
  3.   simpleCMS_DESC: 'Easy to use CMS system, help everyone to have their own website blog.'
  4.   CopyrightText: 'SimpleCMS r&d team'
  5.  
  6. // locales/zh/user 
  7. export default { 
  8.   simpleCMS_DESC: '簡(jiǎn)單易用的cms系統(tǒng), 助力每個(gè)人都能擁有自己的網(wǎng)站博客。'
  9.   CopyrightText: 'SimpleCMS 研發(fā)團(tuán)隊(duì)' 

 如果對(duì)多語(yǔ)言實(shí)現(xiàn)方案感興趣的, 可以參考simpleCMS源碼.

 

責(zé)任編輯:姜華 來(lái)源: 趣談前端
相關(guān)推薦

2022-02-12 00:00:00

架構(gòu)

2021-11-18 11:52:49

HTML5小游戲JS

2023-03-08 17:33:36

KubernetesJava

2025-02-24 13:46:40

2020-12-03 09:00:02

Java外賣(mài)系統(tǒng)

2014-12-16 10:11:22

2025-03-03 00:46:00

GolangAPI客戶(hù)端

2020-12-07 11:50:14

Java學(xué)習(xí)系統(tǒng)eclipse

2012-05-21 09:31:56

HTML5

2022-08-09 10:00:57

ViteTypeScripVue3

2022-06-10 14:52:46

開(kāi)源項(xiàng)目字節(jié)跳動(dòng)

2022-08-31 08:32:22

數(shù)據(jù)可視化項(xiàng)目nocode

2021-08-26 05:15:22

圖片編輯器 H5-DooringMitu-Doorin

2019-11-26 08:43:44

平臺(tái)桌面軟件

2021-06-10 09:00:32

Java項(xiàng)目實(shí)戰(zhàn)Java編程

2021-04-12 08:31:53

PC-Dooring項(xiàng)目PC端搭建

2019-11-11 08:00:00

Doppler遠(yuǎn)程監(jiān)測(cè)工具Linux

2015-11-27 09:18:11

AngularJSWeb應(yīng)用

2021-09-11 21:03:09

可視化搭建框架

2024-08-16 08:31:05

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩午夜电影在线观看 | 91av在线影院| 成人福利网站 | 美女视频网站久久 | 国产精品久久福利 | 在线观看免费av网站 | 欧美1—12sexvideos| 亚洲国产精品一区 | 成人在线看片 | 国产在线观看网站 | 超碰人人艹| 国产精品视频在线观看 | 99久久精品一区二区成人 | 九九久久国产精品 | 欧美国产一区二区 | 午夜影视大全 | 欧美三级视频在线观看 | 亚洲免费一 | 7799精品视频天天看 | www性色| 毛片入口 | 先锋资源网站 | 国产精品视频播放 | 国产欧美一区二区三区免费 | 欧美成人aaa级毛片在线视频 | 日韩第一区 | 久久久成 | 久久久久久国模大尺度人体 | 日本高清aⅴ毛片免费 | 国产日韩精品在线 | 五月婷婷丁香婷婷 | 中文字幕在线三区 | 日韩精品一区二区三区老鸭窝 | 91pao对白在线播放 | 啪啪免费网站 | 日日噜噜噜夜夜爽爽狠狠视频, | 久久精品一 | www.99re5.com| 黄色亚洲| 日韩在线精品强乱中文字幕 | 欧美精品一区二区在线观看 |