伺服器端的JS子產品化
-
commonJS規範(nodeJS的出現(http://nodejs.org/))
(http://www.commonjs.org/)
浏覽器JS的子產品化
-
AMD規範(http://wiki.commonjs.org/wiki/Modules/AsynchronousDefinition)
requireJS庫(http://requirejs.org/ )
-
CMD規範
Seajs采用的
建構工具 gruntjs( http://gruntjs.com/ )
-
安裝流程:
-先安裝nodejs和npm(包管理工具)
-npm install -g grunt-cli
-npm install grunt –save-dev
-grunt –versionnpm install grunt –save-dev
-
使用流程
-1.從官網找到需要用到的插件名字,配置到package.json檔案中。
-2.配置GruntFile.js檔案。
-3.運作npm install 安裝配置的插件(對應package.json檔案)。
-4.運作grunt(對應GruntFile.js檔案)。
seajs建構的問題
上線的版本,比如合并操作,define應多出兩個參數。
第一個參數:目前子產品的ID
第二個參數:目前子產品所依賴的子產品的數組
Seajs + gruntjs開發
grunt-cmd-transport(提取ID和依賴)——解決seajs建構的問題,即自動完成上述的給define加兩個參數。
grunt-cmd-concat(合并)
grunt-contrib-clean(清除建構過程中的臨時檔案)
{
//package.json
"name": "webqq",
"version": "0.1.0",
"devDependencies": {
"grunt": "~0.4.5",
"grunt-cmd-transport" : "~0.3.0",
"grunt-cmd-concat": "~0.2.7",
"grunt-contrib-uglify": "~0.3.2"
}
}
//GruntFile.js
module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
transport: {
webqq: {
files: {
'.bulid' : ['main.js','drag.js','scale.js','range.js']
}
}
},
concat: {
webqq: {
files: {
'dist/main.js': ['.bulid/main.js','.bulid/drag.js','.bulid/scale.js','.bulid/range.js']
}
}
},
uglify:{
webqq: {
files: {
'dist/main.min.js': ['dist/main.js']
}
}
}
});
grunt.loadNpmTasks('grunt-cmd-transport');
grunt.loadNpmTasks('grunt-cmd-concat');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.registerTask('default', ['transport','concat','uglify']);
};