seajs和requiejs的區別,和用gulp打包方法
1、執行順序不同
從demo.html 引入一個入口c.js, c.js require-b.js , b.js require - a.js
程式碼如下:
c module
define(function(require, exports, module) {
console.log("hello module c");
require('b');
console.log("c finished");
});
b module
define(function(require, exports, module) {
console.log("hello module b")
var a = require('a');
console.log("b finished")
});
a moduledefine(function() {
console.log("hello module a")
});
requriejs 的 html程式碼:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>seajs和requirejs的區別</title>
<script src="require.min.js" data-main="c.js"></script>
</head>
<body>
</body>
</html>
執行結果:
==============================================
seajs的html程式碼:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>seajs和requirejs的區別</title>
<script src="sea.2.3.js"></script>
<script>
seajs.use('./c');
</script>
</head>
<body>
</body>
</html>
執行結果:
所以總結:
seajs是從上到下執行,
requriejs是把其中require的js全部載入完了,再往下執行。·
requriejs是把其中require的js全部載入完了,再往下執行。·
2、依賴的載入有所不同
在define中 requriejs載入了依賴就執行;而seajs在define中只是載入不會執行(如果要執行,需要用require()方法)
案例程式碼:
c.js模組
define(['b'],function(require,exports,module){
console.log("hello module c");
console.log("c finished");
});
b.js模組define(['a'],function(require,exports,module) {
console.log("hello module b")
console.log("b finished")
});
a.js模組
define(['b'],function(require,exports,module) {
console.log("hello module a")
});
seajs和requirejs的 html程式碼 和 1 中一樣
執行結果:
seajs執行結果:
總結: 在define書寫中A:requirejs 載入了就執行,所以requirejs是預執行(在define中預先執行所有require依賴的js),RequireJS的做法是並行載入所有依賴的模組, 並完成解析後, 再開始執行其他程式碼, 因此執行結果只會"停頓"1次, 完成整個過程是會比SeaJS要快. 預執行
B:seajs只是純粹的載入依賴的檔案,不執行就連console都不執行就是純粹的“載入”,SeaJS一樣是並行載入所有依賴的模組, 但不會立即執行模組, 等到真正需要(require)的時候才開始解析, 這裡耗費了時間, 因為這個特例中的模組巨大, 因此造成"停頓"2次的現象, 這就是我所說的SeaJS中的"懶執行".
在2的基礎上 c.js程式碼為
define(function(require,exports,module){
require('b');
require('a');
console.log("hello module c");
console.log("c finished");
});
執行結果都是一樣
3、取別名時requirejs預設舍掉.js的字尾
4、 打包方法
相關文章
- 詳解 Gulp4 和 Gulp3 的區別
- ==和equals方法的區別
- prop()方法和attr()方法的區別
- gulp與webpack的區別Web
- sendRedirect()和forward()方法的區別Forward
- ## 運算子和方法的區別
- 方法重置和重寫的區別
- Java中 equals() 方法和 == 的區別Java
- laravel中delete()方法和destroy()方法的區別Laraveldelete
- ../和./和/的區別
- gulp 和 gulp plugins 使用Plugin
- FTP 中ascii 和bin 的區別和使用方法FTPASCII
- JavaScript方法和函式區別JavaScript函式
- activity和fragment中startactivityforresult方法的區別Fragment
- jQuery中css()和attr()方法的區別jQueryCSS
- ROR中h()方法和sanitize的區別
- 微服務間的方法呼叫和應用內方法呼叫有啥區別微服務
- webpack和gulpWeb
- Python 靜態方法和類方法的區別Python
- 前端開發中提到的“腳手架”到底指什麼,CLI?gulp 和 gulp-cli有什麼區別前端
- 安裝gulp步驟和使用方法
- this和super的區別和應用 學習筆記筆記
- MyISAM和InnoDB的主要區別和應用場景
- 和 的區別
- as 和 with的區別
- ||和??的區別
- /*和/**的區別
- SpringBoot的repackage和Maven打包命令之間的區別 - BaeldungSpring BootPackageMaven
- LinkedList和ArrayList的區別、Vector和ArrayList的區別
- http和https的區別/get和post的區別HTTP
- ExecutorService shutdown()和shutdownNow()方法區別
- Python中函式和方法的區別Python函式
- 介面和列舉在方法中的區別
- StringBuffer類的delete()方法和deleteCharAt()方法的區別delete
- 詳解展示元件和容器元件的區別和應用元件
- ./ 和sh 的區別
- JQuery this和$(this)的區別jQuery
- jquery $(this) 和this的區別jQuery