初学nodejs中涉及到模块导入内容的简单原理(参考廖雪峰的教程)
最近在学习nodejs前端的一些内容,作为一名java程序员还是有点小理想的(全栈全栈-_-!!!),希望自己能坚持住,好了不说废话了,下面我们进入正题… 本人是跟着廖雪峰大神的网站学习的,话说python和git也是在他那里学习的,非常推荐,我使用了他推荐的IDE,VSCode发现用起来还不错挺舒服的。
项目目标:写了简单的两个模块,一个是hello.js
模块,一个是main.js
模块,我们需要实现在main
模块中调用hello
模块的方法。
下面我们分别看下hello模块和main模块
hello.js
'use strict';
var name = 'Node.js';
var s = `Hello, ${name}!`;
function greet(name) {
console.log(s + ',' + name + '!');
}
function greet1(name) {
console.log(name + '!');
}
function greet2(name) {
console.log(name + '!');
}/*
// 准备module对象:
var module = {
id: 'hello',
exports: {}
};
这个案例就能说明,只需要将你要对外提供的函数写入module属性exports中即可
1.如果是只有一个函数对象,直接放入即可,
function greet(name) {
console.log(s + ',' + name + '!');
}
module.exports = greet;
调用模块获取被调用如下代码
var greet = require("./hello");
调用方式:
greet('cronous');
2.如果是多个对象,采用属性赋值的方式
module.exports.attr_name = value;
获取如下greet.attr_name(参数);
*/
//将模块方法暴露出去,塞入exports属性
module.exports.greet = greet;
module.exports.greet1 = greet1;
module.exports.greet2 = greet2;
【初学nodejs中涉及到模块导入内容的简单原理(参考廖雪峰的教程)】
main.js
'use strict';
//引入hello模块var greet = require("./hello");
//这个greet就相当于module.exportsvar s = 'cronous';
var s1 = 'a';
var s2 = 'b';
greet.greet(s);
//分别从exports中拿出函数
greet.greet1(s1);
greet.greet2(s2);
该案例输出:
Hello, Node.js!,cronous!
hello.js:7
a!
hello.js:10
b!
ps:在这个vscode环境的搭建中,我出现了一个低级问题,是复制代码造成的,我这里记下来,为以后学习的人作为参考吧,但我需要调试运行main.js时候出现问题提示:
D:\tools\nodejs\node.exe --nolazy --inspect-brk=6937 hello.js
Debugger listening on ws://127.0.0.1:6937/3cd6a272-4b27-4cfa-b5f9-cc6b9d1dafc5
For help, see: https://nodejs.org/en/docs/inspector
Debugger attached.
Waiting for the debugger to disconnect...
最后发现是vscode的运行模块配置问题:我原来的配置代码因为是粘贴的,所以没有修改,如下:
{
"version": "0.2.0",
"configurations": [{
"name": "Run demo",
"type": "node",
"request": "launch",
"program": "${workspaceRoot}/hello.js",//这里的入口路径没修改,应该为main.js
"stopOnEntry": false,
"args": [],
"cwd": "${workspaceRoot}",
"preLaunchTask": null,
"runtimeExecutable": null,
"runtimeArgs": [
"--nolazy"
],
"env": {
"NODE_ENV": "development"
},
"externalConsole": false,
"sourceMaps": false,
"outDir": null
}
]
}
修改后问题解决
自己觉得学习中比较有意思的点我就记在博客上,希望自己能坚持下去
文中具体细节内容说明请详见廖雪峰的网站https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/001434502419592fd80bbb0613a42118ccab9435af408fd000
推荐阅读
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)
- 单片机|单片机初学者做项目为什么这么难(单片机初学者心得有哪些)
- c语言|C语言初期学习遇到的特殊点 【三子棋详解】【初学者福音,详细总结,复习能手】
- 所有Python入门书籍的整理,初学者必看,附赠所有电子版(三)
- 带你了解NodeJS事件循环
- nodejs|nodejs 版本管理
- nodejs生成uuid
- 写给DataBinding初学者的入门介绍
- Kubernetes服务(初学者指南)
- Nodejs爬虫实战项目之链家