全局安装
1 | npm install -g browser-sync |
项目中安装
1 | npm install --save-dev browser-sync |
启动 BrowserSync
1 | //监听一个文件 |
中文官网文档
www.browsersync.cn
1 | npm install -g browser-sync |
1 | npm install --save-dev browser-sync |
1 | //监听一个文件 |
在最新的 DOM 规范中,事件的捕获与冒泡是通过 addEventListener(...arg) 的第三个参数的 capture来指定的。默认为 false,也就是默认冒泡。1
2
3
4
5addEventListener(type, listener, {
capture: false,
passive: false,
once: false
})

在多个嵌套情况下,捕获的触发是从外到内的,冒泡则相反。先进行捕获,然后是冒泡。
这里要注意一点,在最后的一层中,先触发冒泡或捕获决定于代码中出现的先后,先出现的先执行。
不是所有的事件都能冒泡,例如:blur、focus、load、unload
同时支持两种事件模型:捕获型事件和冒泡型事件,但是,捕获型事件先发生。两种事件流会触及DOM中的所有对象,从document对象开始,也在document对象结束。
DOM事件模型最独特的性质是,文本节点也触发事件
在一个支持W3C DOM的浏览器中,像这样一般的绑定事件方式,是采用的事件冒泡方式。
1 | ele.onclick = ()=>{ |
IE只支持事件冒泡,不支持事件捕获,它也不支持 addEventListener 函数,不会用第三个参数来表示是冒泡还是捕获,它提供了另一个函数 attachEvent。1
2
3ele.attachEvent("onclick", ()=>{
//doSomething
});
stopPropagation() 方法cancelBubble = truestopPropagation(); 后,后面的冒泡过程也不会发生了preventDefault(); 方法;window.event.returnValue = false;1 |
|
1 | npm install --save socket.io |
1 | var app = require('express')(); |
1 | <script src="/socket.io/socket.io.js"></script> |
这样就能看到用户链接信息了
1 | io.on('connection', function(socket){ |
这样就能看到用户退出信息了
1 | <script src="/socket.io/socket.io.js"></script> |
1 | io.on('connection', function(socket){ |
完成发送给服务器数据
1 | <script> |
1 | io.on('connection', function(socket){ |
完成服务器给前端返回数据
Nothing to say
Front-End Development Engineer