r.js自動打包


使用r.js 進行打包。

一,工程結構 

首先,requirejs  模塊化的工程

例如:

app.js  4個依賴 

(1)jquery

(2)backbone

(3)bootstrap

(4)helper.js   

以上需要5個請求,

4個依賴+app.js  合並為一個js,只需要一個請求,提升生產上的速度;

我們現階段的目的:

開發階段

不打包,不壓縮,模塊化開發;

部署階段:

自動打包,壓縮

 二,使用介紹

requirejs:

https://github.com/requirejs/requirejs

 異步加載

模塊化開發:

一個文件 一個模塊(可維護,可讀性強)

減少全局變量

 

define: 定義模塊

第一個參數為定義的模塊名,如果不寫為文件路徑;   

define('helper',['jquery'],function($){
     return {
         trim:function(str){
               return $.trim(str);
              }
           }
 });

  

require:加載模塊 : 

require(['helper'],function(helper)){
      var str=helper.trim('   amd');
       console.log(str);
});

 

加載文件

requirejs (require 加載模塊時)以一個相對於baseurl的地址來加載所有的代碼:

三、配置介紹

1,html  頁面直接引用,baseurl 是相對於頁面的

<script src=""/js/require.js></script>

  

2,data-main 

<script src=""/js/require.js data-main="js/app.js"></script>

  

3,手動配置baseurl

requireMain里配置

 

四、加載機制

requireJS 使用head.appendChild()將每一個依賴加載為一個script標簽;(可以跨域訪問,可以從cdn上直接獲取js文件)

加載即執行;

配置模塊路徑:

(1)baseUrl

(2)path: 映射不放於baseUrl下的模塊名

 

定義模塊:

函數式定義  define 不寫函數名

define('helper',['jquery'],function($){
     return {
         trim:function(str){
               return $.trim(str);
              }
           }
 });  

定義簡單的對象:

define({
  username:'fnncat',
  name:'xiaohui',
  emial:'fnncat@gmail.com',
  gender:'女'
})

 配置不支持AMD的庫和插件 

  .modernizr

   bootsrap

   配置shim

    modernizr  只有全局變量

shim:{
  'modernizr':{             //不支持AMD的模塊
      deps:['jquery'],      //依賴的模塊
      exports:'Modernizr',  //全局變量作為模塊對象
      init:function($){     //初始化函數,返回的對象代替exports作為模塊對象
             return $;    
      }
    }
}

  加載不支持AMD的框架。如bootstrap

 

shim:{
  'bootsrap':['jquery']
}  

常用的配置項
map 加載不同的版本

waitSecongs 下載等待的事件,默認7秒,如果設為0,禁用超時

urlargs,   下載文件時,在url后增加額外的query 參數

 

requirejs  中的jsonp

是json的一種使用模式,可以跨域獲取數據, 如json

同源策略:www.baidu.com通過ajax不能獲取www.qq.com的數據

requirejs  可以直接

require(['獲取js地址'],function(){
})

  

使用text插件加載html

https://github.com/requirejs/text

插件text.js

用於加載文本文件的requirejs插件

通過ajax請求來請求文本  前綴text! 

require(['text!/user.html'],function(template){
  $('userinfo').html(template);
});

  

 插件css

https://github.com/guybedford/require-css

用於加載樣式文件的requirejs插件

css!+css 文件路徑

 

五、利用r.js進行打包

在開發階段,隨着js框架和庫的引入,頁面js的加載個數就越來月多,嚴重的影響了頁面的相應速度,於是我們就需要對js 和css  打包。

工具r.js

安裝:

npm install -g requirejs    本地開發

下載文件:https://github.com/requirejs/r.js   服務器

r.js

使用配置文件來打包

node r.js -o app.build.js

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM