2.精通前端系列技术之seajs模块化使工作更简单(二)

drag.js

// JavaScript Document

//B开发

define(function(require,exports,module){

    function drag(obj){
        var disX = 0;
        var disY = 0;

        obj.onmousedown = function(ev){

            var ev = ev || window.event;
            disX = ev.clientX - obj.offsetLeft;
            disY = ev.clientY - obj.offsetTop;

            document.onmousemove = function(ev){
                var ev = ev || window.event;

                var L = ev.clientX - disX;
                var T = ev.clientY - disY;

                //L = require(‘./range.js‘).range(L , document.documentElement.clientWidth - obj.offsetWidth , 0);
                //T = require(‘./range.js‘).range(T , document.documentElement.clientHeight - obj.offsetHeight , 0);

                obj.style.left = L + ‘px‘;
                obj.style.top = T + ‘px‘;
            };

            document.onmouseup = function(){
                document.onmousemove = null;
                document.onmouseup = null;
            };

            return false;

        };

    }

    exports.drag = drag;

});

main.js

// JavaScript Document

//A开发

define(function(require,exports,module){

    var oInput = document.getElementById(‘input1‘);
    var oDiv1 = document.getElementById(‘div1‘);
    var oDiv2 = document.getElementById(‘div2‘);
    var oDiv3 = document.getElementById(‘div3‘);

    require(‘./drag.js‘).drag(oDiv3);

    oInput.onclick = function(){

        oDiv1.style.display = ‘block‘;

        require(‘./scale.js‘).scale(oDiv1,oDiv2);

    };

});

range.js

// JavaScript Document

define(function(require,exports,module){

    function range(val , max , min){

        if( val > max ){
            return max;
        }
        else if( val < min ){
            return min;
        }
        else{
            return val;
        }

    }

    exports.range = range;

});

scale.js

// JavaScript Document

//C开发

define(function(require,exports,module){

    function scale(obj1,obj2){

        var downX = 0;
        var downY = 0;
        var downW = 0;
        var downH = 0;

        obj2.onmousedown = function(ev){
            var ev = ev || window.event;
            downX = ev.clientX;
            downY = ev.clientY;
            downW = obj1.offsetWidth;
            downH = obj1.offsetHeight;

            document.onmousemove = function(ev){
                var ev = ev || window.event;

                var W =  ev.clientX - downX + downW;
                var H = ev.clientY - downY + downH;

                W = require(‘./range.js‘).range(W , 500 , 100);
                H = require(‘./range.js‘).range(H , 500 , 100);

                obj1.style.width = W + ‘px‘;
                obj1.style.height = H + ‘px‘;
            };

            document.onmouseup = function(){
                document.onmousemove = null;
                document.onmouseup = null;
            };

            return false;

        };

    }

    exports.scale = scale;

});

index.html

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
<style>
#div1{ width:200px; height:200px; background:red; position:absolute; display:none;}
#div2{ width:30px; height:30px; background:yellow; position:absolute; right:0; bottom:0;}
#div3{ width:100px; height:100px; background:blue; position:absolute; right:0; top:0;}
</style>
<script src="../sea/sea.js"></script>
<script>

//A开发

seajs.use(‘./main.js‘);

</script>
</head>

<body>
<input type="button" value="弹窗" id="input1">
<div id="div1">
    <div id="div2"></div>
</div>
<div id="div3"></div>
</body>
</html>
时间: 2024-12-20 08:29:06

2.精通前端系列技术之seajs模块化使工作更简单(二)的相关文章

2.精通前端系列技术之JavaScript模块化开发

在使用seajs模块化开发之前,直接在页面引用js会容易出现冲突及依赖相关的问题,具体问题如下 问题1:多人开发脚本的时候容易产生冲突(比如全局参数冲突,方法名冲突),可以使用命名空间降低冲突,不能完全避免冲突 // JavaScript Document /*var a = 10; function tab(){} function drag(){} function dialog(){}*/ var miaov = {}; //名字比较长 , 只能降低冲突,不能完全避免 miaov.a =

2.精通前端系列技术之JS模块化开发-深入学习seaJs(四)

