摘要:異步任務的核心是名稱與任務名一致的函數,該函數接受兩個參數一個函數和命令行的輸入值。
廢話:如果是“不能給 hr 發這樣的簡歷”之類大家都懂的話,麻煩您就不要回復了,謝謝! 國際慣例: https://github.com/dongsuo/vu... 正文:
作為一名程序員,還是有一份有特色的在線簡歷會比較好吧……
在線簡歷很容易做得很丑哎……
套模板這種事情有點丟人呀……
那……干嘛不用程序員最熟悉的命令行來寫簡歷呢?
啊咧?!
上圖就是一個用vuejs在瀏覽器中模擬出來的終端界面,用這個來做一份簡歷還是有點小酷吧?(在線體驗:https://dongsuo.github.io/ter...,源碼:https://github.com/dongsuo/vu...
OK,閑話少敘,來動手做一個吧。
首先,你需要把這個項目(https://github.com/dongsuo/vu... fork到你自己的Github目錄下,然后pull到本地。(如果你不明白這一步的話,以下是你可以在谷歌或者百度輸入框輸入的關鍵詞:git,github,倉庫,repository,本地倉庫。所有關鍵詞可以隨意組配,直到你明白這一步為止,下同。)
然后,在你本地的命令行工具中,進入本地項目目錄,執行 npm install,等任務跑完,執行 npm run dev就可以了,你的默認瀏覽器會自動打開 http://localhost:8080 這個地址。(關鍵詞:nodejs, npm, 淘寶鏡像,node_modules目錄)
接下來就是實質性的工作了,由于vue-terminal-emulator還沒有文檔,所以這篇短文就算是文檔了,我會寫得盡量詳細一些。
目錄結構按照慣例,先從目錄結構開始吧:
├── build // 構建相關 ├── config // 配置相關 ├── docs // 構建輸出目錄 ├── src // 源代碼 │ ├── components // 組件 │ ├── plugins // 插件 │ │ ├── commandList.js // 命令列表 │ │ └── taskList.js // 任務列表 │ ├── App.vue // 入口頁面 │ └── main.js // 入口 加載組件 初始化等 ├── .babelrc // babel-loader 配置 ├── eslintrc.js // eslint 配置項 ├── .gitignore // git 忽略項 ├── favicon.ico // favicon圖標 ├── index.html // html模板 └── package.json // package.json
基本結構就是vue-cli項目的默認結構,主要src目錄下的文件需要介紹一下:
components下是 VueTerminalEmulator 組件,主要的邏輯和樣式都封裝在這個文件中,你可以完全不管這個文件。
我們主要需要配置的文件是 plugins/commadnList.js 和 plugins/taskList.js 這兩個文件,這兩個文件的基本結構是一致的,都 export一個對象,對象key是任務或者命令名稱,值是由 description 和 messages/task 組成的對象,基本的結構如下所示:
{ commandOrTask:{ description:"", messagesOrTask:[]//(function) } }
VueTerminalEmulator 組件會import這兩個文件,根據其中的配置生成幫助項并執行相應的指令,其中description即為"help"指令中各個命令的幫助信息。
// VueTerminalEmulator 中引入配置文件 import commandList from "./../plugins/commandList" import taskList from "./../plugins/taskList"
其中,commandList 中存放靜態的指令,指令執行之后,直接列出所有 message,然后指令結束,無需等待。而taskList 中是異步的任務,指令執行后組件會進入loading狀態,任務完成后,通過resolve一個消息來通知VueTerminalEmulator 組件任務結束,解除loading狀態(關鍵詞:異步、promise、resolve)。以下是這兩種命令的例子:
異步任務:
help是典型的靜態指令:
靜態指令commandList 中的核心是messages數組,數組內是多個message對象,執行command時,會將command中的message顯示在Terminal窗口中,比較簡單,不多說,一個示例就解決了:
contact: { description: "How to contact author", messages: [ { message: "Website: http://xiaofeixu.cn" }, { message: "Email: xuxiaofei915@gmail.com" }, { message: "Github: https://github.com/dongsuo" }, { message: "WeChat Offical Account: dongsuo" } ] }
就是這么簡單,不需要更多的語言。
異步任務taskList 的核心是名稱與任務名一致的函數,該函數接受兩個參數:一個函數(pushToList)和命令行(input)的輸入值。你可以根據input值來執行具體的任務,然后將message作為參數調用pushToList().當任務結束時,需要返回一個promise,promise要resolve一個message對象通知組件任務結束,如有需要,也可以reject一個message對象通知組件任務出錯,示例代碼:
echo: { description: "Echoes input, Usage: echo", //echo將用戶的輸入原封不動地返回,顯示在terminal窗口中 echo(pushToList, input) { //解析用戶輸入 input = input.split(" ") input.splice(0, 1) const p = new Promise(resolve => { // 將message對象作為參數調用pushToList() pushToList({ time: generateTime(), label: "Echo", type: "success", message: input.join(" ") }); // 通過resolve一個message對象通知組件任務結束 resolve({ type: "success", label: "", message: "" }) }) // 返回 promise 對象 return p } }
好了,核心內容就是這么多,下面介紹一下上文中提到多次的message對象:
message 對象{ time: generateTime(), type: "warning", label: "warning", message: "This is a Waning Message!" }
message對象目前支持如上四個字段:
time字段可省略,建議使用提供的 generateTime 方法,也可自己配置;
type可省略,目前支持5個值:info,warning,success,error,system,分別對應5種顏色,用于label字段的高亮;
label字段可省略,可隨意賦值,但是不建議太長,影響美觀;
message為必須字段就是純文本內容;
部署當你已經確認簡歷做好、沒有bug之后,就可以部署了,首先執行npm run build命令,然后把你的代碼push到Github上,點擊settings, 找到Github Pages,將source設置為docs folder,點擊save就部署成功了。
That"s All以上就是做一個命令行簡歷所需要知道的全部內容了,如果還有小伙伴有問題的話,歡迎issue或者pr.
https://github.com/dongsuo/vu...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/89754.html
摘要:這應該是你見過的最全前端下載總結自己整理的一些項目中遇到過的關于上傳和下載的一些,大前端系列也就是純前端端完成的下載,只要獲取到數據下載工作全是前端來做,僅供給位看官參考,避免踩坑,即插即用,歡迎和 這應該是你見過的最全前端下載總結自己整理的一些項目中遇到過的關于上傳和下載的一些Demo,大前端系列(也就是純前端 + node端完成的下載,只要獲取到數據下載工作全是前端來做),僅供給位...
摘要:依云醬呢,是一名資深用戶已經不會用現在的的,喜歡同時也屬蛇,看來是命中注定,最近喜歡上了不是那個黃褐色的鐵氧化合物哦。清蒸依云醬,我快死在你的標題上了。 showImg(https://segmentfault.com/img/bVRChj?w=900&h=385); 社區訪談的上期說到上帝有明是如何通過他的個人魅力撩得妹紙歸,回憶傳送門,不過逗得了妹紙笑,引得了漢紙拜(唔,崇拜的拜,...
摘要:依云醬呢,是一名資深用戶已經不會用現在的的,喜歡同時也屬蛇,看來是命中注定,最近喜歡上了不是那個黃褐色的鐵氧化合物哦。清蒸依云醬,我快死在你的標題上了。 showImg(https://segmentfault.com/img/bVRChj?w=900&h=385); 社區訪談的上期說到上帝有明是如何通過他的個人魅力撩得妹紙歸,回憶傳送門,不過逗得了妹紙笑,引得了漢紙拜(唔,崇拜的拜,...
摘要:沒有任何意外,王小二的公司用來開發公司的主打產品。臃腫的著手開干吧小二打開熟悉的,找到提交訂單模塊的。要不再去請教下哥的煩惱小二找到哥,詳細的描述了他的問題。 流行的MVC架構模式 如今的Web開發,各種框架風起云涌,勢如破竹。 從國民第一的ThinkPhp到稱霸全球的Laravel,這些框架有一個共同特征,都采用了MVC的架構模式。 showImg(https://segmentfa...
閱讀 3253·2021-11-11 11:00
閱讀 2573·2019-08-29 11:23
閱讀 1456·2019-08-29 10:58
閱讀 2333·2019-08-29 10:58
閱讀 2960·2019-08-23 18:26
閱讀 2516·2019-08-23 18:18
閱讀 2048·2019-08-23 16:53
閱讀 3422·2019-08-23 13:13