日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

lowcode-cms開源社區源碼設計分享

來源: 責編: 時間:2024-01-25 10:41:57 295觀看
導讀開源背景lowcode可視化社區 是我之前在設計研發 Dooring低代碼 平臺時開發的一個面向低代碼內容分享的知識社區, 內容端采用 SSR 技術來渲染頁面, 對 SEO 更加友好, 同時后端服務采用 Nodejs 來實現, 內容端和服務端

XYB28資訊網——每日最新資訊28at.com

開源背景

lowcode可視化社區 是我之前在設計研發 Dooring低代碼 平臺時開發的一個面向低代碼內容分享的知識社區, 內容端采用 SSR 技術來渲染頁面, 對 SEO 更加友好, 同時后端服務采用 Nodejs 來實現, 內容端和服務端同端, 也就是傳說中的內容服務“同構”. 管理端采用前端最最流行的 React hooks 來實現, 無論是技術人員還是非技術人員, 通過簡單的操作就可以輕松部署一套專屬自己的 CMS 系統。XYB28資訊網——每日最新資訊28at.com

本著滿滿的開源精神, 我對這套 CMS 系統進行了開源, 讓更多技術小白或者非技術人員, 可以輕松部署自己的網站。XYB28資訊網——每日最新資訊28at.com

接下來我會從技術的角度, 分享一下我開源的 lowcode-cms 系統的技術實現, 以及如何本地運行 + 部署這套開箱即用的 CMS 系統。XYB28資訊網——每日最新資訊28at.com

系統設計架構

XYB28資訊網——每日最新資訊28at.com

接下來我會具體和大家介紹一下管理端, 內容端, 服務端的技術架構。內容端架構設計XYB28資訊網——每日最新資訊28at.com

內容端主要用來展現個人或者企業的內容信息, 相當于一個門戶站, 這里為了更好的 SEO, 我采用了模版引擎來渲染 html, 也就是koa-views +  pug 模式, 具體界面如下:XYB28資訊網——每日最新資訊28at.com

XYB28資訊網——每日最新資訊28at.com

當然這只是首頁模塊, 還有諸如行業產品, 最佳實踐, 視頻, 手記等, 這里就不一一介紹了, 大家如果會編程的話, 也可以自定義自己的模塊頁面. 我們接下來看看具體的技術實現。XYB28資訊網——每日最新資訊28at.com

XYB28資訊網——每日最新資訊28at.com

大家可以在github中server的views目錄下看到每個渲染層的具體實現, 這里和大家分享一下 lowcode-cms 搭建的ssr模式。XYB28資訊網——每日最新資訊28at.com

1、配置pug支持

import koa from "koa";import views from "koa-views";// ... (此處省略服務端自治的部分代碼)// 掛載路由glob.sync(`${config.routerPath}/*.js`).forEach((item) => {  require(item).default(router, config.API_VERSION_PATH);});//使用模版引擎app.use(views(resolve(__dirname, "./views"), { extension: "pug" }));app.use(router.routes()).use(router.allowedMethods());

2、ssr路由數據直出

這塊主要是基于用戶發起的請求, 在服務端格式化好數據供 pug 消費:XYB28資訊網——每日最新資訊28at.com

