nodeJs学习(1)

什么是NodeJS?和JavaScript有很大渊源的
JavaScript组成:ECMAScript(定义这门语言的基础,比如语法、数据类型、结构以及一些内置对象等)、DOM(基于ECMASCRIPT,扩展出来的用于操作页面元素的方法)、BOM(基于ECMASCRIPT,扩展出来的用于操作浏览器的一些方法)。
NodeJS是以ECMASCRIPT为基础,然后在这个基础上扩展出来的一些操作其他东西(即操作非浏览器)的一些方法,比如操作OS操作系统、file文件系统、net网络、database数据库等。也就是说nodejs和JS在底层都是一样的,都是ecmascript,但是扩展出来的功能却是不一样的。一个是偏向于前端浏览器,一个是偏向于后端。

新建一个hello.js的文件夹,保存后如何去显示nodejs的内容呢?需要先进行解析。像js是通过浏览器内置的解析器来进行解析的一样,nodejs也是有自己的解析器的,nodejs的解析器可以在nodejs官网上下载得到。https://nodejs.org/en/download/中下载
Windows Installer (.msi)文件,下载完成后,点击进行安装即可。双击node.exe可以打开,但是需要借助一些语法。也可以通过命令行打开。win+r键调出命令行,输入cmd进入。输入node后回车,如果出现>和光标换行,说明node安装成功了,并且能在任何地方运行的。两次ctrl+c可退出。注意,在win10版本中,需要输入.exit才可退出。
作业:课后百度下一些基本的命令行操作。
清屏:cls+回车
查看node版本:node -v+回车
执行node文件:node node文件路径,如:node c:\xampp\htdocs\huihui\hello.js+回车,即可看到node文件的输出内容
也可以直接进入该文件所在的路径文件夹,然后使用相对路径来执行node文件。
通过命令行来执行node是可以的,但是不推荐这种做法,推进简使用编辑器来执行。这里介绍webstorm编辑器来执行node的方法。

webstorm中的nodejs配置:file-settings-输入node,搜索,得到node.js and NPM,在有右侧node interpreter中选择我们node的安装路径,当然系统也会自动检测该路径,选择完后点击OK即可。选择完后,在hello.js文件中,点击右键,即可看到run 'hello.js'选项,点击后就会调用内置的命令行文件,来执行和输出node文件的程序运行结果。其结果和我们在命令行中执行的结果是一样的。这样就可加快我们的程序调试速度,同时也可以调用代码提示来加快编辑调试速度。如何配置webstorm中node的代码提示呢?file-settings-输入node,搜索,得到node.js and NPM,点击右侧config,加载node和核心模块,此时出来一个弹框,可以使用刚才下载好的包,也可以去线上下载。下载完成后,点击“edit usage score”,然后点击project,在project条右边点击一下,出来一个列表,将列表项的node有关东西都勾选上,点击确定。这样再在node文件hello.js中输入关键词后就会有提示了。

nodejs和JavaScript的异同:
-ECMAScript
-语法
-内置对象

ECMAScript中文版:http://lzw.me/pages/ecmascript/

在ecmascript部分node和JS其实是一样的,比如与数据类型的定义、语法结构,内置对象。但在js中的顶层对象是window对象,但是在node中没有什么window对象,node中的顶层对象是global对象。这就是二者的差异性。

在window对象中,定义一个全局变量是可以通过Window来访问的,但是在node中是不能通过global对象来访问的,如:
var a=100;
console.log(global.a);这种方式是输出结果为undefined
对于上面这个例子,因为在node中定义的变量是模块中的对象,而并不是global全局变量,所以结果为undefined

模块:在node中,一个文件就是一个模块,每个模块都有自己的作用域。我们使用var来声明的一个变量,他并不是全局的,而是属于当前模块下。要定义一个全局变量需要使用global.a来定义,如:
var a=100;
console.log(a);          //100
global.a=200;
console.log(a);          //100
console.log(global.a);   //200

__filename:当前文件被解析过后的绝地路径,可以直接拿来用的
console.log(__filename);

