freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于nodejs的小型框架設(shè)計與實現(xiàn)畢業(yè)設(shè)計-閱讀頁

2025-03-18 09:12本頁面
  

【正文】 存的清單中。如下圖所示 圖 Git 中的文件狀態(tài)變化周期如圖所示 。 圖 而 Git 關(guān)心的則是文件 數(shù)據(jù)的整體變化如圖 圖 git 總結(jié) 第 13 頁 共 63 頁 Git 的設(shè)計顛覆了傳統(tǒng)版本控制的設(shè)計思想,對于文件控制的每環(huán)節(jié)的實現(xiàn)方式提供了新的設(shè)計方案。 javascrip 高級語言特性 是基于 javascript 設(shè)計的,因此框架在設(shè)計實現(xiàn)時需要大量運用高級語言特性以此實現(xiàn)框架的可讀性和可復(fù)用性。正確使用作用域可以使代碼更清晰、易懂。 JavaScript 的作用域與常見的語言如 C、C++、 Java 等不同,它不是以花括號包圍的代碼塊作為作用域,而是已函數(shù)的定義范圍為作用域。例如下面代碼,在大多數(shù)類 C 的語言中會出現(xiàn)變量未定義的錯誤,而在 JavaScript 中卻完全合法: if (true) { var somevar = 39。 } (somevar)。 全局作用域 在 JavaScript 中有一種特殊的對象稱為 全局對象。由于全局對象的所有屬性在任何地方都是可見的,所以這個對象又稱為 全局作用域。滿足以下條件的變量屬于全局作用域: 第 14 頁 共 63 頁 在最外層定義的變量; 全局對象的屬性; 任何地方隱式定義的變量(未定義直接賦值的變量)。這一點經(jīng)常被人遺忘,而模塊化編程的一個重要原則就是避免使用全局變量,所以我們在任何地方都不應(yīng)該隱式定義變量。在函數(shù)中引用一個變量時, JavaScript 會先搜索當(dāng)前函數(shù)作用域,或者稱為“局部作用域”,如果沒有找到則搜索其上層作用域,一直到全局作用域。:對于開發(fā)者來說,在訪問未定義的變量或定義了但沒有初始化的變量時,獲得的值都是 undefined。 閉 包 閉包( closure)是函數(shù)式編程中的概念,出現(xiàn)于 20 世紀(jì) 60 年代,最早實現(xiàn)閉包的語言是 Scheme,它是 LISP 的一種方言。 閉包的嚴(yán)格定義是“由函數(shù)(環(huán)境)及其封閉的自由變量組成的集合體。 對象 第 15 頁 共 63 頁 提起面向?qū)ο蟮某绦蛟O(shè)計語言,大多數(shù)人能夠立馬想到的是 C++、 Java 等強(qiáng)類型語言, 以及 Python、 Ruby 等腳本語言,它們共有的特點是基于類的面向?qū)ο?。雖然 JavaScript 沒有類,但 JavaScript 是面向?qū)ο蟮恼Z言。因為絕大多數(shù)面向?qū)ο笳Z言中的對象都是基于類的,所以容易混淆類的實例與對象的概念。 JavaScript 中的對象是基于原型的。 JavaScript 具有函數(shù)式編程的特性, 所以函數(shù)也是一種變量,大多數(shù)時候不用與一般的數(shù)據(jù)類型區(qū)分。使用關(guān)聯(lián)數(shù)組的好處是,在不知道對象的屬性名稱的情況下,可以用變量來作為關(guān)聯(lián)數(shù)組的索引。 = 39。 obj[39。] = false JavaScript 提供了構(gòu)造函數(shù) 。 = age。 } } 以上是一個簡單的構(gòu)造函數(shù),接下來用 new 語句來創(chuàng)建對象: 第 16 頁 共 63 頁 var xiaomin = new User(39。,18)。 上下文對象 在 JavaScript 中, this 關(guān)鍵字代表語境環(huán)境的上下文,即被調(diào)用函數(shù)所處的環(huán)境。 JavaScript 的函數(shù)式編程特性使得函數(shù)可以像一般的變量一樣賦值、傳遞和計算,在 JavaScript 中,本質(zhì)上,函數(shù)類型的變量是指向這個函數(shù)實體的一個引用,在引用之間賦值不會對對象產(chǎn)生復(fù)制行為。 在 JavaScript 中, call 和 apply 是兩個神奇的方法 .call 和 apply 的功能是以不同的對象作為上下文來調(diào)用某個函數(shù)。 call 和 apply 的功能是一致的,兩者細(xì)微的差別在于 call 以參數(shù)表來接受被調(diào)用函數(shù)的參數(shù),而 apply 以數(shù)組來接受被調(diào)用函數(shù)的參數(shù)。因為在絕大多數(shù)的面向?qū)ο笳Z言中,對象是基于類的(例如 Java 和 C++ ),對象是類實例化的 結(jié)果。 用了原型定義屬性和在構(gòu)造函數(shù)內(nèi)定義屬性的區(qū)別: ,子對象需要顯式調(diào)用父對象才能繼承構(gòu)造函數(shù)內(nèi)定義的屬性。 ,因為構(gòu)造函數(shù)內(nèi)的局部變量對其中定義的函數(shù)來說也是可見的。它們都是構(gòu)造函數(shù),用于生成 對象。 JavaScript 中的對象一般分為三類,它們分別是構(gòu)造函數(shù)對象,用戶創(chuàng)建的對象和原型對象。構(gòu)造函數(shù)對象指的是普通的構(gòu)造函數(shù),即通過 new 調(diào)用生成普通對象的函數(shù)。這三類對象中每一類都有一個 __proto__ 屬性,它指向該對象的原型,從任何對象沿著它開始遍歷都可以追溯 到 。原型對象有 constructor 屬性,指向它對應(yīng)的構(gòu)造函數(shù)。屬性繼承的本質(zhì)就是一個對象可以訪問到它的原型鏈上任何一個原型對象的屬性。它由GitHub 公司(曾稱 Logical Awesome)的開發(fā)者 Chris Wanstrath、 PJ Hyett 和 Tom PrestonWerner 使用 Ruby on Rails 編寫而成。據(jù) Git 用戶調(diào)查, GitHub 是最流行的 Git 存取站點。作為一個分布式的版本控制系統(tǒng),在 Git 中沒有主庫的概念,每一份復(fù) 制出的倉庫都可以獨立使用,任何兩個倉庫之間的差異都可以進(jìn)行合并到一起。與其他的代碼管理網(wǎng)站如 SourceFe 和 Google Code 提供的服務(wù)不同, GitHub 的獨特地方在于對項目進(jìn)行分支管理非常簡單,具有很高的操作性。 Ubuntu 簡介 第 18 頁 共 63 頁 Ubuntu 是基于 Debian GNU/Linux,支持 x8 x64 和 ppc 架構(gòu),由全球化的專業(yè)開發(fā)團(tuán)隊( Canonical Ltd)打造的開源 GNU/Linux 操作系統(tǒng)。 由于開源軟件越來越受歡迎,跟隨著開源協(xié)議也越來越多。本框架也將作為開源項目公布在 github 上。 下面簡單介紹一下幾種常見的開源協(xié)議以及它們適用的范圍。使用者可以自由的使用,修改源代碼,也可以將修改后的代碼作為開源或者專有軟件再發(fā)布。 BSD 是對商業(yè)應(yīng)用非常友好的開源協(xié)議。 Apache Licence Apache Licence 是著名的非盈利開源組織 Apache 采用的協(xié)議。 Apache Licence 也是對商業(yè)應(yīng)用友好的許可。 GPL( GNU General Public License) GPL 的出發(fā)點是代碼的開源 /免費使用和引用 /修改 /衍 生代碼的開源 /免費使用,它不允許修改后和衍生的代碼做為非開源的商業(yè)軟件進(jìn)行發(fā)布和盈利。 第 19 頁 共 63 頁 GPL 協(xié)議的主要內(nèi)容是只要在一個軟件中使用了具有 GPL 協(xié)議的產(chǎn)品,則該軟件產(chǎn)品必須也采用 GPL 協(xié)議,既必須也是開源和免費。因此商業(yè)軟件或者對代碼有保密要求的軟件不適合使用采用了 GPL 協(xié)議的代碼庫。和 GPL 要求任何使用/修改 /衍生之 GPL 類庫的的軟件必須采用 GPL 協(xié)議不同。這使得采用 LGPL協(xié)議的開源代碼也可以被商業(yè)軟件作為類庫引用并發(fā)布和銷售。因此商業(yè)軟件還是可以引用這些具有 LGPL 協(xié)議的代碼庫。 2.. MIT MIT 是和 BSD 一樣寬松的許可協(xié)議 ,為保留作者的版權(quán)歸屬 ,沒有任何其他限制 .也就是說 ,一旦使用 MIT 相關(guān)的代碼庫,那么在新的代碼中也必須包含原許可協(xié)議的聲明。 打 開 官 方 下 載 地 址 ,獲取系統(tǒng)相應(yīng)的安裝包,由于我們使用的是 Ubuntu系統(tǒng)所以選擇 的源代碼進(jìn)行編譯安裝。用終端進(jìn)入解壓后的文件夾。如下圖所示: 圖 圖 安裝完成后可以運行命令 node v 來查看當(dāng)前 的版本,然后運行 node 進(jìn)入到即時運行狀態(tài) 輸入輸入代碼 (“ Hello world” )。如下 第 21 頁 共 63 頁 圖所示。下載安裝包 Windows Intaller(msi)。驗證過程同 Ubuntu。 第 22 頁 共 63 頁 第三章 框架的設(shè)計與實現(xiàn) FastJsonWeb 作為以一個小型 MVC 框架,用來實現(xiàn)一般的小型高并發(fā)系統(tǒng),從實際需求角度出發(fā)應(yīng)該具備以下功能: ( 1)路 由映射功能。 ( 2) Cookie 功能。 ( 3) Seesion 功能。 (4) 屬性注入功能。 ( 5)橫向切面請求攔截功能:在請求數(shù)據(jù)到達(dá)業(yè)務(wù)邏輯前完成對請求數(shù)據(jù)的初步處理,排除非法請求等。 硬件環(huán)境 ( 1) CPU : Inter Core I3 ( 2)內(nèi)存: 4G DDR1333M ( 3)主板: H55 ( 4)硬盤: 160G 軟件環(huán)境 (1)操作系統(tǒng): Ubuntu 第 23 頁 共 63 頁 (2) 開發(fā)工具: Vim,git (3)瀏覽器 : Chrome 圖 主要流程是: 客戶端發(fā)送請求到服務(wù)端,服務(wù)端口監(jiān)聽到客戶端的請求后將請求傳遞給請求橫向切面攔截器。路由分發(fā)器根據(jù)相關(guān)配置判斷請求的屬性是業(yè)務(wù)數(shù)據(jù)請求還是靜態(tài)資源請求,傳遞給相應(yīng)的處理類。如果是業(yè)務(wù)數(shù)據(jù)請求,則根據(jù)路由規(guī)則轉(zhuǎn)發(fā)給相應(yīng)的業(yè)務(wù)邏輯對象處理。 第 24 頁 共 63 頁 服務(wù)端監(jiān)聽示意圖 圖 主要流程: 當(dāng)服務(wù)端監(jiān)聽都客戶端數(shù)據(jù)請求時講數(shù)據(jù)請求轉(zhuǎn)發(fā)給橫向切面請求攔截器。若為靜態(tài)資源,則讀取資源返回客戶端。經(jīng)過一系列攔截器處理后,若數(shù)據(jù)請求流程依然存在,則從請求數(shù)據(jù)數(shù)據(jù)中解析出請求參數(shù)然后合成對象,傳給路由分發(fā)器。 Cookie 示意圖 圖 主要功能: 從 頭信息中解析 cookie 數(shù)據(jù)封裝成數(shù)據(jù)對象提供統(tǒng)一的設(shè)置和獲取方法 第 29 頁 共 63 頁 寫入 response 頭信息中,返回客戶端。然后根據(jù)當(dāng)前系統(tǒng)時間判斷該 Session 數(shù)據(jù)對象是否過期,如果過期則清空該數(shù)據(jù)對象。最后返回該數(shù)據(jù) 對象。同過基礎(chǔ)框架的畫圖說明詳細(xì)介紹了各個功能實現(xiàn)細(xì)節(jié),以及數(shù)據(jù)流程。這一章來介紹如果快速使用 FastJsonWeb 以及主要的 API 文檔。 FastJsonWeb 文件目錄介紹 基本文件包括: 圖 其中 主要處理 Cookie 相關(guān)數(shù)據(jù)數(shù)據(jù)。 路由轉(zhuǎn)發(fā)功能 系統(tǒng)入口。 主要處理 Session 相關(guān)數(shù)據(jù) 靜態(tài)資源處理類 FastJsonWeb 的 API 說明及使用說明 構(gòu)造函數(shù): Cookie(request,response) 參數(shù)說明: request: HttpRequest 對象 response:HttpResponse 對象 公開方 法: (key,value) 功能說明: 設(shè)置一個 Cookie 鍵值對。 在 cookie 作為某個值的索引 value : 數(shù)據(jù)類型 String。 在 cookie 作為某個值的索引 返回值: 若 cookie數(shù)據(jù)對象中存在 key對 應(yīng)的值則返回該值,否則返回 undefined () 功能說明: 獲取當(dāng)前的 Session 數(shù)據(jù)對象的 sid 參數(shù)說明: 無 返回值: 若當(dāng)前 cookie 數(shù)據(jù)對象中存在 sid 則返回該 sid,否則返回 undefined (sid) 功能說明: 在 Cookie 數(shù)據(jù)對象中存儲 sid 的值(該方法不建議自己調(diào)用) 參數(shù)說明: sid:當(dāng)前 session 對象的 sid 值 返回值: 無 () 功能說明: 將 Cookie 數(shù)據(jù)對象 寫入到 response 返回數(shù)據(jù)中 參數(shù)說明: 無 返回值: 第 35 頁 共 63 頁 無 使用說明:在文件頭部通過 var cookie = required(“ ./cookie” )獲取 cookie對象 object 數(shù)據(jù)對象。若有特殊資源類型需要。 使用說明: 一般不需要自行引用。 相關(guān)說明及使用: (1) 功 能說明: 配置 404 錯誤路徑訪問的處理類 舉例: = require(39。)。該文件夾下的所有文件將已靜態(tài)資源數(shù)據(jù)的形式返回到客戶端。 所有訪問 根目錄下的 pulic 文件夾下的資源 的 url 數(shù)據(jù)請求將已靜態(tài)資源文件形式返回 功能說明: 第 36 頁 共 63 頁 配置業(yè)務(wù)邏輯處理對象與 url 地址的映射 舉例: ={ 39。:require(39。), 39。: require(39。), }。監(jiān)聽數(shù)據(jù)請求。 如: (onRequest).listen(8888
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1