国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

RequireJS按需加載樣式文件

googollee / 1184人閱讀

摘要:這個需求我們經常遇到,比如我們使用時,在加載其腳本模塊時,在頁面我們也會添加上標簽引入其相關的樣式文件。

樣式模塊化的好處

RequireJS被設計用來加載JavaScript模塊的,可是大家有沒有聯想到其實樣式文件可以進行模塊化處理,那么問題來了,RequireJS能不能像加載腳本文件一樣來加載樣式文件呢?

雖然RequireJS本身沒有實現這個功能,但官網推薦了一些常用的插件供我們使用,官網插件插件地址為:http://requirejs.org/docs/plugins.html,同時在github上也有社區大量貢獻的插件:https://github.com/jrburke/requirejs/wiki/Plugins

當然除了引用第三方插件外,我們也可以動手自己寫一個類似插件,不過我在這里要推薦一個很不錯的樣式模塊加載器require-css,其官網地址為:https://github.com/guybedford/require-css。

那么我們再來談談,樣式模塊話的好處吧,和腳本模塊化一樣,樣式模塊化也可以做到按需加載,樣式依賴,不過對我來說最大的好處是將腳本的管理放權到前端管理,為什么這么說呢?
以前我們添加樣式文件都是通過link標簽引入的,而被引入的文件基本上都是jsp、php等后臺文件,這樣對與后臺不太熟悉的人來說,如果樣式文件發生改變,都要麻煩后臺開發人員。但是最懂樣式的莫過于前端開發人員了。

require-css的使用介紹

下面我們通過一個簡單的例子,來介紹下require-css的用法,首先下載require-css,去到上面給出的官網地址,在頁面的右下角點擊Download ZIP按鈕,下載完成后解壓,將css.js拷貝復制到項目中去。

這個簡單示例的目錄如下所示:

假設我們的目的是,通過加載util模塊時,頁面先加載其依賴的樣式文件1.css。這個需求我們經常遇到,比如我們使用JqueryUI時,在加載其腳本模塊時,在頁面我們也會添加上link標簽引入其相關的UI樣式文件。

首先我們在project.html中引入RequireJS和指定配置文件(main.js)的位置。期代碼如下所示:




    
    RequireJS簡單示例


    

如何處理依賴問題

我們進入到main.js配置文件。main.js應該是頁面的入口文件,在這個入口文件中,指定了入口文件需要加載的模塊,同事也設置了RequireJS某些具體參數。其代碼如下所示:

/*入口腳本*/
require.config({
    baseUrl: "scripts/",
    paths: {
        "util": "helper/util"
    },
    waitSeconds: 15,
    map: {
        "*": {
            "css": "lib/css"
        }
    },
    shim : {
        "util": ["css!../style/1.css"]
    }
});

require(["util"], function(util) {
    // todo
});

其中我們要特別注意mapshim的配置,"map"告訴RequireJS在任何模塊之前,都先載入這個模塊,這樣別的模塊依賴于css!../style/1.css這樣的模塊都知道怎么處理了,shim那時干什么用的呢?這這個示例中,他表示util這個模塊在加載之前需要先加載1.css這個樣式文件。當然我們也可以在Util模塊里直接設置他的依賴,下面將會解釋。

下面我們來看看util模塊的代碼,代碼如下所示:

define(function(){
    //alert("Hello RequireJS!!");
    console.log($("#test").text());
});

這個模塊很簡單,就是通過jQuery獲取頁面id為test的值。并且在瀏覽器的控制臺輸出來。這里你可能感覺有點奇怪。為什么你使用了jQuery但是在依賴數組中且沒有設置呢?正確的說,我們應該這樣寫:

define(["jquery"],function(){
    //alert("Hello RequireJS!!");
    console.log($("#test").text());
});

我這樣做的目的是,用RequireJS打包時,不要將jquery打包進去,這樣就可以減少文件的大小了。還有一個上面提出的問題,加入我不用shim這個配置時,可以向依賴JQuery一樣,將樣式文件寫到define依賴數組中去。其代碼如下:

define(["css!../style/1.css"],function(){
    //alert("Hello RequireJS!!");
    console.log($("#test").text());
});

不過你應該一眼就能看出來,那種寫法比較好吧,我比較推薦,將依賴寫到shim配置中去。

一切配置就緒,在瀏覽器中打開project.html頁面,運行結果如圖所示:

幫助文檔

http://tech.techweb.com.cn/thread-622052-1-1.html

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/110949.html

相關文章

  • angularjs+requirejs實現按需加載的全面實踐

    摘要:想同時實現這些目標,就必須有一套按需加載的機制,頁面上展現的內容和所有需要依賴的文件,都可以根據業務邏輯需要按需加載。最近都是基于做開發,所以本文主要圍繞提供的各種機制,探索全面實現按需加載的套路。注意必須設置,否則變化以后,不截獲。 在進行有一定規模的項目時,通常希望實現以下目標:1、支持復雜的頁面邏輯(根據業務規則動態展現內容,例如:權限,數據狀態等);2、堅持前后端分離的基本原則...

    TerryCai 評論0 收藏0
  • avalon 單頁面程序 (種子工程)之二 按需加載和路由系統

    摘要:的成功離開不這三個東西,分層架構,路由系統,儲存系統。分層架構是我們組織復雜代碼的關鍵,路由系統是將多個頁面壓縮在一個頁面的關鍵。在這個種子工程中,我都調用了同一個方法,就比較適合目錄動態生成,需要按需調用不同的頁面的情況。 SPA的成功離開不這三個東西,分層架構,路由系統,儲存系統。分層架構是我們組織復雜代碼的關鍵,路由系統是將多個頁面壓縮在一個頁面的關鍵。 其中avalon路由用到...

    fanux 評論0 收藏0
  • 一張腦圖看懂BUI Webapp移動快速開發框架【上】--框架與工具、資源

    摘要:后續我們還會增加一些實戰類的移動開發案例,歡迎關注專欄。進入官網新版預覽在線預覽需要使用開啟設備模擬,效果更佳。 前言 之前寫過一篇 2018開發最快的Webapp框架--BUI交互框架 ,如果你還沒看過,可以簡單看一下,主要介紹了BUI的基本功能,有多少控件,以及實現的思路,BUI 1.5版本以后變化很大,統一新的風格,新的規范750,新增基于Dom的數據驅動,完善了頁面的生命周期等...

    wuyumin 評論0 收藏0
  • angularjs學習筆記——使用requirejs動態注入控制器

    摘要:最近一段時間在學習,由于覺得直接使用它需要加載很多的文件,因此想使用來實現異步加載,并動態注入控制器。手動啟動,特別說明此處的不是那個框架,而是的一個手動啟動框架的函數中完成了各模塊的初始化,并且引入了。 最近一段時間在學習angularjs,由于覺得直接使用它需要加載很多的js文件,因此想使用requirejs來實現異步加載,并動態注入控制器。簡單搜索了下發現好多教程寫的都很復雜,所...

    王軍 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<