亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

Shonim / 2930人閱讀

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

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

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

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

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

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

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

1 種子模塊 1.1 解決命名空間問題

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

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

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

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

一般都是將window傳遞進(jìn)去,但現(xiàn)在很多js的非游覽器應(yīng)用領(lǐng)域沒有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一開始很弱小,但又想要跟多人使用,因此實(shí)現(xiàn)了一種多庫并存的機(jī)制。后成為很多小庫的標(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í)就是先把可能存在同名變量保存起來,再放回去。當(dāng)用戶執(zhí)行

jQuery.noConflict();

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

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

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

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

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

1.4 類型的判定

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

0條評(píng)論

閱讀需要支付1元查看
<