发表日期: 2022-07-02 13:49:30 浏览次数:28
池州公众号代运营公司
网站不光有静态和动态之分,还有一种伪静态网站。这是目前网站建设公司常用的网页方式,伪静态光听名字,相信大家都能明白个几分,伪实际上还是假的,只是伪装成静态,实质上还是动态的,在数据的处理过程上和动态的一样。只是在网址的形式上看,伪静态的地址和静态的可以一摸一样,普通的访问者不容易分出是真静态还是伪静态。举个例子,大家可以去看看上海网站建设公司 明企的官网。也是采用伪静态技术制作的。
伪静态网站
为什么要把网站做成伪静态,因为蜘蛛一般也会把这种形式的网页当做是静态的来处理。从技术角度来讲,其实伪静态相对动态来说,更加消耗服务器资源,因为网页地址需要按事先设定好的伪静态规则来进行正则匹配,这一个过程是消耗资源的,所以一般都采用缓存来解决。这种形式,比动态的网址多了一个匹配筛选的过程。
上海网站建设 明企还要说明一下,网站想要生成伪静态,有一个问题很关键。就是要看您的虚拟主机是不是支持。所以在选择网站空间的时候,就需要和网络公司确认好,网站空间支持哪些功能。
以下实例通过 connection(连接)事件演示了 EventEmitter 类的应用。
创建 main.js 文件,代码如下:
var events = require('events');var eventEmitter = new events.EventEmitter();// 监听器 #1var listener1 = function listener1() { console.log('监听器 listener1 执行。');}// 监听器 #2var listener2 = function listener2() { console.log('监听器 listener2 执行。');}// 绑定 connection 事件,处理函数为 listener1 eventEmitter.addListener('connection', listener1);// 绑定 connection 事件,处理函数为 listener2eventEmitter.on('connection', listener2);var eventListeners = eventEmitter.listenerCount('connection');console.log(eventListeners + " 个监听器监听连接事件。");// 处理 connection 事件 eventEmitter.emit('connection');// 移除监绑定的 listener1 函数eventEmitter.removeListener('connection', listener1);console.log("listener1 不再受监听。");// 触发连接事件eventEmitter.emit('connection');eventListeners = eventEmitter.listenerCount('connection');console.log(eventListeners + " 个监听器监听连接事件。");console.log("程序执行完毕。");
以上代码,执行结果如下所示:
$ node main.js2 个监听器监听连接事件。监听器 listener1 执行。监听器 listener2 执行。listener1 不再受监听。监听器 listener2 执行。1 个监听器监听连接事件。程序执行完毕。
EventEmitter 定义了一个特殊的事件 error,它包含了错误的语义,我们在遇到 异常的时候通常会触发 error 事件。
当 error 被触发时,EventEmitter 规定如果没有响 应的监听器,Node.js 会把它当作异常,退出程序并输出错误信息。
我们一般要为会触发 error 事件的对象设置监听器,避免遇到错误后整个程序崩溃。例如:
var events = require('events'); var emitter = new events.EventEmitter(); emitter.emit('error');
运行时会显示以下错误:
node.js:201 throw e; // process.nextTick error, or 'error' event on first tick ^ Error: Uncaught, unspecified 'error' event. at EventEmitter.emit (events.js:50:15) at Object.<anonymous> (/home/byvoid/error.js:5:9) at Module._compile (module.js:441:26) at Object..js (module.js:459:10) at Module.load (module.js:348:31) at Function._load (module.js:308:12) at Array.0 (module.js:479:10) at EventEmitter._tickCallback (node.js:192:40)
大多数时候我们不会直接使用 EventEmitter,而是在对象中继承它。包括 fs、net、 http 在内的,只要是支持事件响应的核心模块都是 EventEmitter 的子类。
为什么要这样做呢?原因有两点:
首先,具有某个实体功能的对象实现事件符合语义, 事件的监听和发生应该是一个对象的方法。
其次 JavaScript 的对象机制是基于原型的,支持 部分多重继承,继承 EventEmitter 不会打乱对象原有的继承关系。
备案号: 苏ICP备11067224号
CopyRight © 2011 书生商友信息科技 All Right Reserved
24小时服务热线:400-111-6878 E-MAIL:1120768800@qq.com QQ:1120768800
网址: https://www.768800.com 网站建设:上往建站
关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|
企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|
400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 昌平殡葬| 朝阳殡葬|
欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系
服务热线:400-111-6878
1、eventEmitter.on()与eventEmitter.addListener()没有区别,且一个事件可以绑定多个回调函数;
2、若事件队列中出现一个未绑定事件则触发error事件,若未绑定 error事件则程序抛出异常结束执行
THMAIL
555***QQ.COM
1.0版
187***17005@163.com
参考地址
EventEmitter 里面的 error 事件,EventEmitter 即使绑定了 error 事件,也是不会输出的。而是会在控制台打印该异常的堆栈信息,并结束进程。 获取异常只能通过 try catch。
我测试了一下,绑定 error 事件。只能自己触发,eventEmitter.emit('error'); 当没有错误时,会在控制台打印 Error:undefined。有错误时,不会打印,直接打印该异常的堆栈信息,并结束进程。
1.0版
187***17005@163.com
参考地址
tiandashu
107***5714@qq.com
1、使用类方法 listenerCount 获取指定事件的监听数量替代方案。
2、removeListener('connection',callback); 此处参数 callback 必须和监听器中的回调函数是同一个,否则不生效。
tiandashu
107***5714@qq.com
sakura_rain
271***2293@qq.com
如果大家学过类似的语言可以深切感受到,on 和 emit的真正含义。
举个例子:
一次注册,不被销毁的情况下可以多次调用执行。
这也是它和 once 之间的区别。
on:注册
emit:执行