- console.log(module.exports === exports); // true
- // 所以 exports 所操作的就是 module.exports
然则实际的开辟过程中,如许很快就碰着了问题。我们欲望的代码可能是如许:
但按照这个目标封装include的时刻,我们发清楚明了问题。无论我们在include.js内部中若何实现,都不克不及像开端那样拿到新的 b.num。
比较开端的代码,我们发明问题出在少了 b = xx。也就是嗣魅如许写才可以:
web.js
- var include = require('./include');
- var express = require('express');
- var app = express();
- app.get('/', function (req, res) {
- var b = include('./b.js');
- res.send(b.num);
- });
- app.listen(3000);
修改成如许,就可以包管每次能可以精确的刷新到最新的代码,并且不消重启实例了。读者有兴趣的可以研究这个include是怎么实现的,本文就不深刻评论辩论了,因为这个技能运费用不高,写起起来不是很优雅[1],反而这个中有一个更重要的问题——JavaScript的引用。
JavaScript 的引用与传统引用的差别
要评论辩论这个问题,我们起重要懂得 JavaScript 的引用于其他说话中的一个差别,在 C++ 中引用可以直接修改外部的值:
- #include <iostream>
- using namespace std;
- void test(int &p) // 引用传递
- {
- p = 2048;
- }
- int main()
- {
- int a = 1024;
- int &p = a; // 设置引用p指向a
- test(p); // 调用函数
- cout << "p: " << p << endl; // 2048
- cout << "a: " << a << endl; // 2048
- return 0;
- }
- var obj = { name: 'Alan' };
- function test1(obj) {
- obj = { hello: 'world' }; // 试图修改外部obj
- }
- test1(obj);
- console.log(obj); // { name: 'Alan' } // 并没有修改①
- function test2(obj) {
推荐阅读
移动互联网人口红利逐渐消退 华为Hi-Star晨星计划一触即发
【51CTO.com原创稿件】 据懂得,在2016岁尾,我国移动智能终端范围冲破13.7亿台,跟着人口红利减退,充分盘活、经营现有流量便成为了各行各业全新的机会与挑衅。经由过程近几年互联网手机>>>详细阅读
地址:http://www.17bianji.com/lsqh/34702.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示