当前位置: 首页 > news >正文

网站邮箱怎么做的/杭州seo搜索引擎优化

网站邮箱怎么做的,杭州seo搜索引擎优化,做煤网站,网站标题更改后要多久才能收录零零星星看了一些nodejs的资料,发现对于nodejs模块系统仍然云里雾里,今天回过头来看了最初学习的例程,关于exports的机制做了个简单调查。首先,对于nodejs来说,一个文件就是一个模块,你可以export接口出去&…

零零星星看了一些nodejs的资料,发现对于nodejs模块系统仍然云里雾里,今天回过头来看了最初学习的例程,关于exports的机制做了个简单调查。

首先,对于nodejs来说,一个文件就是一个模块,你可以export接口出去,也可以require别的模块进来。

// module1.jsexports.func1 = function(){

console.log('func1 from module1 called');

}

module1把函数func1通过exports对象作为模块的公共访问接口。

//module2.jsvar in_module1 = require('./module1.js');

in_module1.func1();

exports.func2 = function(){

console.log('func2 from module2 called');

}

module2把module1 require进来,这个时候,in_module1就相当于module1的exports对象。当使用in_module1调用func1的时候,相当于通过module1的exports对象调用func1。

同时,module2自己的函数func2也通过模块的exports对象作为module2公共接口。

// module3.jsvar in_module2 = require('./module2.js');

in_module2.func2();

同理,module3把module2 require进来,此时in_module2就相当于module2的exports对象。

运行结果如下:

rlan@rlan-LA:~/nodejs/nodetest$ node module2.js

func1 from module1 called

rlan@rlan-LA:~/nodejs/nodetest$ node module3.js

func1 from module1 called

func2 from module2 called

nodejs引入模块不仅仅得到模块的公共接口,同时会把文件里别的语句一并引用进来,比如:

module1.js改为

// module1.jsconsole.log('this is in module1');

exports.func1 = function(){

console.log('func1 from module1 called');

}

module2.js改为

// module2.jsconsole.log('this is in module2');

var in_module1 = require('./module1.js');

in_module1.func1();

exports.func2 = function(){

console.log('func2 from module2 called');

}

module2引入了module1的func1函数,同时执行了module1中的打印语句:

rlan@rlan-LA:~/nodejs/nodetest$ node module1.js

this is in module1

rlan@rlan-LA:~/nodejs/nodetest$ node module2.js

this is in module2 - module2 self

this is in module1 - require module1

func1 from module1 called - module2 self

现在,module2 载入了module1,module3载入了module2,如果module3再载入一次module1会怎么样呢?

// module3.jsvar in_module1 = require('./module1.js');

var in_module2 = require('./module2.js');

in_module1.func1();

in_module2.func2();

这时候,module3首先载入了module1,又载入了module2,module2自己又载入了module1的部分,运行结果为

rlan@rlan-LA:~/nodejs/nodetest$ node module3.js

this is in module1 - require module1

this is in module2 - require module2

func1 from module1 called - require module2

func1 from module1 called - module3 self

func2 from module2 called - module3 self

假如把module3的require顺序调整一下:

// module3.jsvar in_module2 = require('./module2.js');

var in_module1 = require('./module1.js');

in_module1.func1();

in_module2.func2();

运行结果为:

rlan@rlan-LA:~/nodejs/nodetest$ node module3.js

this is in module2 - require module2

this is in module1 - require module2

func1 from module1 called - require module2

func1 from module1 called - module3 self

func2 from module2 called - module3 self

看起来nodejs用某种机制保证了同一个模块在另一个模块里不会被重复载入,所以

this is in module1

这一行只出现了一次,虽然在module3.js里似乎被载入了两次。

那么,如果循环载入了会发生什么呢?现在我们让module1来require module2:

// module1.jsconsole.log('this is in module1');

var in_module2 = require('./module2.js');

exports.func1 = function(){

console.log('func1 from module1 called');

}

// module2.js

console.log('this is in module2');

var in_module1 = require('./module1.js');

in_module1.func1();

exports.func2 = function(){

console.log('func2 from module2 called');

}

运行结果如下:

rlan@rlan-LA:~/nodejs/nodetest$ node module1.js

this is in module1

this is in module2

/home/rlan/nodejs/nodetest/module2.js:4

in_module1.func1();

^

TypeError: in_module1.func1 is not a function

at Object. (/home/rlan/nodejs/nodetest/module2.js:4:12)

at Module._compile (module.js:410:26)

at Object.Module._extensions..js (module.js:417:10)

at Module.load (module.js:344:32)

at Function.Module._load (module.js:301:12)

at Module.require (module.js:354:17)

at require (internal/module.js:12:17)

at Object. (/home/rlan/nodejs/nodetest/module1.js:3:18)

at Module._compile (module.js:410:26)

at Object.Module._extensions..js (module.js:417:10)

rlan@rlan-LA:~/nodejs/nodetest$ node module2.js

this is in module2

this is in module1

func1 from module1 called

nodejs似乎阻止了载入自己的行为,运行module2的时候,行为跟module1没有载入module2的结果一样,并没有报错。而在运行module1的时候,当走到module2里面,忽略了require module1的语句之后,module2调用了module1的func1,程序出错。

综上,nodejs里嵌套重复载入模块(或者载入自己)的require语句是不能正确执行的。

http://www.lbrq.cn/news/1339795.html

相关文章:

  • 海淀最新消息今天/网站关键词百度自然排名优化
  • 初学者做网站的软件/网站恶意点击软件
  • 购买网站模板/关键词快速排名怎么做
  • 基金网站制作/seo搜索引擎优化试题及答案
  • 网站备案有效期/代写软文费用全网天下实惠
  • 电视台网站建设/今晚比赛预测比分
  • 重庆招工招聘信息查询/seo外链购买
  • 微信小程序制作视频教程/南京百度seo
  • 东莞网站优化公司/seo文章代写平台
  • 无锡网站设计公司排名/泰安seo推广
  • 杭州 seo网站建设 网络服务/百度网首页
  • 怎样建设卡盟网站/网络营销最新案例
  • 下载专门做初中数学题的网站/千锋教育的真实性
  • 福州市建设局内部网站/网络营销方式有几种
  • 俄罗斯乌克兰战争最新消息/seo外包公司如何优化
  • wordpress无法创建数据库/北京网站优化seo
  • 石家庄关键词搜索引擎优化/win7优化教程
  • 网站建设公司上海做网站公司排名/小红书推广
  • dede 中英文网站/东莞网站建设哪家公司好
  • 品牌高端网站制作企业/黑五类广告推广
  • django网站开发教程/能打开的a站
  • 网站底部的制作/黄页引流推广链接
  • 江苏省建设工程竣工验收网站/网络营销渠道名词解释
  • 想开一家相亲网站 怎么做/武汉网站提升排名
  • 网站收录查询方法/实体店引流推广方法
  • 会展策划与管理/重庆网站seo技术
  • 教育网站制作多少费用/nba今日数据
  • 哈尔滨学校网站建设/百度搜题在线使用
  • 单页关键字优化/seo秘籍优化课程
  • 销售网站建设/黄冈免费网站推广平台汇总
  • C# 中常用集合以及使用场景
  • 【Python 高频 API 速学 ④】
  • 《汇编语言:基于X86处理器》第12章 复习题和练习
  • 复现论文关于3-RPRU并联机器人运动学建模与参数优化设计
  • I2CHAL库接口
  • 电子电气架构 --- 电气/电子架构迁移已拉开帷幕