国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

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

2019-11-19 10:57:49
字體:
來源:轉載
供稿:網友

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

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

如今,重新關注seajs和requirejs,不求理解多么深刻,要求會用能用就可以。

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

  1. 必須通過全局變量共享模塊,有可能會出現命名沖突的問題;
  2. 依賴的文件必須手動地使用標簽引入到頁面中。

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

seajs 我用的seajs版本是2.2.3

html部分

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>極客學院首頁</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){  //引入兩個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){  /*//第一種導出方案  exports.$$=function(tag){      return document.querySelector(tag);  }*/  //第二種導出方案  module.exports={     $$:function(tag){      return document.querySelector(tag);     },     test:"測試數據"  }  //第三種導出方案 /* return {     $$:function(tag){      return document.querySelector(tag);     },     test:"測試數據"  }*/})

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

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>極客學院首頁</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>

關于導出接口有三種,分別是exports,用來導出變量;然后是module.exports用于導出對象;最后是return直接返回。

最后對seajs和requirejs的不通點做個總結,選擇seajs作者github:

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

個人總結的不同是:

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

seajs比如requirejs小很多。

更多關于JavaScript相關內容可查看本站專題:《javascript面向對象入門教程》、《JavaScript切換特效與技巧總結》、《JavaScript查找算法技巧總結》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結

希望本文所述對大家JavaScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 湘潭县| 长宁区| 三河市| 睢宁县| 包头市| 永顺县| 六盘水市| 封开县| 临澧县| 金湖县| 依安县| 西城区| 甘南县| 南丰县| 安图县| 波密县| 昂仁县| 辽阳县| 凉城县| 镇沅| 甘泉县| 密山市| 南京市| 徐闻县| 广汉市| 石阡县| 布尔津县| 丘北县| 龙游县| 开封县| 延长县| 岳普湖县| 鄂伦春自治旗| 阿拉善右旗| 日土县| 临武县| 西吉县| 车险| 荣成市| 湘阴县| 时尚|