seajs的使用


寫在前面

seajs是什么?

  1. Seajs是一個js文件加載器。
  2. 遵循 CMD 規范模塊化開發,依賴的自動加載、配置的簡潔清晰。
  3. 用於Web開發的模塊加載工具,提供簡單、極致的模塊化體驗

 

一:使用

文件目錄:

demo_1.html

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script src="seajs/sea.js"></script>    
    <script src="seajs-config.js"></script>
</head>
<body>
<script>
    //seajs.use(['./model.js','./model_2.js']) //沒有使用別名的寫法
 seajs.use(['m','m_2']) //使用base路徑的寫法
</script>
</body>
</html>

**注解:

seajs.use:用來在頁面中加載一個或多個模塊。

 

seajs-config.js文件

seajs.config({ //兩種寫法,一個是paths,一個是base
    /*paths:{ 'baseUrl':'.' }, alias:{ 'm':'baseUrl/model.js', 'm_2':'baseUrl/model_2.js' }*/ base:"./", alias:{ 'm':'model.js', 'm_2':'model_2.js' } })

**注解:

base:是sea.js的基礎路徑,也就是sea.js的路徑。

paths:當目錄比較深,或需要跨目錄調用模塊時,可以使用paths來簡化書寫。

如:

seajs.config({ paths: { 'gallery': 'https://a.alipayobjects.com/gallery', 'app': 'path/to/app', ... } }); //模塊中
define(function(require, exports, module) { var underscore = require('gallery/underscore'); // 加載的是 https://a.alipayobjects.com/gallery/underscore.js

   var biz = require('app/biz'); // 加載的是 path/to/app/biz.js
 });

paths 配置可以結合 alias 配置一起使用,讓模塊引用非常方便。

在使用中路徑問題出錯了。

路徑問題:https://github.com/seajs/seajs/issues/258 seajs都有相關解釋。

alias:別名配置,用變量表示文件,解決路徑層級過深和實現路徑映射

 

model.js文件:

define(function(){ alert("AAA") })

**注解:

define:用來定義一個模塊。

 

model_2.js文件:

define(function(){ alert("BBB") })

 

結果:根據兩個文件在seajs中的加載順序,分別彈出AAA與BBB。

 

二:使用

頁面:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script src="seajs/sea.js"></script>    
    <script src="seajs-config.js"></script>
</head>
<body>
<div></div>
</body>
<script> seajs.use(['jquery','m_3'],function($,m_3){ //這里是callback
    //$對應jquery,在回調中使用的別名
  //調用接口變量
alert(m_3.msg);
}) </script> </html>

 

seajs-config.js文件

seajs.config({ /*paths:{ 'baseUrl':'.' }, alias:{ 'm':'baseUrl/model.js', 'm_2':'baseUrl/model_2.js' }*/ base:"./", alias:{ 'jquery':'jquery.js', 'm':'model.js', 'm_2':'model_2.js', 'm_3':'model_3.js' } })

 

model_3.js文件:

define(function(require, exports, module){ var $=require('jquery'); $("div").text("模塊中調用jquery操作dom"); exports.msg="對外接口,變量a"; })

結果:

 

**注解:

require:用來獲取指定模塊的接口。

exports:用來在模塊內部對為提供接口。

 

三:jQuery在seajs中的使用

需要使用seajs來定義一下,包裝成一個模塊。

define(function(){ //jquery源代碼

    return $.noConflict(); });

 

四:有時候,我們添加前端框架的時候,需要引入css文件時。

以bootstrap為例:兩個文件,bootstrap.js與bootstrap.css文件。

bootstrap.js文件做一下的修改即可。

define(function(require, exports, module){ require('bootstrap.css'); //里面是bootstrap.js的源碼 
 })

 


免責聲明!

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



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