微信平臺下的個人知識庫_第1頁
微信平臺下的個人知識庫_第2頁
微信平臺下的個人知識庫_第3頁
微信平臺下的個人知識庫_第4頁
微信平臺下的個人知識庫_第5頁
已閱讀5頁,還剩12頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

基于微信小程序個人知識管理系統設想及達成目錄緒論 1論文研究的背景、意義及目的 1國內外研究現狀 1本文研究的主要內容 2系統分析與設計 個人知識管理概念與流程 2總體需求分析 3系統功能設計 3系統UI設計 4系統數據庫設計 5系統開發相關技術 6微信小程序相關技術 6Egg.js 7服務器部署 8docker介紹 73簡介 7Mongodb 9Web端相關技術 8 8 83.4.3Yup與react-hook-form 9系統實現 9登錄注冊模塊實現 9登錄成功首頁實現 知識庫模塊實現 文字編輯器實現 復習模塊的實現 5系統測試 測試分析 12測試方案 測試結果 總結 附錄: 參考文獻 致 謝 PAGE\*ROMANPAGE\*ROMANIII基于微信小程序個人知識管理系統設想及達成摘 要在學生的學習和研究中,需要不斷吸收具有意義的新知識,將互聯網碎片化的知識進行整合意味著以一種復雜的方式創造、儲存、分享和使用知識來提高自我效能,以此來協調未來在特定任務上的表現。自我效能有三個關鍵特征。第一點,自我效能是一個人對自己產生結果的能力的信念,而不是對結果影響的評估。第二點,自我效能關注的是整體結果。最后,自我效能是對一個人未來能做什么的判斷,而不是對一個人過去做過什么的評估。所以有效的整合知識為個人自我效能的提升具有很大影響。本文借助華為云服務器完成數據的云交互,讓大學生隨心所欲的建立和管理個人知識,使其有序化,并不斷把新知識融入到個人知識體系當中,在解決問題時,可以有效利用和提取相應的專業知識,優化自身的自我效能,提升自己的知識構建【關鍵詞】微信小程序個人知識庫PAGE1PAGE11緒論論文研究的背景、意義及目的國內外研究現狀在如今知識庫大概分為:博客類,通過編寫日志按照時間順序發布到網上,其他用戶也可以利用評論進行經驗交流,如國外的WordPress,Tumblr,Medium等,國內的博客園,掘金之類,雖然其整體信息量相比搜索引擎會比較小,但是會過濾很多無用信息以及和發布人互動,更有實用價值;筆記類,國外有oneNote,StickyNotesbyUkiv,Ideanote,Simplenote,NimbusNote,Encryptic,GoogleKeep,RoamResearch,Notion,Notejoy。國內有語雀,印象筆記之類。數字化筆記可以方便大家把信息和想法記錄下來,并以自己的理解將其分類以便有所遺忘時進行翻看,它們共同的特點是:支持多種輸入形式(文字,照片,視頻),支持云端同步,支持知識共享,支持標簽分類,讓筆者和讀者都可以快速關心標簽以內的內容;導圖和地圖類,國外有openknowledgemaps,mindmanager,xmind等,國內有百度腦圖之類,導圖是把信息可視化,通常圍繞單個概念知識,地圖則是知識之間的聯系和導航,幫助使用者將知識匯聚成知識網;數字圖書館類分為兩類,官方的數字圖書館,如各大高校的數字圖書館能提供專業的信息資源,而個人圖書館能把看到的文章收藏到自我的知識庫內,兼顧了信息管理和個人知識管理。整合現有的知識庫工具,可以得知知識庫的管理過程包括檢索獲取,分類命名,整理存儲這些功能。無論是國內外,知識庫工具都已經變得十分重要,在國內的團隊辦公軟件中,釘釘和飛書都具有知識庫構建的功能。本文研究的主要內容方案設計及選擇圖1.1知識管理微觀模型總體需求分析在本次的設計中,用戶的體驗流程為結構如圖所示:用戶注冊登錄用戶注冊登錄查看操作查看操作查看查看操作查看查看操作查看查看知識庫復習題文章更新指數待辦學習任務知識庫復習題文章更新指數待辦學習任務圖1.2宏觀需求流程圖在本次的設計中,用戶先要進行賬戶的登錄,如果后端數據庫沒有查詢到匹配的數據,則需要用戶進行注冊,將數據存儲到數據庫中,在用戶登錄之后可以看見自己的文章更新指數來查看最近每天的學習狀態,也可以查看自己預定的學習任務,這個任務可以不完成,是給學習者的一個提醒,及時判斷自己的學習狀態并進行自我調整。最重要的是創建知識庫,在登錄之后可以隨意創建自己的知識合計庫然后新建文章,這個需要學者有一定的判別歸納能力,知道自己學習的東西是歸為哪一類別,這也是在待辦學習任務中隱式提示學者需要考慮的事情。在文章的功能中,用戶可以用文字加粗/斜體等功能來提醒自己最關鍵的文章的信息。在添加知識庫之后,用戶可以根據知識庫來增加復習題,對于知識的回顧也是非常重要的一件事,德國心理學家艾賓浩斯對記憶遺忘規律作過相應的研究,以此證明了遺忘過程是不均衡的,它隨時間的遞進而有所不同,在學習到一個知識點后最初遺忘得比較快,而以后便逐漸緩慢下來。俄國教育家烏申斯基原則也說明了及時復習的重要性,他表示與其借助復習去恢復記憶,不如借助復習去防止遺忘。這兩位學者的理論都不約而同證明了在學習中我們應當去“鞏固建筑物”,而不是“修補已經倒塌的建筑物”。系統功能設計2.3.1待辦學習任務設計在待辦學習任務這種todolist的列表當中,應該擁有添加學習計劃,刪除學習計劃和修改學習計劃的功能,而因為這種代辦學習任務是服務于知識庫的,所以在添加學習任務時,把其設計為預計更新的知識庫章節,使用者可以自行添加對應的知識庫。具體流程如下圖:添加所屬知識庫(可選)具體知識點/文章標題新建學習計劃添加所屬知識庫(可選)具體知識點/文章標題新建學習計劃添加添加修改刪除修改刪除選擇近五日日期與優先級顯示學習計劃用戶選擇近五日日期與優先級顯示學習計劃用戶圖1.3學習計劃模塊流程圖用戶在添加學習計劃時,需要寫上具體的知識點或者文章標題,再填寫上所屬于的知識庫,選擇日期,比起長期的計劃,短期計劃更加能夠堅持完成,所以再本次的設計中,只設計了短期計劃的添加,當填寫完這些信息后用戶可以去對每個學習計劃進行修改刪除或查看。2.3.2知識庫設計知識庫的建立,文章的增刪改查,文章更新自動更新用戶更新指數功能,具體流程如下圖所示:PAGEPAGE20系統自動修改,刪除系統自動修改,刪除新建文章新建知識庫更新文章指數用戶新建文章新建知識庫更新文章指數用戶、圖1.4知識庫與文章模塊流程圖用戶在新建了知識庫之后可以在知識庫中隨意添加文章之后系統會自動將其算在文章更新指數之中,在添加文章時,為了方便用戶查閱,也會自動同步用戶增加/更改文章的時間,在文章編輯的功能中,主要實現以下幾點:2.3.1復習題模塊設計復習題目,復習內容新增復習題選擇知識庫用戶在用戶增加復習題時,應該選擇相應的知識庫來辨別所要復習的類別,方便用戶在碎片時間中選擇自己需要構建維護的學習建筑物。復習題目,復習內容新增復習題選擇知識庫用戶查看選擇知識庫查看復習題查看選擇知識庫查看復習題圖1.5復習題模塊流程圖系統UI設計UI界面實現了人與系統之間的有效互動,好的UI設計可以讓用戶在系統之間進行自然的交流互動操作,同時利用色彩與心理的間接反應,帶給使用者好的感受。圖1.6色彩對心理影響的分類(圖源:毛艷艷)在本次的設計中,主要的色調是藍,藍色給人一種沉穩的感覺,而在知識學習的過程中,學者需要沉靜下來,這符合了這一設計的最基本要求,在許多學術界面中,也都是使用的藍色,比如知網,全球學術快報,在團隊工作軟件中,也有許多以藍色為基調的APP設計,比如騰訊會議,飛書,這些都是因為藍色對于人的心理暗示為沉靜與安穩。在首頁登錄的背景選擇中,本次選擇了巴西插畫家paolaSaliby的作品,在其美麗又敏感的作品中,她表示其繪制的角色大多是在經歷孤獨,都是在自己的內心世界中進行個人旅行。在攀登知識這座大山的時候,我們每個人也都相當于是在孤獨的在追求知識的旅途,所以paolaSaliby的作品也與本次設計的作品不謀而合。系統數據庫設計當用戶注冊之后,在數據庫中會單獨為用戶開一條數據,為用戶開一個獨有的id,然后通過傳遞這個獨特的id和一些字段來進行數據處理,所以只需要考慮功能接口需要的數據準備,不用面向特定功能模塊進行數據庫結構設計,這里簡單列出一些字段:用戶信息字段字段名稱數據類型約束條件字段說明_idstring唯一用戶唯一IDuaernamestring非空用戶名suerpassstring非空用戶密碼updateindexarray可為空更新指數todolistarray可為空學習計劃repositoryarray可為空知識庫allarticlearray可為空所有文章表中描述了每行數據中的主要字段,具體知識庫庫中的字段如下表:知識庫字段字段名稱數據類型約束條件字段說明namestring非空知識庫名稱briefstring可為空知識庫簡介privacyBoolean非空知識庫是否公開listidstring唯一知識庫唯一IDwritingsnum非空學習計劃articlearray可為空文章集合具體文章中的字段如下表文章字段字段名稱數據類型約束條件字段說明htmlstring非空文章內容titlestring可為空文章標題articleidBoolean非空文章唯一IDdaystring唯一文章創建/修改日期momentnum非空文章創建/修改時刻系統開發相關技術微信小程序相關技術微信小程序的設計模式是MVC模式,即模型、視圖和控制器的縮寫。MVC是一種流行的代碼組織方式。MVC背后的思想是,代碼的每一部分都有一個目的,而這些目的是不同的。一些代碼保存應用的數據,一些代碼讓應用看起來更漂亮,一些代碼控制應用的功能。MVC是一種將代碼的核心功能組織成它們自己的、組織整齊的模型方法。你在思考你的應用程序,重新訪問你的應用程序,或與他人分享你的應用程序時更容易和干凈。模型:模型代碼是你需要的代碼封裝。視圖:視圖代碼是由所有直接與用戶交互的功能。這就是使你的應用看起來很漂亮的代碼,來定義你的用戶看到和與它交互。控制器:控制器代碼充當模型和視圖之間的聯絡人,接收用戶輸入并決定如何處理它。它是應用程序的大腦,將模型和視圖聯系在一起。這有點像做飯,你有一個裝滿食物的冰箱,就像Model一樣。冰箱(Model)里有我們準備做晚餐的原材料。你可能也有一兩個食譜。食譜規定了你要在冰箱里取出哪些食物,如何將它們組合在一起,以及你需要烹飪多長時間。然后,你有餐具,銀器等,這是你的饑餓的朋友和家人用來吃晚餐。桌面項類似于視圖。它們允許您的用戶與您的模型和控制器的創建進行交互。在微信小程序整個程序中,pages目錄里每一個目錄文件夾都是小程序的一個頁面,每一個頁面由js、json、wxml、wxss四部分組成;image目錄,存放頁面上用到的圖片;app.js負責整體邏輯交互;app.json是全局配置;app.wxss是整體樣式。除了對目錄的把控,還需要了解微信小程序的生命周期:微信小程序生命周期onLoad生命周期函數--監聽頁面加載onReady生命周期函數--監聽頁面初次渲染完成onShow生命周期函數--監聽頁面顯示onHide生命周期函數--監聽頁面隱藏onUnload生命周期函數--監聽頁面卸載同時在微信小程序的開發中必須了解API接口與組件的思想。應用程序編程接口(api)使應用程序能夠輕松安全地交換數據和功能,從而簡化了軟件開發和創新。應用程序編程接口使公司能夠向外部第三方開發人員、業務合作伙伴和公司內部部門開放其應用程序的數據和功能。這允許服務和產品通過文檔化的接口相互通信,并利用彼此的數據和功能。開發人員不需要知道API是如何實現的;他們只是使用接口與其他產品和服務進行通信。在本次的設計中,所用到的微信生態提供的API就有:微信小程序APIwx.switchTab跳轉到tabBar頁面,并關閉其他所有非tabBar頁面wx.navigateTo保留當前頁面,跳轉到應用內的某個頁面wx.navigateBack關閉當前頁面,返回上一頁面或多級頁面wx.showModal顯示模態對話框wx.setNavigationBarTitle動態設置當前頁面的標題wx.setStorageSync將數據存儲在本地緩存中指定的key中wx.setNavigationBarColor設置頁面導航條顏色組件,在編程和工程學科中,組件是更大的程序或結構的可識別部分。通常,組件提供一個特定的函數或一組相關的函數。在程序設計中,系統被劃分為多個組件,這些組件經常由多個模塊組成。在面向對象編程和分布式對象技術中會有很多組件,組件是一種可重用的程序構件,它可以與分布式網絡中同一計算機或其他計算機中的其他組件組合在一起形成應用程序。組件的例子包括:圖形用戶界面中的單個按鈕、小型計算器、數據庫管理器的界面。在有很多重復UI的時候,我們都可以封裝組件進行復用。Egg.jsEgg.js是由Node.js和Koa.js發展而來的,Node.js的官方API支持的異步編程模型都是回調形式,因此帶來很多回調地獄的問題。說到回調地獄,是因為同步Javascript中,當我們運行代碼時,瀏覽器會立即返回結果。一次只能發生一個操作,因為它是單線程的。因此,在執行操作時,所有其他進程都被擱置。因為一些函數的響應不是立即的。這需要一些時間,下次操作不能立即開始。它必須等待函數在后臺完成。由于完成這些操作需要時間,在完成回調函數之前不能繼續到下一行,因為它可能會拋出一個表示不可用的錯誤,但是也不能立即暫停程序。在回調函數嵌套回調函數這種方式下,代碼結構看起來像一個金字塔,使其難以閱讀和維護。此外,如果一個函數中存在錯誤,那么所有其他函數都會受到影響。Koa.js應運而生,Koa.js的官方網站提到Koa.js是一個更小,更有表現力,更健壯的web應用程序和api的基礎。Koa消除了回調,增加了洋蔥模型的使用方式,如圖1.7,在洋蔥模型中,每一層相當于一個中間件,用來處理特定的功能,比如錯誤處理、Session處理等等。其處理方式先是Request,從外層到內層,然后執行下一步函數,之后是執行函數后的Response,從內層到外層,也就是說每一個中間件都有兩次處理時機。并且該框架內置的錯誤包羅萬象可幫助開發人員避免網站崩潰。即使不編寫額外的代碼,程序員也可以使用簡單的“try/catch”命令報告錯誤。開發者也可以通過簡單地修改默認設置在Koa.js中配置錯誤處理。它基于ES6規范構建。通過擁有許多新的類和模塊,ES6可以更輕松地構建任何復雜的程序。Koa.js還幫助開發者使用Context來封裝普通的響應和請求對象到一個單獨的對象中。這個統一的對象通過包含大量有用的方法和評估器,這樣開發人員會更容易創建web的應用程序和api。圖1.7koa.js洋蔥模型而Egg.js是為構建企業應用和框架而誕生的,目的是在追求明確規范和合作的過程中求同存異,專注于為Web開發提供核心特性,提供靈活的、可擴展的插件機制,而不是常見Web框架中流行的市場模式(集成了數據庫、模板引擎、前端框架等功能)。不會進行技術選擇,因為默認的技術選擇使得框架的可伸縮性太差,無法滿足各種定制需求。在Egg.js的幫助下使用者可以很容易地基于現有的技術堆棧構建適合他們業務場景的框架。Egg的插件機制是非常可擴展的,聚合插件并根據它們自己的業務場景定制配置,極大地降低了開發成本。當然它本身只集成插件的可能性,而不是提供插件。容器化技術和dockerDocker是Moby項目的一個子集,是一個用于在服務器和云上構建、運行和管理容器的軟件框架。術語“docker”可以指工具(命令和守護進程),也可以指Dockerfile文件格式。過去,當你想要運行一個web應用程序,您買了一個服務器,Linux安裝,設置堆棧,運行應用程序。然而,時代已經變了,互聯網不再專注于單個服務器,而是建立在一個通常被稱為“云”的系統中相互依賴、冗余的服務器陣列之上。Docker引擎對于需要輕量級、干凈的測試環境,但不需要復雜編配的獨立開發人員來說非常有用,服務器的概念可以從硬件的限制中解脫出來,而從本質上成為一個軟件。這些基于軟件的服務器稱為容器,它們是它們所運行的Linux操作系統加上超本地化運行時環境(容器的內容)的混合。MongodbWeb端相關技術Next.js優點系統實現登錄注冊模塊實現圖4.1登錄注冊界面登錄成功首頁實現圖4.2添加計劃界面知識庫模塊實現圖4.3知識庫界面文字編輯器實現圖4.4文章編輯界面及最近文檔界面復習模塊的實現圖4.4復習界面系統測試測試分析測試分為系統測試合集成測試,系統測試是一個測試級別,在這個級別中執行測試,以了解一個完整的構建是否符合為其制定的功能性和非功能性需求。相反,集成測試是同時連接和測試兩個或多個軟件單元的測試階段。系統測試檢查每個軟件單元,以確保它們作為一個整體或組合構建的熟練程度。通常在單元測試和集成測試之后進行系統測試。測試方案在本次的設計中先是使用單元測試再進行系統測試,在本地開發時,每完成一個功能,先不連接數據庫,就在微信開發者工具中進行單元測試。在系統整體開發完畢后,在本地把egg.js運行起來,鏈接到華為云上的mongodb進行整體流程的測試,注冊登錄的功能是否完善,登陸后是否跳轉到首頁,首頁顯示的時候功能是否齊全,在添加完文章之后是否顯示正確,進行修改時是否會有錯誤,在復習系統中答案與題目是否匹配等等測試結果在本次個人知識庫小程序中的測試比較順利,成功完成了登錄注冊的功能,計劃的添加更改功能,知識庫的構建與文章填寫修改功能,復習題的增加查看功能,每個模塊的功能都達到了基本的預期,這次的測試也比較順利。總結在這次的設計中,我借鑒的是語雀的功能模塊,最初的設計也是因為我經常在語雀上做筆記然后有這樣的靈感,在長達幾個月的實踐中,從有一些懵懂到做出這些功能,中間也花費了大量的學習時間與成本,很多問題都需要去自己研究解決,在stackoverflow,github,掘金網站上有很多優質的答案,也讓我逐漸成長了起來。在開發的期間需要不斷的思考,也讓對整體的流程架構有一定的理解,從而鍛煉自己得到了提升。在這次的設計中我接觸到微信小程序領域和Egg.js領域,一個軟件數據的交互從無到有我終于有了具體的認知,對于mogodb的命令使用和在華為云上部署linux我也是第一次接觸,讓我對運維也有了一定的認識。雖然目前只是一名大四學生,在做這個項目的時候還有一定挑戰,但是經過自我的查詢問題能力解決了開發中的問題,完成了這個項目,也是心里感覺舒服,挑戰了自我還達成了目的。但是我的腳步不會止步于此,我會繼續向前,繼續完善我的技術,努力提高自己讓自己變得優秀起來。參考文獻[1].葉俊.符合人全面發展的知識結構的塑造[J].哲學進展,2020,9(4):175-179.[2].袁芳,許文.基于微信小

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論