模块加载系统:使用require('模块'),例如引入同目录下的2.js文件:require('./2.js');就可以输出2.js中的执行结果
模块加载机制中的路径:
   1.相对路径:require('./2.js'),如果路径前面没有带./的话,就会去加载node中的核心模块,或者是node_modules
   2.绝对路径:require('c:/xampp/htdocs/huihui/2.js');
模块加载机制中的文件查找规则:require('./2')为例,首先会查找的是require('./2'),也就是会查找同目录下的文件名为2的文件(不带后缀名),即首先会按照加载的模块的文件名称进行查找,如果没有找到,则会在模块文件名称后加上.js的后缀进行查找。如果还没有找到,则会在文件名称后加上.json的后缀,进行查找。如果还没有,则会在文件名称后加上.node的后缀,进行查找。如果还没找到,则抛出错误。即先后顺序是:文件名称 ->.js ->.json ->.node

如果我们在一个模块中声明了一个变量,如何在另一个模块中调用这个变量呢?
在一个模块中通过var定义的变量,其作用域范围是当前模块,外部不能够直接访问。如果我们想一个模块能够访问另一个模块中定义的变量,可以:
1.把变量作为global对象的一个属性,比如global.a=100;但是这样的做法是不推荐的
2.使用模块对象module,用于保存提供和当前模块有关的一些信息。在这个module对象,有一个子对象exports对象,我们可以通过这个对象把一个模块中的局部变量对象进行提供访问。
在模块作用域内,还有一个内置的模块对象exports,他其实就是module.exports

可以在4.js模块中做如下声明:
module.exports.a=a;
console.log(module.exports===exports);
上述打印的返回结果是TRUE,也就是说内置的模块对象exports,他其实就是module.exports。即上述module.exports.a=a;也可以写成exports.a=a;

在3.js中调用4.js的变量:
var m=require('./4.js');//这个方法的返回值,其实就是被加载模块 中的module.exports
console.log(m);
可以看出不管是写成module.exports.a=a;还是exports.a=a;两者输出结果都是一样的,但是在使用中需要注意的是,尽量不要去破坏他们之间的引用关系。具体的请看下面说明:

module.exports=[1,2,3];//exports和module.exports的指向关系已经断开了
exports.a=200;//有了上面的话,这个时候exports和module.exports就已经没有引用关系了,如果在另一个模块中执行3.js的内容,其结果还是[1,2,3]。同理,也不要在写了module.exports=[1,2,3]后又写了exports=[1,2,3],这样也是将exports和module.exports的关系断开,尽量在做的时候,只在已有的两者之间去添加属性,而不要改变指向关系。



对于想要学习 Node.js 的人来说,以下是一个常见的学习路线: 1. 入门基础知识:首先了解 JavaScript 的基础知识,包括变量、控制流、函数等等。可以通过在线教程、书籍或视频课程学习。 2. 了解后端开发概念:学习关于服务器端开发的基本概念,例如 HTTP、网络通信、数据库等。 3. 学习 Node.js 基础:通过官方文档或在线教程学习 Node.js 的基础知识,包括安装、模块系统、事件驱动编程等。 4. 掌握核心模块:了解和熟悉 Node.js 的核心模块,例如 fs、http、path 等,以便能够构建简单的服务器应用程序。 5. 学习 Express 框架:Express 是一个流行的 Node.js Web 框架,学习它可以帮助你构建更复杂的 Web 应用程序。可以阅读官方文档或参考教程来学习 Express。 6. 学习数据库集成:了解如何在 Node.js 中使用数据库,例如 MongoDB 或 MySQL。学习数据库连接、CRUD 操作等。 7. 异步编程:深入理解 Node.js 的异步编程模型,包括回调函数、Promise、async/await 等。 8. 学习 RESTful API 设计:了解如何设计和构建符合 RESTful 风格的 API。 9. 深入学习和探索:根据个人兴趣和需求,学习其他 Node.js 相关的技术、工具和框架,例如 WebSocket、GraphQL、Socket.io 等。 记住,这只是一个大致的学习路线,你可以根据自己的兴趣和需求进行调整和扩展。实践对于学习 Node.js 来说非常重要,所以尽量多做一些实际项目来巩固所学知识。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值