半岛铁盒

生活、技术个人博客


  • 首页

  • 分类

  • 归档

  • 标签

  • 关于

命令操作符-小记

发表于 2017-12-19 | 分类于 vue | | 阅读次数

cd 路径 ——进入某个文件

cd .. ——-跳出本文件

webpack 安装命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//全局安装
npm install -g webpack

方式1:
//安装到你的项目目录
npm install --save-dev webpack
//npm init 安装依赖包 package.json

方式2:
//npm init -y 使用默认设置
npm i -D webpack 项目开发的依赖

npm run dev 运行脚本

插件安装:
npm i -D html-webpack-plugin 安装插件用来新建html文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
webpack.config.js配置文件的应用:

const HtmlWebpackPlugin=require('html-webpack-plugin')
const path=require('path');
module.exports={
entry:'./src/app.js',
output:{
path:path.resolve(__dirname,'dist'),
filename:'main.js'
},
plugins:[
new HtmlWebpackPlugin({
filename:"abc.html",//文件名称
template:"src/index.html" //定义模板 路径
})
]
}

loader 就是webpack 用来预处理模块的
在一个模块被引入之前,会预先使用loader 处理模块的内容

1
2
3
npm i -S react react-dom  //安装react 和 react-dom
npm i -D babel-loader babel-core //安装babel-loader 和它所需要的库
npm i -D babel-preset-react //安装react 预设

面向对象组件开发-完整实例

发表于 2017-12-19 | 分类于 javascript | | 阅读次数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
#div1 div,#div2 div,#div3 div,#div4 div{width: 300px;height: 300px;border: 1px solid #000;display: none;}
input.active{background: red;}
</style>
<script src="js/jquery-1.10.2.min.js"></script>
</head>

<body>
<script>

/**
title : 基于JQ的选项卡组件

Options : event delay

Methods : nowSel()默认tab索引项目显示 getContent()

Events : beforeClick afterClick 自定义事件 beforeClick在点击之前弹出当前选项卡的内容 afterClick在点击之后弹出当前选项卡的内容

jQ 中自定义事件的主动触发用trigger();
*/

//jQ中的主动触发 : trigger()

$(function(){
var tab=new Tab();
tab.init('div1',{});

var tab2=new Tab();
tab2.init('div2',{
event:'mouseover'
});

var tab3=new Tab();
tab3.init('div3',{
event:'mouseover',
delay:300
});

var tab4=new Tab();
tab4.init('div4',{});
tab4.nowSel(2);
$("#input1").click(function(){
// alert("a")
alert(tab4.getContent());
})

$(tab4).on('beforeClick',function(){
alert(tab4.getContent());
})

$(tab4).on('afterClick',function(){
alert(tab4.getContent());
})

});

function Tab(){
this.oParent=null;
this.ainput=null;
this.adiv=null;
this.iNow=0;

this.settings={
event:'click',
delay:0
}
}
Tab.prototype.init=function(oParent,opt){
this.oParent=$('#'+oParent);
this.ainput=this.oParent.find('input');
this.adiv=this.oParent.find('div');
$.extend(this.settings,opt);
this.change();
}

Tab.prototype.change=function(){
var This=this;
var timer=null;
This.ainput.on(This.settings.event,function(){
_this=this;
if(This.settings.delay && This.settings.event=='mouseover'){
timer=setTimeout(function(){
show(_this)
},This.settings.delay)
}else{
show(this)
}

}).mouseout(function(){
clearTimeout(timer);
})

function show(obj){
$(This).trigger('beforeClick');
This.ainput.attr('class','');
$(obj).attr('class','active');
This.adiv.css("display","none");
This.adiv.eq($(obj).index()).css("display","block")
This.iNow=$(obj).index();
$(This).trigger('afterClick');
}
}

Tab.prototype.nowSel=function(index){
this.ainput.attr('class','');
this.adiv.css("display","none");
this.ainput.eq(index).attr('class','active');
this.adiv.eq(index).css("display","block")
this.iNow=index;
}

Tab.prototype.getContent=function(){
return this.adiv.eq(this.iNow).html();
}

</script>
<!-- http://tangram.baidu.com.magic -->

<div id="div1">
<input class="active" type="button" value="1">
<input type="button" value="2">
<input type="button" value="3">

<div class="content" style="display:block">
1111111
</div>
<div class="content" >
2222222
</div>
<div class="content">
3333333
</div>

</div>

<div id="div2">
<input class="active" type="button" value="1">
<input type="button" value="2">
<input type="button" value="3">
<div class="content" style="display:block">
1111111
</div>
<div class="content" >
2222222
</div>
<div class="content">
3333333
</div>
</div>

<div id="div3">
<input class="active" type="button" value="1">
<input type="button" value="2">
<input type="button" value="3">
<div class="content" style="display:block">
1111111
</div>
<div class="content" >
2222222
</div>
<div class="content">
3333333
</div>
</div>

<div id="div4">
<input class="active" type="button" value="1">
<input type="button" value="2">
<input type="button" value="3">
<div class="content" style="display:block">
1111111
</div>
<div class="content" >
2222222
</div>
<div class="content">
3333333
</div>
</div>

