欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

seajs和requirejs模塊化簡單案例分析

 更新時(shí)間:2019年08月26日 11:04:13   作者:zhensg  
這篇文章主要介紹了seajs和requirejs模塊化,結(jié)合具體案例形式分析了seaj和requirejs模塊化應(yīng)用的相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了seajs和requirejs模塊化。分享給大家供大家參考,具體如下:

如今,webpack、gulp等構(gòu)件工具流行,有人說seajs、requirejs等純前端的模塊化工具已經(jīng)被淘汰了,我不這么認(rèn)為,畢竟純前端領(lǐng)域想要實(shí)現(xiàn)模塊化就官方來講,還是有一段路要走的。也因此純前端的模塊化工具依然有價(jià)值,而且就我了解一些中小企業(yè)一直都在用純前端的模塊化手段。

如今,重新關(guān)注seajs和requirejs,不求理解多么深刻,要求會(huì)用能用就可以。

模塊化的起因是傳統(tǒng)的直接引入js方法存在問題:

  1. 必須通過全局變量共享模塊,有可能會(huì)出現(xiàn)命名沖突的問題;
  2. 依賴的文件必須手動(dòng)地使用標(biāo)簽引入到頁面中。

下面是seajs和requirejs的簡單案例。

seajs 我用的seajs版本是2.2.3

html部分

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>極客學(xué)院首頁</title>
</head>
<body>
  <button id="testbtn0">測試按鈕0</button>
  <button id="testbtn1">測試按鈕1</button>
  <script type="text/javascript" src="./js/sea.js"></script>
  <script type="text/javascript">
       seajs.use('./js/main');
  </script>
</body>
</html>

main.js文件

define(function(require,exports,module){
  //引入兩個(gè)js文件
  require("test0");
  require("test1");
})

test0.js

define(function(require,exports,module){
  var $$=require("common").$$;
  var testbtn0=$$("#testbtn0");  
  testbtn0.addEventListener("click",function(e){
    alert(e.target.innerText);
  });
})

test1.js

define(function(require, exports, module) {
  var $$ = require("common").$$;
  var testbtn1 = $$("#testbtn1");
  testbtn1.addEventListener("click", function(e) {
    alert(e.target.innerText);
  });
})

coomm.js

define(function(rerquire,exports,module){
  /*//第一種導(dǎo)出方案
  exports.$$=function(tag){
      return document.querySelector(tag);
  }*/
  //第二種導(dǎo)出方案
  module.exports={
     $$:function(tag){
      return document.querySelector(tag);
     },
     test:"測試數(shù)據(jù)"
  }
  //第三種導(dǎo)出方案
 /* return {
     $$:function(tag){
      return document.querySelector(tag);
     },
     test:"測試數(shù)據(jù)"
  }*/
})

以上是為seajs的,而requirejs的直接就是該一下html文件就可以了,真是哭笑不得啊。才發(fā)現(xiàn)二者是通過的。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>極客學(xué)院首頁</title>
</head>
<body>
  <button id="testbtn0">測試按鈕0</button>
  <button id="testbtn1">測試按鈕1</button>
  <script type="text/javascript" data-main="./js/main" src="./js/require.js"></script>
</body>
</html>

關(guān)于導(dǎo)出接口有三種,分別是exports,用來導(dǎo)出變量;然后是module.exports用于導(dǎo)出對(duì)象;最后是return直接返回。

最后對(duì)seajs和requirejs的不通點(diǎn)做個(gè)總結(jié),選擇seajs作者github:

  1. 定位有差異。RequireJS 想成為瀏覽器端的模塊加載器,同時(shí)也想成為 Rhino / Node 等環(huán)境的模塊加載器。Sea.js 則專注于 Web 瀏覽器端,同時(shí)通過 Node 擴(kuò)展的方式可以很方便跑在 Node 環(huán)境中。
  2. 遵循的規(guī)范不同。RequireJS 遵循 AMD(異步模塊定義)規(guī)范,Sea.js 遵循 CMD (通用模塊定義)規(guī)范。規(guī)范的不同,導(dǎo)致了兩者 API 不同。Sea.js 更貼近 CommonJS Modules/1.1 和 Node Modules 規(guī)范。
  3. 推廣理念有差異。RequireJS 在嘗試讓第三方類庫修改自身來支持 RequireJS,目前只有少數(shù)社區(qū)采納。Sea.js 不強(qiáng)推,采用自主封裝的方式來“海納百川”,目前已有較成熟的封裝策略。
  4. 對(duì)開發(fā)調(diào)試的支持有差異。Sea.js 非常關(guān)注代碼的開發(fā)調(diào)試,有 nocache、debug 等用于調(diào)試的插件。RequireJS 無這方面的明顯支持。
  5. 插件機(jī)制不同。RequireJS 采取的是在源碼中預(yù)留接口的形式,插件類型比較單一。Sea.js 采取的是通用事件機(jī)制,插件類型更豐富。

個(gè)人總結(jié)的不同是:

CMD,seajs 推崇依賴就近,AMD ,requirejs推崇依賴前置,實(shí)際是兩者在簡單實(shí)現(xiàn)上,是可以一致的。就比如本文的例子。

seajs比如requirejs小很多。

更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript切換特效與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)

希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論