/** * 文章路由 * @param {*} router * @param {*} apiPath */const pageRenderRouter = (router) => {  // api路徑  const api = {    // 渲染首頁    index: "/",    // 最佳實踐列表    bestPractice: "/best-practice",    product: "/product",    video: "/video",    note: "/note",    login: "/login",    // 其他渲染路由...  };  // 內容端導航配置  const nav = [    {      id: "0",      title: "最佳實踐",      link: "/best-practice"    },    {      id: "1",      title: "行業產品",      link: "/product"    },    {      id: "3",      title: "視頻",      link: "/video"    },    {      id: "4",      title: "手記",      link: "/note"    },    {      id: "5",      title: "關于",      link: "/about"    },  ]  const copyright = "版權所有 @lowcode可視化社區"  // 登錄  router.get(api.login, async (ctx) => {    await ctx.render("login", {      url: api.login,      title: "登錄",      description: "新用戶?",      href: "去注冊",      firstInput: "郵箱",      twoInput: "密碼",      btnText: "登錄",      logoText: "Dooring低代碼社區",    });  });  // 渲染首頁  router.get(api.index, async (ctx) => {    const filePath = `${config.publicPath}/db/homeConfig.json`;    const articlesPath = `${config.publicPath}/db/article_index.json`;    const productsPath = `${config.publicPath}/db/product_index.json`;    const videosPath = `${config.publicPath}/db/video_index.json`;    const homeConfig = RF(filePath);    const articles = RF(articlesPath);    const products = RF(productsPath);    const videos = RF(videosPath);    await ctx.render("index", {      nav,      articles: articles.filter(v => v.review === 1).slice(0, 6),      products: products.filter(v => v.review === 1).slice(0, 6),      videos: videos.filter(v => v.review === 1).slice(0, 6),      copyright,      ...homeConfig    });    // 統計訪問量    const viewPath = `${config.publicPath}/db/views.json`;    const views = RF(viewPath);    WF(viewPath, {...views, home: views.home + 1});  });  // 渲染文章詳情頁  router.get(api.articleDetail, async (ctx) => {    const id = ctx.query.fid;    const articlePath = `${config.publicPath}/db/articles/${id}.json`;    const commentPath = `${config.publicPath}/db/comments/${id}.json`;    const article = RF(articlePath) || {};    const comments = RF(commentPath) || {};    comments.views = comments.views + 1;    await ctx.render("article_detail", {      nav,      viewTitle: article.title,      topImg: article.img,      authorInfo: { name: article.author, date: formatTime(article.ct, "-") },      cate: article.cate,      val:  article.type ? marked(article.val) : article.val,      commentInfoList: comments.comments || [],      flover: comments.flover,      views: comments.views || 0,      copyright,    });    WF(commentPath, comments);  });  // 其他頁面渲染服務邏輯...  });};export default pageRenderRouter;

3、模版消費

這里給大家參考一個我寫的 pug 頁面的例子:XYB28資訊網——每日最新資訊28at.com

XYB28資訊網——每日最新資訊28at.com

大家感興趣的可以參考一下具體的實現:XYB28資訊網——每日最新資訊28at.com

https://github.com/MrXujiang/lowcode-cmsXYB28資訊網——每日最新資訊28at.com

服務端架構設計

XYB28資訊網——每日最新資訊28at.com

服務端本質上主要實現兩塊能力:XYB28資訊網——每日最新資訊28at.com

  • 內容端頁面渲染(SSR)
  • 后臺API和三方接口服務對接

服務端我參考了通用后端服務的 MVC 模式, 基于 koa2 搭建了一個簡易的服務端 MVC 模型, 如下是一個服務端的代碼目錄:XYB28資訊網——每日最新資訊28at.com

XYB28資訊網——每日最新資訊28at.com

主要實現的核心模塊有:XYB28資訊網——每日最新資訊28at.com

  • 靜態資源服務器
  • 微信分享, CDN上傳等第三方服務模塊
  • api路由
  • 中間件模塊
  • 資源上傳模塊
  • 用戶權限模塊
  • ssr服務模塊

如果搭建感興趣可以參考 github 中具體的實現代碼:https://github.com/MrXujiang/lowcode-cmsXYB28資訊網——每日最新資訊28at.com

管理端系統架構設計

XYB28資訊網——每日最新資訊28at.com

XYB28資訊網——每日最新資訊28at.com

管理端采用的是 umi + react + antd4.0 實現的, 當然封裝了很多成熟的插件模塊, 比如說 富文本編輯器, md編輯器, 文件上傳模塊等, 大家可以在學習源碼的過程中受益非淺。XYB28資訊網——每日最新資訊28at.com

XYB28資訊網——每日最新資訊28at.com

上圖就是編輯模塊, 我封裝了實時預覽 md 和富文本的模塊, 大家可以拿來即用。XYB28資訊網——每日最新資訊28at.com

本地運行

1、目錄介紹

  • server 基于nodejs的服務端, 啟動后可直接訪問3000 端口, 也就是內容SSR端。
  • admin CMS的管理后臺, 集成了用戶管理, 內容審核, 內容發布, 數據統計等模塊。

開箱即用~~XYB28資訊網——每日最新資訊28at.com

2、本地啟動

server端:XYB28資訊網——每日最新資訊28at.com

# 進入server目錄cd server# 安裝依賴yarn# 服務端啟動yarn start

注: 如果是window系統, 可以執行 yarn start:win。XYB28資訊網——每日最新資訊28at.com

管理端:XYB28資訊網——每日最新資訊28at.com

# 進入admin目錄cd admin# 安裝依賴yarn# 啟動yarn start

初始化賬號: super_123, 密碼: zxzk_123。XYB28資訊網——每日最新資訊28at.com

內容端:XYB28資訊網——每日最新資訊28at.com

訪問3000端口即可。XYB28資訊網——每日最新資訊28at.com

部署發布

推薦使用 pm2 來管理 Node 服務進程, 只需要把 server 端上傳到服務器, 安裝對應依賴, 用 pm2 啟動即可:XYB28資訊網——每日最新資訊28at.com

pm2 start server/dist

有關 pm2 相關問題可以在我往期的文章中學習參考。XYB28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-67850-0.htmllowcode-cms開源社區源碼設計分享

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 獲取雙異步返回值時,如何保證主線程不阻塞?

下一篇: 微軟 Visual Studio 2022 獲推 17.9 Preview 3 更新:增強代碼搜索體驗

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
欧美电影免费观看高清| 亚洲淫片在线视频| 精品粉嫩aⅴ一区二区三区四区| 国产亚洲精久久久久久| 影音先锋中文字幕一区二区| 亚洲日本免费电影| 亚洲一区二区三区乱码aⅴ| 欧美一级欧美一级在线播放| 另类av一区二区| 亚洲人成人99网站| 亚洲免费观看高清在线观看| 亚洲制服少妇| 欧美~级网站不卡| 国产精品99免视看9| 国产综合第一页| 国产精品实拍| 国产精品福利av| 好吊色欧美一区二区三区视频| 亚洲国产一区二区a毛片| 99精品热视频| 最新日韩在线视频| 亚洲天堂av高清| 久久性色av| 麻豆国产精品va在线观看不卡| 欧美人成网站| 国产亚洲第一区| 99精品国产99久久久久久福利| 欧美一级播放| 欧美日韩一区二区国产| 国产尤物精品| 在线综合亚洲| 蜜臀久久99精品久久久久久9| 久久免费视频网站| 欧美丝袜一区二区三区| 精品69视频一区二区三区| 一区二区三区日韩欧美| 久久网站免费| 国产精品捆绑调教| 亚洲精品在线观| 久久精品国语| 欧美天天综合网| 亚洲国产成人高清精品| 亚洲精品综合| 欧美一区二区成人| 欧美精品一区二区三区视频| 好吊日精品视频| 香蕉久久精品日日躁夜夜躁| 久久国产免费| 欧美午夜不卡在线观看免费| 久久伊伊香蕉| 欧美国产第一页| 国产尤物精品| 亚洲欧美成人在线| 欧美日韩一区二区在线| 亚洲国产成人高清精品| 久久国产综合精品| 国产精品国产三级国产专播精品人 | 欧美午夜免费| 亚洲日本无吗高清不卡| 久久久久久久一区二区| 欧美成人视屏| 国产一区二区电影在线观看| 亚洲高清av在线| 欧美专区第一页| 国产精品无码专区在线观看| 一本一本a久久| 欧美日韩激情网| 亚洲精品国产精品国自产观看| 久久综合久久综合这里只有精品| 欧美激情免费观看| 亚洲第一色在线| 久热精品在线视频| 在线成人性视频| 一区二区三区四区在线| 欧美激情一区二区三区| 亚洲国产高清aⅴ视频| 麻豆国产精品777777在线| 精品动漫3d一区二区三区免费| 欧美怡红院视频一区二区三区| 国产精品久久二区二区| 亚洲一区二区视频| 国产精品久久激情| 亚洲男女自偷自拍图片另类| 国产精品国产三级国产专播品爱网| aⅴ色国产欧美| 国产精品高清免费在线观看| 亚洲性线免费观看视频成熟| 国产精品国产一区二区| 亚洲综合999| 国产伦精品一区二区三区高清版 | 伊伊综合在线| 蜜臀a∨国产成人精品| 亚洲国产天堂久久国产91| 免费成人激情视频| 亚洲日本欧美| 欧美亚洲成人免费| 亚洲欧美日韩国产中文| 国产精品亚洲激情| 久久福利资源站| 在线观看一区二区精品视频| 欧美aⅴ一区二区三区视频| 免费观看一区| 亚洲日韩视频| 欧美日韩中文字幕日韩欧美| 亚洲午夜伦理| 国产亚洲欧洲| 牛牛国产精品| 一本在线高清不卡dvd| 国产精品综合| 老司机午夜精品| 99re视频这里只有精品| 国产精品久久久对白| 久久精品一二三区| 91久久精品一区二区三区| 欧美日韩亚洲高清| 销魂美女一区二区三区视频在线| 韩日在线一区| 欧美片网站免费| 欧美一区二区三区视频免费| 尤物yw午夜国产精品视频明星| 欧美激情自拍| 亚洲综合日韩| 亚洲高清毛片| 欧美色中文字幕| 久久精品一区二区国产| 亚洲日本电影在线| 国产精品一香蕉国产线看观看 | 亚洲大片在线观看| 欧美在线一级va免费观看| 欧美新色视频| 午夜精品视频一区| 国产精品一卡| 久久夜色精品国产| 在线一区观看| 狠狠综合久久| 欧美日韩一区二区国产| 欧美在线视频免费| 亚洲日本无吗高清不卡| 国产欧美精品va在线观看| 男女av一区三区二区色多| 亚洲午夜电影| 亚洲第一色在线| 国产精品女人毛片| 免费在线观看一区二区| 亚洲影院免费观看| 亚洲黑丝一区二区| 国产欧美一区二区三区久久人妖| 欧美成人乱码一区二区三区| 亚洲欧美日韩高清| 日韩视频二区| 一区国产精品| 国产精品午夜视频| 欧美另类一区二区三区| 久久精品一区二区三区四区| 中文精品99久久国产香蕉| 在线精品观看| 国产日韩专区在线| 欧美日韩日日骚| 麻豆九一精品爱看视频在线观看免费| 亚洲影音先锋| 一区二区av在线| 欧美精品福利视频| 久久国产天堂福利天堂| 亚洲图片欧洲图片av| 91久久精品国产91久久性色| 国产综合亚洲精品一区二| 国产精品乱码久久久久久| 欧美精品一区二| 美女福利精品视频| 久久精品国产免费观看| 亚洲欧美日韩在线播放| 99精品视频免费| 亚洲欧洲一区二区三区在线观看| 国产曰批免费观看久久久| 国产精品捆绑调教| 欧美午夜片在线观看| 欧美激情国产日韩精品一区18| 快播亚洲色图| 久久久久久久一区二区| 欧美在线999| 欧美一级专区免费大片| 亚洲综合成人在线| 亚洲视频中文| 一区二区高清视频| 日韩午夜在线电影| 亚洲精品国产精品国产自| 国产精品裸体一区二区三区| 欧美日本成人| 欧美精品videossex性护士| 免费观看亚洲视频大全| 另类激情亚洲| 久久亚洲春色中文字幕久久久| 欧美一区亚洲| 欧美亚洲网站| 欧美亚洲一区在线| 欧美亚洲免费在线| 午夜久久99| 小黄鸭精品密入口导航| 亚洲在线黄色| 亚洲一区二区在线观看视频| 亚洲午夜性刺激影院| 亚洲夜间福利| 亚洲综合另类| 欧美一区二区三区免费视|