sea.js+grunt学习笔记
来源:互联网 发布:淘宝怎样发布二手宝贝? 编辑:程序博客网 时间:2024/06/05 10:24
grunt 配置变量是这样写的<pre name="code" class="javascript"><%= banner %>所下面定义了变量banner: '/*! Project: <%= pkg.name %>\n * Version: <%= pkg.version %>\n * Date: <%= grunt.template.today("yyyy-mm-dd hh:MM:ss TT") %>\n * Author: <%= pkg.author.name %>\n */',使用变量 options:{ banner:'<%= banner %>'} 记得加引号
sea技巧
1 SEA引入加ID<script src="xxxx" id="seajsnode"></script>
2 spm sea package manager
npm install spm -g
npm install spm-build -g
对某脚本进行SPM BUILD
$ spm build xxx.js 不过哥好像没BUILD得完整
3 调试接口
seajs.cache 在控制台输入
通过了解GRUNT, 记录一些问题GRUNT官网http://gruntjs.com/GRUNT 还有中文官网GRUNT 插件搜索https://www.npmjs.com/package/grunt-cmd-concat
uglify:{
files:{'xxx.js':'xxxx.js'}
//要处理目标}如果要处理目标是多个。请用数组形式
files:{'xxx.js',['xxxx.js','2.js'] }
第二种写法:通过SRC和DEST
files:[{ // expand:true, src: ['.build/main.js','.build/*.js'], dest: 'dest/main.js' }]有个别,file:{},没有数组中括号,所以具体还是看GRUNT 模块的写法。。
expand为TRUE时,可以使用诸如cwd,之类的扩展 cwd进入目录 ext改变文件后缀如 '.min.css' 像SASS的
sass: { dist: { options: { style: 'compact', //nested, compact, compressed, expanded sourcemap: true, noCache: true }, files: [{ expand: true, cwd: 'src/sass', src: ['*.scss','!_*.scss','!*/_*.scss'], dest: 'src/css', ext: '.css' }] } },
concat好像没这么智能,如果这样写
concat:{ options:{}, dist:{ files:[{ src: ['.build/main.js','.build/*.js'], dest: 'dest/main.js' }] } },
这里想用CWD,但用了之后,只会自动生成各自的文件,但不能合成一个指定的MAIN。JS文件,相反,这里DEST配置的名字,反而成了一个目录。。
还有。SEA。JS合并,是要有指定顺序的,因为我MAIN。JS没有写成一个对外接口模块(EXPORTS)的写法,所以合并时,GRUNT,是按钮文件的顺序合并(按字母顺序排列)
把MAIN.放到了DRAG后面,就会没反应..所以注意顺序...
SEA的ID应就是指它的文件路径.
.SEA.JS用到了 v1.3.0 transport "grunt-cmd-transport": "~0.3.0",可能其他版本不稳定
//transprot 0.4好似有问题,所以用0.3.0版本
define(function(require,exports,module){}
说一下module的参性
id //默认是模块的相对或绝对路径。。但用CMD-TRANSPORT后,会变成define("main", [ "./drag", "./range", "./scale" ], function(require, exports, module) {} id为MAIN
exports module.exports=exports 如果这样写 exports={a:1212,b:234}会出问题。。。要这样写module.exports={} 模块间调用的开放接口是module.exports
module有很多属性,如果
uri 模块绝对路径
dependencies 依赖组件,
require.async('xxxxx',function(){加回调函数})
require有个async属性
//transprot 0.4好似有问题,所以用0.3.0版本module.exports = function(grunt) { 'use strict'; grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), banner: '/*! Project: <%= pkg.name %>\n * Version: <%= pkg.version %>\n * Date: <%= grunt.template.today("yyyy-mm-dd hh:MM:ss TT") %>\n * Author: <%= pkg.author.name %>\n */', transport: { options: { debug:false, //默认有DEBUG文件 }, dist: { files: [{ expand:true, cwd: 'js/', src: '*.js', dest: '.build' }] } }, concat:{ options:{}, dist:{ files:[{ // src: ['.build/main.js','.build/*.js'], dest: 'dest/main.js' }] } }, uglify:{ options:{ }, dist:{ files:[{ expand:true, cwd:'dest/', src: '*.js', dest: 'dest/', ext:'.min.js' }] } }, clean: { dist: { src: '.build' }, release: { src: 'dest' } } }); grunt.loadNpmTasks('grunt-cmd-transport'); grunt.loadNpmTasks('grunt-cmd-concat'); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-clean'); // 默认任务 grunt.registerTask('default', ['clean:release','transport','concat','uglify','clean:dist']);};
// 构建后define("main", [ "./drag", "./range", "./scale" ], function(require, exports, module) { var oDiv1 = document.getElementById("div1"); var oDiv2 = document.getElementById("div2"); var oDiv3 = document.getElementById("div3"); var oBtn = document.getElementById("button"); oBtn.onclick = function() { oDiv1.style.display = "block"; }; require("./drag").drag(oDiv3); require("./scale").scale(oDiv1, oDiv2);});// JavaScript Documentdefine("./drag", [ "./range" ], function(require, exports, module) { function drag(obj) { var disX = 0; var disY = 0; obj.onmousedown = function(ev) { var ev = window.event || ev; disX = ev.clientX - obj.offsetLeft; disY = ev.clientY - obj.offsetTop; document.onmousemove = function(ev) { var L = require("./range").range(ev.clientX - disX, document.documentElement.clientWidth - obj.offsetWidth, 0); var T = require("./range").range(ev.clientY - disY, document.documentElement.clientHeight - obj.offsetHeight, 0); var ev = window.event || ev; // obj.style.left=ev.clientX-disX+'px'; // obj.style.top=ev.clientY-disY +'px'; obj.style.left = L + "px"; obj.style.top = T + "px"; }; document.onmouseup = function() { document.onmousemove = null; document.onmouseup = null; }; }; } exports.drag = drag;});// JavaScript Documentdefine("range", [], function(require, exports, module) { function range(iNum, iMax, iMin) { if (iNum > iMax) { return iMax; } else if (iNum < iMin) { return iMin; } else { return iNum; } } exports.range = range;});// JavaScript Documentdefine("scale", [ "./range" ], function(require, exports, module) { function scale(obj1, obj2) { var disX = 0; var disY = 0; var disW = 0; var disH = 0; obj2.onmousedown = function(ev) { var ev = window.event || ev; disX = ev.clientX; disY = ev.clientY; disW = obj1.offsetWidth; disH = obj1.offsetHeight; document.onmousemove = function(ev) { var ev = window.event || ev; var L = require("./range").range(disW + ev.clientX - disX, 500, 100); var T = require("./range").range(disH + ev.clientY - disY, 500, 100); // obj1.style.width=disW+ev.clientX-disX+'px'; // obj1.style.height=disH+ev.clientY-disY+'px'; obj1.style.width = L + "px"; obj1.style.height = T + "px"; }; document.onmouseup = function(ev) { document.onmousemove = null; document.onmouseup = null; }; }; } exports.scale = scale;});最后想了下,为啥合并后为啥路径都不准确了,却可以找到这个模块。。因为ID,ID就是路径。。。不得不说SEA。JS为你想好了。。<pre name="code" class="html"><pre name="code" class="html">在合并后的页面,REQUIRE"./drag" 这个ID, 就要找到匹配这个ID的 DEFINE模板就行了。。。而没在合并之前,REQUIRE的是路径, 定义的是匿名模块,所以没有ID匹配的原则。。。
require("./drag").drag(oDiv3);// JavaScript Documentdefine("./drag", [ "./range" ], function(require, exports, module) {
- sea.js+grunt学习笔记
- sea.js基础学习
- sea.js学习收集
- grunt学习笔记二:package.js
- grunt学习笔记三:gruntfile.js-demo
- JavaScript模块化解决方案Sea.js+Grunt(中)
- grunt学习笔记
- grunt学习笔记
- grunt学习笔记
- Yeoman(Yo、Grunt、Bower),node.js学习笔记
- Yeoman(Yo、Grunt、Bower),node.js学习笔记
- grunt学习笔记一:grunt安装
- grunt学习笔记四:grunt实例demo
- grunt学习笔记五:grunt模板
- sea.js和require.js学习网址
- Sea.js
- sea.js
- Sea.js
- grunt任务配置
- 构建qt4.8.6嵌入式qt环境
- jQuery和CSS3商品图片预览轮播图插件
- P51 第4题 编写一个程序,判断用户输入的字符是否是数字,若是数字,则输出“a numerical character”,否则输出“other character”.
- CentOS 6.6下安装SQLite
- sea.js+grunt学习笔记
- Josephus问题
- Android开发架构设计之健壮且可读的安卓架构(下篇)
- 【CF】529B Group Photo 2 (online mirror version)
- 11种超酷CSS3复选框样式美化效果
- test命令
- Asterisk 13.2.0 current.tar.gz安装步骤详解
- Java堆栈介绍
- MySQL drop table操作风险