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

正文內(nèi)容

基于nodejs的小型框架設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)論文(編輯修改稿)

2024-07-15 18:40 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 庫(kù)。如下圖所示 Git中的文件狀態(tài)變化周期如圖所示。 Git與其他版本控制系統(tǒng)Git 和其他版本控制系統(tǒng)的主要差別在于,其他版本控制系統(tǒng)只關(guān)心文件內(nèi)容發(fā)生的差異變化。 git總結(jié)Git的設(shè)計(jì)顛覆了傳統(tǒng)版本控制的設(shè)計(jì)思想,對(duì)于文件控制的每環(huán)節(jié)的實(shí)現(xiàn)方式提供了新的設(shè)計(jì)方案。Git實(shí)際上可以看做一個(gè)文件系統(tǒng),不過(guò)對(duì)比普通文件系統(tǒng)它顯得非常小巧而已。 javascrip高級(jí)語(yǔ)言特性,因此框架在設(shè)計(jì)實(shí)現(xiàn)時(shí)需要大量運(yùn)用高級(jí)語(yǔ)言特性以此實(shí)現(xiàn)框架的可讀性和可復(fù)用性。下面介紹javascript的相關(guān)語(yǔ)言特性變量的作用域結(jié)構(gòu)化編程語(yǔ)言中的一個(gè)重要概念是作用域,變量的可見范圍和生命周期就是由作用域所決定。正確使用作用域可以使代碼更清晰、易懂。作用域可以減少命名沖突,而且作用域是垃圾回收的基本單元。JavaScript 的作用域與常見的語(yǔ)言如C、C++、Java等不同,它不是以花括號(hào)包圍的代碼塊作為作用域,而是已函數(shù)的定義范圍為作用域。這個(gè)特性被大多數(shù)人忽視并誤解,從而導(dǎo)致了非常多的莫名其妙的錯(cuò)誤。例如下面代碼,在大多數(shù)類 C 的語(yǔ)言中會(huì)出現(xiàn)變量未定義的錯(cuò)誤,而在 JavaScript 中卻完全合法:if (true) {var somevar = 39。value39。}(somevar)。 // 輸出 value這是因?yàn)?JavaScript 的作用域完全是由函數(shù)來(lái)決定的,if、for 語(yǔ)句中的花括號(hào)不是獨(dú)立的作用域。 全局作用域在 JavaScript 中有一種特殊的對(duì)象稱為 全局對(duì)象。 對(duì)應(yīng)的是 global對(duì)象,在瀏覽器中對(duì)應(yīng)的是 window 對(duì)象。由于全局對(duì)象的所有屬性在任何地方都是可見的,所以這個(gè)對(duì)象又稱為 全局作用域。全局作用域中的變量不論在什么函數(shù)中都可以被直接引用,而不必通過(guò)全局對(duì)象。滿足以下條件的變量屬于全局作用域:在最外層定義的變量;全局對(duì)象的屬性;任何地方隱式定義的變量(未定義直接賦值的變量)。需要格外注意的是第三點(diǎn),在任何地方隱式定義的變量都會(huì)定義在全局作用域中,即不通過(guò) var 聲明直接賦值的變量。這一點(diǎn)經(jīng)常被人遺忘,而模塊化編程的一個(gè)重要原則就是避免使用全局變量,所以我們?cè)谌魏蔚胤蕉疾粦?yīng)該隱式定義變量。函數(shù)作用域不同于大多數(shù)類 C 的語(yǔ)言,由一對(duì)花括號(hào)封閉的代碼塊就是一個(gè)作用域,JavaScript 的作用域是通過(guò)函數(shù)來(lái)定義的,在一個(gè)函數(shù)中定義的變量只對(duì)這個(gè)函數(shù)內(nèi)部可見,我們稱為函數(shù)作用域。在函數(shù)中引用一個(gè)變量時(shí),JavaScript 會(huì)先搜索當(dāng)前函數(shù)作用域,或者稱為“局部作用域”,如果沒有找到則搜索其上層作用域,一直到全局作用域。JavaScript 的函數(shù)定義是可以嵌套的,每一層是一個(gè)作用域,變量搜索順序是從內(nèi)到外。:對(duì)于開發(fā)者來(lái)說(shuō),在訪問(wèn)未定義的變量或定義了但沒有初始化的變量時(shí),獲得的值都是 undefined。可以認(rèn)為無(wú)論在函數(shù)內(nèi)什么地方定義的變量,在一進(jìn)入函數(shù)時(shí)就被定義了,但直到 var 所在的那一行它才被初始化,所以在這之前引用到的都是 undefined 值。閉包閉包(closure)是函數(shù)式編程中的概念,出現(xiàn)于 20 世紀(jì) 60 年代,最早實(shí)現(xiàn)閉包的語(yǔ)言是 Scheme,它是 LISP 的一種方言。之后閉包特性被其他語(yǔ)言廣泛吸納。閉包的嚴(yán)格定義是“由函數(shù)(環(huán)境)及其封閉的自由變量組成的集合體。” 閉包有兩個(gè)主要用途,一是實(shí)現(xiàn)嵌套的回調(diào)函數(shù),二是隱藏對(duì)象的細(xì)節(jié)。對(duì)象提起面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,大多數(shù)人能夠立馬想到的是 C++、Java 等強(qiáng)類型語(yǔ)言,以及 Python、Ruby 等腳本語(yǔ)言,它們共有的特點(diǎn)是基于類的面向?qū)ο蟆6f(shuō)到 JavaScript,很少能讓人想到它面向?qū)ο蟮奶匦?,因?yàn)樗鼪]有類。雖然JavaScript 沒有類,但JavaScript 是面向?qū)ο蟮恼Z(yǔ)言。JavaScript 只有對(duì)象,對(duì)象就是對(duì)象,不是類的實(shí)例。因?yàn)榻^大多數(shù)面向?qū)ο笳Z(yǔ)言中的對(duì)象都是基于類的,所以容易混淆類的實(shí)例與對(duì)象的概念。對(duì)象就是類的實(shí)例,這在大多數(shù)語(yǔ)言中都沒錯(cuò),但在 JavaScript 中卻不適用。JavaScript 中的對(duì)象是基于原型的。創(chuàng)建和訪問(wèn)JavaScript 中的對(duì)象實(shí)際上就是一個(gè)由屬性組成的關(guān)聯(lián)數(shù)組,屬性由名稱和值組成,值的類型可以是任何數(shù)據(jù)類型,或者函數(shù)和其他對(duì)象。 JavaScript 具有函數(shù)式編程的特性,所以函數(shù)也是一種變量,大多數(shù)時(shí)候不用與一般的數(shù)據(jù)類型區(qū)分。在 JavaScript 中,使用句點(diǎn)運(yùn)算符和關(guān)聯(lián)數(shù)組引用是等價(jià)的,也就是說(shuō)任何對(duì)象(包括this 指針)都可以使用這兩種模式。使用關(guān)聯(lián)數(shù)組的好處是,在不知道對(duì)象的屬性名稱的情況下,可以用變量來(lái)作為關(guān)聯(lián)數(shù)組的索引。如:以下定義都是有效的 var obj = {}。 = 39。bar39。 obj[39。prop_239。] = falseJavaScript 提供了構(gòu)造函數(shù)。如:function User(name, uri) { = name。 = age。 = function() {()。}}以上是一個(gè)簡(jiǎn)單的構(gòu)造函數(shù),接下來(lái)用 new 語(yǔ)句來(lái)創(chuàng)建對(duì)象:var xiaomin = new User(39。byvoid39。,18)。然后就可以通過(guò) someuser 來(lái)訪問(wèn)這個(gè)對(duì)象的屬性和方法了。上下文對(duì)象在 JavaScript 中,this 關(guān)鍵字代表語(yǔ)境環(huán)境的上下文,即被調(diào)用函數(shù)所處的環(huán)境。上下文對(duì)象的作用是在一個(gè)函數(shù)內(nèi)部引用調(diào)用它的對(duì)象本身,JavaScript 的任何函數(shù)都是被某個(gè)對(duì)象調(diào)用的,包括全局對(duì)象,所以 this 指針是一個(gè)非常重要的東西。JavaScript 的函數(shù)式編程特性使得函數(shù)可以像一般的變量一樣賦值、傳遞和計(jì)算,在 JavaScript 中,本質(zhì)上,函數(shù)類型的變量是指向這個(gè)函數(shù)實(shí)體的一個(gè)引用,在引用之間賦值不會(huì)對(duì)對(duì)象產(chǎn)生復(fù)制行為??梢酝ㄟ^(guò)函數(shù)的任何一個(gè)引用調(diào)用這個(gè)函數(shù),不同之處僅僅在于上下文。在 JavaScript 中,call 和 apply 和 apply 的功能是以不同的對(duì)象作為上下文來(lái)調(diào)用某個(gè)函數(shù)。簡(jiǎn)而言之,就是允許一個(gè)對(duì)象去調(diào)用另一個(gè)對(duì)象的成員函數(shù)。call 和 apply 的功能是一致的,兩者細(xì)微的差別在于 call 以參數(shù)表來(lái)接受被調(diào)用函數(shù)的參數(shù),而 apply 以數(shù)組來(lái)接受被調(diào)用函數(shù)的參數(shù)。原型原型是 JavaScript 面向?qū)ο筇匦灾兄匾母拍?。因?yàn)樵诮^大多數(shù)的面向?qū)ο笳Z(yǔ)言中,對(duì)象是基于類的(例如 Java 和 C++ ),對(duì)象是類實(shí)例化的結(jié)果。而在JavaScript 語(yǔ)言中,沒有類的概念。用了原型定義屬性和在構(gòu)造函數(shù)內(nèi)定義屬性的區(qū)別:,子對(duì)象需要顯式調(diào)用父對(duì)象才能繼承構(gòu)造函數(shù)內(nèi)定義的屬性。,包括函數(shù)在內(nèi)都會(huì)被重復(fù)創(chuàng)建,同一個(gè)構(gòu)造函數(shù)產(chǎn)生的兩個(gè)對(duì)象不共享實(shí)例。,因?yàn)闃?gòu)造函數(shù)內(nèi)的局部變量對(duì)其中定義的函數(shù)來(lái)說(shuō)也是可見的。JavaScript 中有兩個(gè)特殊的對(duì)象: Object 與 Function。它們都是構(gòu)造函數(shù),用于生成對(duì)象。 是所有對(duì)象的祖先, 是所有函數(shù)的原型,包括構(gòu)造函數(shù)。JavaScript 中的對(duì)象一般分為三類,它們分別是構(gòu)造函數(shù)對(duì)象,用戶創(chuàng)建的對(duì)象和原型對(duì)象。用戶創(chuàng)建的對(duì)象,即用 new 語(yǔ)句顯式構(gòu)造的對(duì)象。構(gòu)造函數(shù)對(duì)象指的是普通的構(gòu)造函數(shù),即通過(guò) new 調(diào)用生成普通對(duì)象的函數(shù)。原型對(duì)象特指構(gòu)造函數(shù) prototype 屬性指向的對(duì)象。這三類對(duì)象中每一類都有一個(gè) __proto__ 屬性,它指向該對(duì)象的原型,從任何對(duì)象沿著它開始遍歷都可以追溯到 。構(gòu)造函數(shù)對(duì)象有 prototype 屬性,指向一個(gè)原型對(duì)象,通過(guò)該構(gòu)造函數(shù)創(chuàng)建對(duì)象時(shí),被創(chuàng)建對(duì)象的 __proto__ 屬性將會(huì)指向構(gòu)造函數(shù)的 prototype 屬性。原型對(duì)象有 constructor屬性,指向它對(duì)應(yīng)的構(gòu)造函數(shù)。在 JavaScript 中,繼承是依靠一套叫做原型鏈(prototype chain)的機(jī)制實(shí)現(xiàn)的。屬性繼承的本質(zhì)就是一個(gè)對(duì)象可以訪問(wèn)到它的原型鏈上任何一個(gè)原型對(duì)象的屬性。 GitHub簡(jiǎn)介GitHub 是一個(gè)用于使用Git版本控制系統(tǒng)項(xiàng)目的共享虛擬主機(jī)服務(wù)。它由GitHub公司(曾稱Logical Awesome)的開發(fā)者Chris Wanstrath、PJ Hyett和Tom PrestonWerner使用Ruby on Rails編寫而成。GitHub同時(shí)提供付費(fèi)賬戶和為開源項(xiàng)目提供的免費(fèi)賬戶。據(jù)Git用戶調(diào)查,GitHub是最流行的Git存取站點(diǎn)。GitHub提供個(gè)人信息庫(kù)和Wiki網(wǎng)頁(yè),通過(guò)一個(gè)git版本庫(kù)即可對(duì)這些頁(yè)面進(jìn)行編輯。作為一個(gè)分布式的版本控制系統(tǒng),在Git中沒有主庫(kù)的概念,每一份復(fù)制出的倉(cāng)庫(kù)都可以獨(dú)立使用,任何兩個(gè)倉(cāng)庫(kù)之間的差異都可以進(jìn)行合并到一起?! ?GitHub可以托管各種git庫(kù),并提供統(tǒng)一web界面。與其他的代碼管理網(wǎng)站如SourceForge和Google Code提供的服務(wù)不同,GitHub的獨(dú)特地方在于對(duì)項(xiàng)目進(jìn)行分支管理非常簡(jiǎn)單,具有很高的操作性。如果需要為一個(gè)項(xiàng)目貢獻(xiàn)代碼也是一件容易的事情︰首先點(diǎn)擊項(xiàng)目站點(diǎn)的“fork”的按 鈕,然後將代碼檢出并將修改加入到剛才分出的代碼庫(kù)中,最後通過(guò)內(nèi)建的“pull request”機(jī)制向項(xiàng)目負(fù)責(zé)人申請(qǐng)代碼合并即可。 Ubuntu 簡(jiǎn)介Ubuntu是基于Debian GNU/Linux,支持x8x64和ppc架構(gòu),由全球化的專業(yè)開發(fā)團(tuán)隊(duì)(Canonical Ltd)打造的開源GNU/Linux操作系統(tǒng)。Ubuntu的目標(biāo)在于為一般用戶提供一個(gè)穩(wěn)定的安全的主要由自由軟件構(gòu)建而成的操作系統(tǒng),讓用戶可以擺脫對(duì)Windows操作系統(tǒng)的依賴。由于開源軟件越來(lái)越受歡迎,跟隨著開源協(xié)議也越來(lái)越多。常見的OSI批準(zhǔn)的開源協(xié)議有BSD, GPL, LGPL,。本框架也將作為開源項(xiàng)目公布在github上。因此本框架采用的是LGPL(GNU Lesser General Public License)開源協(xié)議。下面簡(jiǎn)單介紹一下幾種常見的開源協(xié)議以及它們適用的范圍。 BSD開源協(xié)議 BSD開源協(xié)議是一個(gè)自由非常大的協(xié)議。使用者可以自由的使用,修改源代碼,也可以將修改后的代碼作為開源或者專有軟件再發(fā)布。 BSD協(xié)議鼓勵(lì)代碼共享,但需要尊重代碼作者的著作權(quán)。BSD是對(duì)商業(yè)應(yīng)用非常友好的開源協(xié)議。這表現(xiàn)在兩個(gè)方面,第一BSD運(yùn)行使用對(duì)其修改后重新發(fā)布,第二,可以在BSD代碼的基礎(chǔ)上進(jìn)行商業(yè)軟件開發(fā)并且進(jìn)行銷售。 Apache Licence Apache Licence是著名的非盈利開源組織Apache采用的協(xié)議。該協(xié)議和BSD類似,同樣鼓勵(lì)代碼共享和尊重原作者的著作權(quán),同樣允許代碼修改,再發(fā)布(作為開源或商業(yè)軟件)。Apache Licence也是對(duì)商業(yè)應(yīng)用友好的許可。使用者也可以在需要的時(shí)候修改代碼來(lái)滿足需要并作為開源或商業(yè)產(chǎn)品發(fā)布/銷售。 GPL(GNU General Public License) GPL的出發(fā)點(diǎn)是代碼的開源/免費(fèi)使用和引用/修改/衍生代碼的開源/免費(fèi)使用,它不允許修改后和衍生的代碼做為非開源的商業(yè)軟件進(jìn)行發(fā)布和盈利。操作系統(tǒng)中Linux就是采用了GPL。 GPL協(xié)議的主要內(nèi)容是只要在一個(gè)軟件中使用了具有GPL 協(xié)議的產(chǎn)品,則該軟件產(chǎn)品必須也采用GPL協(xié)議,既必須也是開源和免費(fèi)。采用GPL協(xié)議的產(chǎn)品既可以作為單獨(dú)的產(chǎn)品使用還可以享受享受免費(fèi)的優(yōu)勢(shì)。因此商業(yè)軟件或者對(duì)代碼有保密要求的軟件不適合使用采用了GPL協(xié)議的代碼庫(kù)。 LGPL(GNU Lesser General Public License) LGPL是GPL的一個(gè)為主要為類庫(kù)使用設(shè)計(jì)的開源協(xié)議。和GPL要求任何使用/修改/衍生之GPL類庫(kù)的的軟件必須采用GPL協(xié)議不同。LGPL允許商業(yè)軟件通過(guò)類庫(kù)引用(link)方式使用LGPL類庫(kù)而不需要開源商業(yè)軟件的代碼。這使得采用LGPL協(xié)議的開源代碼也可以被商業(yè)軟件作為類庫(kù)引用并發(fā)布和銷售。
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1