整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          GitHub Actions 博文發布工作流

          GitHub Actions 博文發布工作流


          近寫了幾篇文章,想對每次編寫的文檔做個版本控制。想到了Github, 將所有的文檔備份到Github。不想每次手動運行hugo 編譯和發布腳本,于是就有了下面的GithubActions工作流。借助GitHubActions完成對博客文章的自動化發布部署。

          版本庫

          首先,我們在Github上面創建一個倉庫,用于存儲博客的數據。靜態博客推薦使用Hugo,非常簡單。使用Markdown語法,官方提供了很多不錯的主題模板。


          這里我是用主干main 分支存儲項目的代碼, 單獨創建一個分支存儲編譯后的靜態HTML資源文件。我們切換到另外一個分支看下:


          工作面板

          新建一個工作板可以自定義狀態,簡單的將每次的博客優化需求記錄在這里。這里的每一項任務都可以轉換為issue,提交代碼可以對應的issue關聯。


          CI/CD集成與發布

          使用Github actions 作為構建。設置在main分支提交代碼即構建。

          name: github pages
          on:
            push:
              branches: [ main ]
          

          簽出主干分支代碼,刪除pages-git

          作流設計器javascript 源碼,就問你香不香,拿走不謝~,先看看demo效果,pc端瀏覽器版http://kgo-js.com/htmls/xbpmdesignsample.html

          立一個好的前端架構是開始開發Web應用或網站的一個基本步驟。良好的實踐和編碼常規是必不可少的,但是結構呢?我們如何在可控的時間內構思一個好的架構?但最重要的事情是,我們應該從哪里開始?

          當我開始思考這個問題時,我意識到一些事情:

          1. 我想要一個多頁面項目(一個Web應用或網站);

          2. 我希望我的項目支持不同的屏幕尺寸和分辨率,換句話說,我希望它是響應式的;

          3. 我希望最終產品是可被維護的;

          4. 我希望最終產品性能上是出色的;

          5. 我希望可以為將來的項目重復使用相同的模板。

          正確的工具

          現在我們擁有大量很酷的工具可以用于現代化前端開發工作流中。因此,面對第1、2點我告訴自己我需要一個基于CSS體系結構的中斷點(能夠幫我支持不同的設備和桌面的大小)。而另一個方面大量的CSS和文件可能會有點混亂(這違背了第3點),這就是為什么我決定開始使用CSS預處理器的原因。關于第4點,答案很簡單,我決定使用Gruntjs。而第5點在我看來Yeoman是一個很好的解決方案。

          組織工作流

          每個前端項目總是包含庫、jQuery插件和大量的JavaScript&CSS文件(或本文例子中的SCSS)以達到不同的目的和目標。使用不同的技術手段混合所有的元素,并把它們放在一起,這意味著建立一個前端工作流。我們會發現自己在管理一個巨大的、涉及不同技術的工作流。這就是為什么我們需要將所有東西通過遵循一種模式或公約置入文件夾中,以此來保持清晰、整潔。這對我們而言是非常重要的。

          我們可以在巨大的組合中選擇分解所有基本的前端組件,如以下所示:

          • SCSS 文件

          • scripts(腳本)

          • views(視圖)

          當然我們還可以繼續細分:

          SCSS

          • variables(變量)

          • mixins(混合類)

          • 公共部分到每一個布局

          • 單一布局

          js

          • 庫(如:jquery、angularjs、gAnalytics等等)

          • 插件(通常為jquery插件)

          • 控制器(我的意思是類似angularjs這樣的控制器)

          在一個基于模板的架構(例如使用blade.php或jade with nodejs)我們也可以將視圖分割如下:

          views

          • 公共部分到每一個視圖

          • 單一視圖

          視圖這塊在本文不做討論,因為我假設項目里每個頁面或布局只有一個視圖(一個HTML文件)。

          基于這些初步的考慮,下面展示的是我的文件夾樹:

          文件夾樹注解

          imgs

          存放所有的圖片文件:.png、.jpg、.jpeg、壁紙等。

          示例:icon.png、home-background.jpeg、userAvatar.jpg。

          js(主文件夾)

          存放.js文件。子文件夾組織情況如下:

          \controllers(子文件夾)

          存放angular控制器,每一個控制器都有一個與對應視圖相同的名字。比如,如果home.html需要一個angular控制器,你可以創建一個像這樣的文件:project\js\controllers\home.js。

          示例:home.js、user-registration.js、user-login.js

          \libs(子文件夾)

          用于存放JavaScript庫,當然這里不包含插件。

          示例:jquery-latest.js、angular.js、googleAnalytics.js

          \plugins(子文件夾)

          插件需要依賴關系來工作,而庫不需要,這也就是為什么這里創建兩個文件夾的原因。

          示例:jquery-fancyInput.js、restangular.js、customPlugin.js、jquery-airport.js

          \views(子文件夾)

          存放所有表象的東西,每個文件都與對應的視圖名稱相同。例如,如果home.html需要一些效果、材料以及插件初始值,你可以創建一個像這樣的文件:project\js\views\home.js。

          示例:home-animations.js、user-registration.js、user-login.js、site-animations.js

          CSS(主文件夾)

          這個文件夾包含了所有從主SCSS文件中生成的CSS。例如home.scss會在該文件中生成對應的home.css文件。

          \libs(子文件夾)

          即使是對CSS文件,我也會區分庫和插件,這里有些CSS庫例子。

          示例:_meyers-reset.scss、_normalize.scss、_animate.scss、_960gridSystem.scss

          \plugins(子文件夾)

          CSS文件包含于該文件夾中是使JavaScript插件工作的必備風格。

          示例:_jquery-fancyInput.scss、_jqueryTooltip.scss

          \framework (子文件夾)

          我決定在這個目錄中存放scss文件以共享到整個項目頁面,框架子文件將以下面的方式組織:

          • _variables.scss(項目變量聲明——colors、spacings等)

          • _mixins.scss(項目mixin聲明——typography、clearfix、animations等)

          • _forms.scss(自定義表單樣式和重置)

          • _input.scss(自定義輸入樣式和重置)

          \layouts (子文件夾)

          這是一個敏感的部分。這個目錄中的文件以這種方式組織:它們涵蓋所有屏幕分辨率、遵循移動第一的原則。所以,你應該使用_all.scss聲明你自己的風格。在該文件中的規格聲明是對所有屏幕尺寸和所有視圖都有效的。如果你希望你的網站適應性強的話,就不要僅僅是重寫規則,為其他屏幕分辨率聲明它們。

          文件夾組織結構如下:

          • phablets (481up) _phablets.scss

          • tablets and small laptops (768up) _tablets.scss

          • desktops (1030up) _desktop.scss

          • desktops with large screens (1204up) _desktop-large.scss

          • retina displays exceptions (@2x) _retina.scss

          這些文件將把握布局異常,被稱為mediaqueries。

          請注意:這些文件共享于所有視圖(HTML頁面)。這就是為什么你需要在scss\layouts文件下創建一個新的文件夾以給定一個特定的風格到一個特定的頁面。

          最后

          我知道這不是一個普遍的解決方案,也許在某些情況下還會包含一些冗余,但我認為這是一個很好的起點。不管目的是什么,我的建議是根據自己的需求定制自己的體系結構或框架,特別是在不丟失用戶體驗的前提下保障性能和可維護性。


          主站蜘蛛池模板: 亚洲一区精品无码| 午夜视频一区二区三区| 亚洲一区二区女搞男| 一区二区高清在线| 亚洲国产成人久久一区WWW | 91video国产一区| bt7086福利一区国产| 寂寞一区在线观看| 国产成人精品亚洲一区| 久久99热狠狠色精品一区| 精品一区二区在线观看| 久久久av波多野一区二区| 日韩视频一区二区| 亚洲AV日韩综合一区| 精品乱子伦一区二区三区| 精品女同一区二区| 日韩伦理一区二区| 韩国一区二区视频| 国偷自产Av一区二区三区吞精| 日本精品啪啪一区二区三区| 鲁丝片一区二区三区免费| 无码精品人妻一区二区三区AV| 交换国产精品视频一区| 日韩一区二区视频在线观看| 国产av夜夜欢一区二区三区| 国产成人精品一区二区三区免费| 91视频国产一区| 国偷自产av一区二区三区| 精品国产AV无码一区二区三区| 丝袜人妻一区二区三区| 国产一区二区三区国产精品| 久久久久人妻一区二区三区vr| 午夜福利国产一区二区| 国产成人精品视频一区二区不卡 | 免费无码毛片一区二区APP| 免费萌白酱国产一区二区三区| jazzjazz国产精品一区二区| 爆乳熟妇一区二区三区| 超清无码一区二区三区| 亚洲av无码一区二区三区天堂古代 | 久久精品一区二区三区日韩|