深入学习seajs 配置信息 alias : 别名配置 paths : 路径配置 vars : 变量配置 map : 映射配置 preload : 预加载项 debug : 调试模式 base : 基础路径 charset : 文件编码 深入学习seajs module id : 模块唯一标识 uri : 模块绝对路径 dependencies : 当前模块依赖 exports : 当前模块对外接口 require.async 异步加载模块 // JavaScript Document //va

2.精通前端系列技术之seajs和gruntJs结合开发(三)

1.我们先来了解下模块化历史 模块化历史 nodeJS的出现(http://nodejs.org/) commonJS规范(http://www.commonjs.org/) 浏览器JS的模块化? AMD规范(http://wiki.commonjs.org/wiki/Modules/AsynchronousDefinition) requireJS库(http://requirejs.org/ CMD规范 Seajs采用的 我们通常开发前端的时候分为线下和线上,线下直接开发调试脚本,而线上是很

1.精通前端系列技术之js正则表达式

在不会正则的时候,我们寻找字符串某些规律或者截取部分特殊字符的时候,我们需要写很多行代码来获取我们想要的字符串,在使用正则之后,代码量会大量简洁很多 1.字符串的比较,判断是否数字类型的字符串,我们用字符编码范围来判断 <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; ch

10 分钟,带你快速入门前端三大技术(HTML、CSS、JavaScript)

听到前端技术,不少朋友一定会感到有些陌生.但其实,前端,你每天都在接触. 你正在使用的APP,你正在浏览的网页,这些你能看到的界面,都属于前端. 而前端最重要的三大技术,HTML,CSS,JavaScript,则是每一个前端开发者必须具备的技能. 掌握这些技能,你可以快速地做出一个酷炫的APP界面或者一个简单大方的网站页面.因此,就让我们一起来快速学习一下这三门技术吧. 以下内容节选自课程<Vue.js 和 Node.js 构建内容发布系统>. 大家也可以点击课程链接,在实验楼提供的虚拟机环境

[后端人员耍前端系列]AngularJs篇:30分钟快速掌握AngularJs

一.前言 对于前端系列,自然少不了AngularJs的介绍了.在前面文章中,我们介绍了如何使用KnockoutJs来打造一个单页面程序,后面一篇文章将介绍如何使用AngularJs的开发一个单页面应用程序.在开始使用AngularJs开发SPA之前,我觉得有必要详细介绍下AngularJs所涉及的知识点.所有也就有了这篇文章. 二.AngularJs介绍 AngularJS是Google推出的一款Web应用开发框架.它提供了一系列兼容性良好并可扩展的服务,包括数据绑定.DOM操作.MVC和依赖注

seaJs模块化开发简单入门

随着前端技术的日益成熟,功能越来越丰富强大,规范也越来越健全,在这样的背景环境下很快便有了CommonJs.AMD.CMD等一系列规范,使前端发开趋向模块化.规范化.CMD模块化的代表之一就是国内开发的seaJs,它有很多优点: 遵从CMD规范,代码模块化 中文文档通俗易懂,入门上手简单 兼容性好.配置简洁明了.提供插件接口 seajs模块化基本流程: 引入sea.js库 define定义模块 exports暴露模块 require导入模块 安装 npm安装 npm i seajs bower安

爆栈之前端工程化技术小结备案

ps,前些天一90后同事说,要我多写些blog,因为你的实力要show给别人知道,就要怎样怎样的.. 同时建议写个工程化架构来简化工作等等.有时觉得有点对,又觉得有点可笑,有觉得有点无奈... 由于本人是重后端技术,所以对前端技术了解并不深入. 由于很多都是原始pc的web,而且大多都是轻前端项目.所以这里先说下以前用到过的前端js技术大多是: jquery,extjs,easyui,ko,bootstrap,dorado等等,当然还有各种各样的,如日历,上传,富编辑器,报表等等js插件. 但现

SeaJS入门教程系列之使用SeaJS(二)

SeaJS入门教程系列之使用SeaJS(二) 作者: 字体:[增加 减小] 类型:转载 时间:2014-03-03我要评论 这篇文章主要介绍了SeaJS入门教程系列之使用SeaJS,着重介绍了SeaJS的使用方法.关键方法的使用等,需要的朋友可以参考下 下载及安装 要在项目中使用SeaJS,你所有需要做的准备工作就是下载sea.js然后放到你项目的某个位置.SeaJS项目目前托管在GitHub上,主页为 https://github.com/seajs/seajs/ .可以到其git库的buil