成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

JavaScript框架學(xué)習(xí)筆記(一)

Shonim / 2900人閱讀

摘要:基本的學(xué)習(xí)思路是跟著框架設(shè)計(jì)這本書(shū),甚至可以說(shuō)是這本書(shū)的讀書(shū)筆記。也參考很多網(wǎng)上解讀的博客和學(xué)習(xí)資料。當(dāng)然,最重要的資料還是框架的源代碼。后來(lái)由于開(kāi)發(fā)者反對(duì),新興的框架都在命名空間上構(gòu)建。

JavaScript框架學(xué)習(xí)筆記(一) 我為什么要學(xué)習(xí)框架

更深入的理解工具,以后用起來(lái)更順手而且也能做一定的工具取舍,學(xué)習(xí)理解新工具也就更快,

對(duì)提升js水平也很有幫助,框架有很多解決“坑”的經(jīng)典思路,學(xué)習(xí)這些對(duì)提升開(kāi)發(fā)能力很有幫助。

基本的學(xué)習(xí)思路是跟著《JavaScript框架設(shè)計(jì)》這本書(shū),甚至可以說(shuō)是這本書(shū)的讀書(shū)筆記。也參考很多網(wǎng)上解讀jquery的博客和學(xué)習(xí)資料。當(dāng)然,最重要的資料還是框架的源代碼。

基本學(xué)習(xí)的框架就是jQuery,也會(huì)看看其他庫(kù)的實(shí)現(xiàn)

我不是大神,很多知識(shí)估計(jì)也沒(méi)有理解正確,歡迎指出,僅供參考。

1 種子模塊 1.1 解決命名空間問(wèn)題

早期的一些prototype.js庫(kù)并沒(méi)有命名空間,它的意義是滲透到JavaScript,DOM中去,希望對(duì)原生對(duì)象的原型進(jìn)行擴(kuò)展。后來(lái)由于開(kāi)發(fā)者反對(duì),新興的框架都在命名空間上構(gòu)建。
一般的寫(xiě)法都是使用IIFE解決,一般如下兩種寫(xiě)法:

(function foo(){...})()
(function(){}(..))

兩種寫(xiě)法功能上是一致的.
IIFE可以把他們當(dāng)函數(shù)調(diào)用比傳遞參數(shù)。

(function IIFE(global){
    //code
})(window)

一般都是將window傳遞進(jìn)去,但現(xiàn)在很多js的非游覽器應(yīng)用領(lǐng)域沒(méi)有window,所以jquery一些處理辦法是又接受一個(gè)factory參數(shù):

For CommonJS and CommonJS-like environments where a proper window
is present, execute the factory and get jQuery.
For environments that do not have a window with a document(such as Node.js), expose a factory as module.exports.
This accentuates the need for the creation of a real window.e.g. var jQuery = require("jquery")(window);

很多前端框架都想要$這個(gè)命名空間,jQuery一開(kāi)始很弱小,但又想要跟多人使用,因此實(shí)現(xiàn)了一種多庫(kù)并存的機(jī)制。后成為很多小庫(kù)的標(biāo)配,實(shí)現(xiàn)很簡(jiǎn)單:

var
    // Map over jQuery in case of overwrite
    _jQuery = window.jQuery,

    // Map over the $ in case of overwrite
    _$ = window.$;

jQuery.noConflict = function( deep ) {
    if ( window.$ === jQuery ) {
        window.$ = _$;
    }

    if ( deep && window.jQuery === jQuery ) {
        window.jQuery = _jQuery;
    }

    return jQuery;
};

其實(shí)就是先把可能存在同名變量保存起來(lái),再放回去。當(dāng)用戶(hù)執(zhí)行

jQuery.noConflict();

就將$的控制權(quán)交出去,以后執(zhí)行$()的時(shí)候就是其他庫(kù)了,如果將deep變量傳入true,則將jQuery的控制權(quán)也交出去了。

?1.2 對(duì)象擴(kuò)展

很多庫(kù)在擴(kuò)展方法里還需判斷是否覆蓋和合并問(wèn)題,但基本實(shí)現(xiàn)對(duì)庫(kù)的擴(kuò)展比較簡(jiǎn)單,就是添加一個(gè)對(duì)象罷了。

function extend(destination,source){
    for(var destination in source){
        destination[property] = source[property];
    }
    return destination;
}
1.3 數(shù)組化

這個(gè)解決的問(wèn)題是講很多像document.getElementByTagName()方法返回的HTMLCollection或者NodeList這樣的類(lèi)數(shù)組轉(zhuǎn)化為數(shù)組。
為什么做這樣轉(zhuǎn)化,因?yàn)閿?shù)組有很多便利的操作。
各個(gè)庫(kù)的實(shí)現(xiàn)原理核心也就是調(diào)用Array.prototype.slice.call(arguments);這個(gè)方法。