<input type="button" value="点击" id="input1">

</body>

</html>

面向对象组件开发-自定义事件实例

发表于 2017-12-19 | 分类于 javascript | | 阅读次数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
<style>
#div1{ width:100px; height:100px; background:red; position:absolute;}
#div2{ width:100px; height:100px; background:yellow; position:absolute; left:100px;}
#div3{ width:100px; height:100px; background:blue; position:absolute; left:200px;}
#div4{ width:100px; height:100px; background:green; position:absolute; left:300px;}

</style>
<script>

//组件开发 : 多组对象,像兄弟之间的关系( 代码复用的一种形式 )

window.onload = function(){

var d1 = new Drag();
d1.init({ //配置参数
id : 'div1'
});

var d2 = new Drag();
d2.init({ //配置参数
id : 'div2',

});

bindEvent(d2,'toDown',function(){
document.title='hello'
})

var d3 = new Drag();
d3.init({ //配置参数
id : 'div3'
});
bindEvent(d3,'toDown',function(){
document.title = '妙味';
})
bindEvent(d3,'toUp',function(){
document.title='课堂';
})

var d4 = new Drag();
d4.init({ //配置参数
id : 'div4'
});
bindEvent(d4,'toUp',function(){
document.title = 'beybye';
})

};

function Drag(){
this.obj = null;
this.disX = 0;
this.disY = 0;

this.settings={

}

}

Drag.prototype.init = function(opt){

var This = this;

this.obj = document.getElementById(opt.id);

extend( this.settings , opt );

this.obj.onmousedown = function(ev){
var ev = ev || window.event;
This.fnDown(ev);

fireEvent(This,'toDown');

document.onmousemove = function(ev){
var ev = ev || window.event;
This.fnMove(ev);
};
document.onmouseup = function(){
This.fnUp();

fireEvent(This,'toUp');

};
return false;
};

};

Drag.prototype.fnDown = function(ev){
this.disX = ev.clientX - this.obj.offsetLeft;
this.disY = ev.clientY - this.obj.offsetTop;
};
Drag.prototype.fnMove = function(ev){
this.obj.style.left = ev.clientX - this.disX + 'px';
this.obj.style.top = ev.clientY - this.disY + 'px';
};
Drag.prototype.fnUp = function(){
document.onmousemove = null;
document.onmouseup = null;
};

function extend(obj1,obj2){
for(var attr in obj2){
obj1[attr] = obj2[attr];
}
}

// 自定义事件---绑定事件

function bindEvent(obj,event,fn){

obj.lisenters=obj.lisenters||{};
obj.lisenters[event]=obj.lisenters[event]||[];
obj.lisenters[event].push(fn);

if(obj.nodeType){
if(obj.addEventListener){
obj.addEventListener(event,fn,false)
}else{
obj.attachEvent('on'+event,fn)
}
}
}

function fireEvent(obj,event){
if(obj.lisenters && obj.lisenters[event]){
for(var i=0;i<obj.lisenters[event].length;i++){
obj.lisenters[event][i]();
}
}
}

</script>
</head>

<body>
<div id="div1"></div>
<div id="div2"></div>
<div id="div3"></div>
<div id="div4"></div>
</body>
</html>

面向对象组件开发-自定义事件

发表于 2017-12-19 | 分类于 javascript | | 阅读次数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<!--
自定义事件:主要是跟函数有关系, 就是让函数能够具备事件的某些特性
-->
<div id="div">div</div>
<span id="span">span</span>

<script>

window.onload=function(){
var oDiv=document.getElementById("div");
var oSpan=document.getElementById("span");

bindEvent(oDiv,'click',function(){
alert("a");
})
bindEvent(oDiv,'click',function(){
alert("b");
})

bindEvent(oSpan,'show',function(){
alert("我是自定义了事件show,调用firEvent直接执行")
})

// 自定义一个事件名字为show,那么我们要写一个函数来调取

fireEvent(oSpan,'show');
// 那么用fireEvent怎么去函数bindEvent里面直接找到并触发呢?

}

function bindEvent(obj,event,fn){

// obj 一座楼
// event 书架
// fn:需要找的书

// 连接
obj.lisenters=obj.lisenters||{};
obj.lisenters[event]=obj.lisenters[event]||[];
obj.lisenters[event].push(fn);

if(obj.addEventListener){
obj.addEventListener(event,fn,false)
}else{
obj.attachEvent('on'+event,fn)
}
}

function fireEvent(obj,event){
// 那么我就去obj.lisenters[event]里遍历出来那么本书(fn)就好了; 主动触发自定义事件
for(var i=0;i<obj.lisenters[event].length;i++){
obj.lisenters[event][i]();//执行自定义事件的函数行为
}
}

</script>

</body>
</html>
123…18
Jksen zhangxing

Jksen zhangxing

酝酿中....

69 日志
11 分类
33 标签
RSS
GitHub 微博
Links
  • 我的站点
© 2020 Jksen zhangxing
由 Hexo 强力驱动
主题 - NexT.Mist