nodeJs学习笔记

今天开始学习nodeJs

node.js是什么?
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
有了Node.js,我们也不用依赖浏览器来调试我们js代码了。

安装完毕之后,就可以使用了。

每个.js文件nodejs就认为是一个模块。
例如:nodejs1.js
'use strict'

var s = 'Hello';

var b = 'Bye';

function greet(name){
    console.log(s+','+name+'!');
}

function goodBye(name){
    console.log(b+','+name);
}

module.exports = greet;
module.exports = goodBye;


最后exports表示向外提供的函数或者对象(函数也是对象)


main.js

'use strict'

var g = require('./nodejs1');

var s = 'Kevin';

g(s)


结果是什么?
Bye,Kevin

引入nodejs1这个模块,最后只应用了该模块最后一行向外提供的对象,如何都应用?留个问题在这里。

nodejs向外提供对象有两种方式
exports.obj1 = greet;
exports.obj2 = goodBye;

或者
module.exports = {
    obj1: greet,
    obj2: goodBye
};


这两个是等效的。
但是使用exports只能用.(点操作符)来赋值,不能用类似初始化,来初始化exports
例如:
exports = {
    obj1: greet,
    obj2: goodBy
} 是错误的,有些IDE会直接提示编译错误,这是nodejs内部实现导出模块决定的。


如果我们要编写一个模块,一定要确保别人引用的时候是可以使用的。

刚才的问题就有了答案了,我们如果要对外提供模块中的两个对象,需要用
exports.obj1 = greet;
exports.obj2 = goodBye;

或者
module.exports = {
    obj1: greet,
    obj2: goodBye
};


而不能是我上边写的,这样写等于是重新给module.exports赋值了,引用就换成了goodBye的引用了。

既然是向外提供对象,那就不仅仅是函数了。只要是对象就可以向外提供,例如:
module.exports = {
    obj1: greet,
    obj2: goodBye,
    default:"hahaha"
};


var greet = require('./nodejs1');

var s = 'Kevin';


greet.obj1(s);
var def = greet.default;

console.log(def);


输出:
Hello,Kevin!
哈哈哈

你可能感兴趣的:(js,nodejs,全栈)