seajs和requirejs模塊化簡單案例分析
本文實例講述了seajs和requirejs模塊化。分享給大家供大家參考,具體如下:
如今,webpack、gulp等構件工具流行,有人說seajs、requirejs等純前端的模塊化工具已經(jīng)被淘汰了,我不這么認為,畢竟純前端領域想要實現(xiàn)模塊化就官方來講,還是有一段路要走的。也因此純前端的模塊化工具依然有價值,而且就我了解一些中小企業(yè)一直都在用純前端的模塊化手段。
如今,重新關注seajs和requirejs,不求理解多么深刻,要求會用能用就可以。
模塊化的起因是傳統(tǒng)的直接引入js方法存在問題:
- 必須通過全局變量共享模塊,有可能會出現(xiàn)命名沖突的問題;
- 依賴的文件必須手動地使用標簽引入到頁面中。
下面是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:"測試數(shù)據(jù)"
}
//第三種導出方案
/* 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>極客學院首頁</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:
- 定位有差異。RequireJS 想成為瀏覽器端的模塊加載器,同時也想成為 Rhino / Node 等環(huán)境的模塊加載器。Sea.js 則專注于 Web 瀏覽器端,同時通過 Node 擴展的方式可以很方便跑在 Node 環(huán)境中。
- 遵循的規(guī)范不同。RequireJS 遵循 AMD(異步模塊定義)規(guī)范,Sea.js 遵循 CMD (通用模塊定義)規(guī)范。規(guī)范的不同,導致了兩者 API 不同。Sea.js 更貼近 CommonJS Modules/1.1 和 Node Modules 規(guī)范。
- 推廣理念有差異。RequireJS 在嘗試讓第三方類庫修改自身來支持 RequireJS,目前只有少數(shù)社區(qū)采納。Sea.js 不強推,采用自主封裝的方式來“海納百川”,目前已有較成熟的封裝策略。
- 對開發(fā)調(diào)試的支持有差異。Sea.js 非常關注代碼的開發(fā)調(diào)試,有 nocache、debug 等用于調(diào)試的插件。RequireJS 無這方面的明顯支持。
- 插件機制不同。RequireJS 采取的是在源碼中預留接口的形式,插件類型比較單一。Sea.js 采取的是通用事件機制,插件類型更豐富。
個人總結的不同是:
CMD,seajs 推崇依賴就近,AMD ,requirejs推崇依賴前置,實際是兩者在簡單實現(xiàn)上,是可以一致的。就比如本文的例子。
seajs比如requirejs小很多。
更多關于JavaScript相關內(nèi)容可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript切換特效與技巧總結》、《JavaScript查找算法技巧總結》、《JavaScript錯誤與調(diào)試技巧總結》、《JavaScript數(shù)據(jù)結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數(shù)學運算用法總結》
希望本文所述對大家JavaScript程序設計有所幫助。
- 在Html中使用Requirejs進行模塊化開發(fā)實例詳解
- 使用requirejs模塊化開發(fā)多頁面一個入口js的使用方式
- 詳解JavaScript模塊化開發(fā)
- JavaScript的模塊化開發(fā)框架Sea.js上手指南
- Seajs 簡易文檔 提供簡單、極致的模塊化開發(fā)體驗
- JavaScript模塊化開發(fā)之SeaJS
- 了解Javascript的模塊化開發(fā)
- javascript 構建模塊化開發(fā)過程解析
- 深入探尋seajs的模塊化與加載方式
- 基于RequireJS和JQuery的模塊化編程日常問題解析
- 基于RequireJS和JQuery的模塊化編程——常見問題全面解析
- JavaScript 模塊化開發(fā)實例詳解【seajs、requirejs庫使用】
相關文章
javascript模擬的Ping效果代碼 (Web Ping)
JS雖然發(fā)送不了真正Ping的ICMP數(shù)據(jù)包,但Ping的本質(zhì)仍然是請求/回復的時間差,HTTP自然可以實現(xiàn)此功能.2011-03-03
在layui中使用form表單監(jiān)聽ajax異步驗證注冊的實例
今天小編就為大家分享一篇在layui中使用form表單監(jiān)聽ajax異步驗證注冊的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09
Layui數(shù)據(jù)表格跳轉到指定頁的實現(xiàn)方法
今天小編就為大家分享一篇Layui數(shù)據(jù)表格跳轉到指定頁的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09