1.4 類(lèi)型的判定

js的經(jīng)典問(wèn)題:isXXX系列。主要是js的typeof這些自帶的檢測(cè)方法不靠譜.這類(lèi)方法在框架實(shí)現(xiàn)來(lái)說(shuō)很重要,但說(shuō)實(shí)話(huà)自己沒(méi)怎么仔細(xì)看,因?yàn)橐紤]各個(gè)游覽器的兼容,感覺(jué)都是帶有很技巧方面的知識(shí),暫且翻過(guò)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/79277.html

相關(guān)文章

  • 前端學(xué)習(xí)路線(xiàn)

    摘要:具體來(lái)說(shuō),包管理器就是可以通過(guò)命令行,幫助你把外部庫(kù)和插件放到你的項(xiàng)目里面并在之后進(jìn)行版本升級(jí),這樣就不用手工復(fù)制和更新庫(kù)?,F(xiàn)在有的包管理器主要是和。 一、基礎(chǔ) 1、學(xué)習(xí)HTML基礎(chǔ) HTML給你的網(wǎng)頁(yè)賦予了結(jié)構(gòu)。它就像是人的骨架那樣讓你保持站立。首先你需要去學(xué)習(xí)語(yǔ)法以及它必須提供的一切。你的學(xué)習(xí)應(yīng)該聚焦在下面這些東西上: 學(xué)習(xí)HTML基礎(chǔ),了解如何編寫(xiě)語(yǔ)義HTML 理解如何把網(wǎng)頁(yè)分...

    FullStackDeveloper 評(píng)論0 收藏0
  • 前端學(xué)習(xí)路線(xiàn)

    摘要:具體來(lái)說(shuō),包管理器就是可以通過(guò)命令行,幫助你把外部庫(kù)和插件放到你的項(xiàng)目里面并在之后進(jìn)行版本升級(jí),這樣就不用手工復(fù)制和更新庫(kù)。現(xiàn)在有的包管理器主要是和。 一、基礎(chǔ) 1、學(xué)習(xí)HTML基礎(chǔ) HTML給你的網(wǎng)頁(yè)賦予了結(jié)構(gòu)。它就像是人的骨架那樣讓你保持站立。首先你需要去學(xué)習(xí)語(yǔ)法以及它必須提供的一切。你的學(xué)習(xí)應(yīng)該聚焦在下面這些東西上: 學(xué)習(xí)HTML基礎(chǔ),了解如何編寫(xiě)語(yǔ)義HTML 理解如何把網(wǎng)頁(yè)分...

    20171112 評(píng)論0 收藏0
  • Vue2.x 的筆記:第次的感受 Vue 開(kāi)篇

    摘要:在互聯(lián)網(wǎng)高速發(fā)現(xiàn)的今天,可以說(shuō)每天都在變化著一不留神你就會(huì)錯(cuò)過(guò)一個(gè)億,所以你不得不時(shí)刻的保持著高度的專(zhuān)注。如今為代表的三個(gè)框架已然成為了主流成為統(tǒng)治者,呈現(xiàn)了三分天下的局面。有人說(shuō)如今是框架的時(shí)代,只要會(huì)一個(gè)框架就能開(kāi)始干活了。 在互聯(lián)網(wǎng)高速發(fā)現(xiàn)的今天,可以說(shuō)每天都在變化著一不留神你就會(huì)錯(cuò)過(guò)一個(gè)億,所以你不得不時(shí)刻的保持著高度的專(zhuān)注。 互聯(lián)網(wǎng)的信息是多元的,大量的,在海量的信息中很容易...

    Lowky 評(píng)論0 收藏0
  • 26天學(xué)通前端開(kāi)發(fā)(配資料)

    摘要:網(wǎng)上有很多前端的學(xué)習(xí)路徑文章,大多是知識(shí)點(diǎn)羅列為主或是資料的匯總,數(shù)據(jù)量讓新人望而卻步。天了解一個(gè)前端框架。也可以關(guān)注微信公眾號(hào)曉舟報(bào)告,發(fā)送獲取資料,就能收到下載密碼,網(wǎng)盤(pán)地址在最下方,獲取教程和案例的資料。 前言 好的學(xué)習(xí)方法可以事半功倍,好的學(xué)習(xí)路徑可以指明前進(jìn)方向。這篇文章不僅要寫(xiě)學(xué)習(xí)路徑,還要寫(xiě)學(xué)習(xí)方法,還要發(fā)資料,干貨滿(mǎn)滿(mǎn),準(zhǔn)備接招。 網(wǎng)上有很多前端的學(xué)習(xí)路徑文章,大多是知...

    blair 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<