什么是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的关系断开,尽量在做的时候,只在已有的两者之间去添加属性,而不要改变指向关系。
相关推荐
智能工厂四大系统协同实战:ERP/PLM/MES/WMS集成架构与数据流解析
本文深入解析了智能工厂中ERP、PLM、MES、WMS四大核心系统的协同集成架构与数据流。通过实战案例,阐述了如何打通系统孤岛,实现从产品设计、资源计划、生产执行到仓储物流的数据无缝流转,从而构建高效、敏捷的智能工厂运营体系。
在webstorm里配置nodejs环境
在Terminal中运行,node -v,报错'node' 不是内部或外部命令,也不是可运行的程序。 es6提示ESLint: please specify Node.js interpreter 因为在webstorm里没有配置nodejs环境,所以出现了以上的问题。下面来说说在webstorm里配置nodejs环境: (1)如果没有下载nodejs,先去官网下载。如果下载了,点击开始 =...
VIVADO & VITIS 报错记录
问题详情:使用BD用DMA上传少量数据,根据ILA监测到的AXI总线数据正常,VALID信号和READY信号都正常,但是在PS端的cache缓冲区示数为0,打印为0。可能是因为print和printf混用导致。解决方案:修改缓冲区的对齐参数。
解决 phpStrom ESLint: please specify Node.js interpreter
没有配置node环境 File -> Setting -> 输入node.js -> Node.js and NPM -> Node interprter 找到node.js的安装地址,将Node interprter设置成node.js目录下的node.exe保存就解决了
Apple CarPlay Certification Guide December 2022 解析V1.0
Apple CarPlay Certification Guide December 2022更新说明
Unity集成阿里Qwen2.5-Omni全模态大模型实战:语音交互与多模态AI开发指南
本文详细介绍了在Unity中集成阿里Qwen2.5-Omni全模态大模型的实战指南。通过C#脚本开发,实现语音交互、图像分析等多模态AI功能,涵盖API调用、音频处理、流式响应解析等核心步骤,为游戏、虚拟人等Unity应用提供沉浸式智能交互解决方案。
IDAE 导入若依项目时 出现 ESLint:please specify Node.js interpreter
解决IDAE 导入若依项目时 出现 ESLint:please specify Node.js interpreter
无源定位入门(二):FDOA(2)信号模型和原理
信号模型 假设地面固定目标信号源位置为 ,有M架飞机随机分布在空中,并作匀速直线运动。时刻t的时候第i架飞机的位置为,飞行速率为 , 假设目标的信号中心频率为 ,电磁波的传播速度为 ,则此时每个飞机接收目标信号的频率为 以第1架飞机为参考基站,目标信号到达第n架飞机和参考基站之间的FDOA 测量值可表示为 ...
run dev 报错:Specify Node.js interpreter
可能是没有配置node.js的环境。
uniapp中使用canvas生成海报,并下载保存到手机相册
如下图,是在H5中,canvas生成后的效果,首先说明,H5不支持返回图片的临时路径,不能用于保存,APP端生成成功后,会返回图片的临时路径用来保存到相册。本地测试,用的网络图片,没有出现跨域的问题,APP端也正常显示。 完整代码:可以将整个代码复制到你得uniapp项目中直接运行。代码中做了详细的注册,关于API的用法,这里只标注的简单的提示,具体还是参考 官方链接uniapp-canvas吧 <template> <view class="demo"> <c.
osg中显示3dtiles和cesiumIon
如下图为CesiumTilesetNode数据更新相关代码,将OSG对应的ViewMatrix、ProjectionMatrix和窗口信息传递给tileset->updateView()实现Cesium-native的场景更新。整体结构,其中 CesiumTilesetNode依赖Cesium3DTilesSelection::Tileset,实现数据的更新以及确定需要绘制的节点。1.1 CesiumNative3DTileslayer图层。
【Nodejs学习之旅·1-1】为何选择Nodejs
前言 程序员界有个熟知的段子“xxx是世界上最好的语言”,但实际上语言无论高低级,它存在即有它的应用场景和相较于其他语言略有优势的一面,与其纠结于学习何种语言,倒不如根据自己目前所处业务层面去考虑到底什么语言更适合目前的场景。 我只是一个刚毕业半年的前端新手玩家, 但就是这半年的时间里,在组里大佬的技术熏陶下,我的目光也不再只局限于浏览器中的一亩三分地,而是开始把目光更多聚焦在了nodejs。有...
CATIA文件的网页预览方案
CATIA是工业设计中广泛使用的专业软件,产出`.CATPart`或 `.CATProduct`等文件类型,当资产数量较大时,我们希望快捷预览这些文件,就有了`CATPart`文件网页预览的需求 但我们知道,网页上无法直接渲染`CATPart`这种复杂的文件, CATIA生成的文件(如 `CATPart` 和 `CATProduct`)不仅包含三维几何信息(例如点、线和曲面),还涵盖了丰富的元数据与专业设计特征。 那有没有办法,能实现CATIA文件在网页上的便捷预览?
NodeJs学习之路(1)
NodeJs主要干的工作 nodejs主要可以完成的工作就是在Web场景下使用,是对前端最友好的后端语言,主要是在高并发,非阻塞I/O密集下使用,但是不适合CPU使用密集、非阻塞I/O不多的情况下使用。很多情况下NodeJS在性价比方面不是最好的,但是对于前端开发者而言python和java语言并不是太友好。。。学习成本高,后台也并不是太清楚前端,也懒得写(哈哈哈主要是这个)。而Node
SAP B1中文培訓教材_SDK
公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说
LinePhone3.2.7(android端最新版本) sip客户端
SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/
我的nodejs学习之路1
距离上次写文章类东西已经有4-5年了,猛然写东西有种提笔忘字的感觉。 言归正传,这是一篇记录我自己学习nodejs的文章,在写下这篇文章的时候我也不是什么大牛,也不是很了解nodejs这项技术。之所以写这篇文章是为了记录一下自己的学习模式。因为工作2年多了,遇到一些瓶颈。我本身是做前端开发的,也就是html+css+js那一套。12年在培训机构学习as3出身结果刚毕业没多久ad...
IEM模型,地表粗糙度模拟
利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟
NodeJs学习笔记1
一、Node.js简介 1.1 简介 V8引擎本身就是用于Chrome浏览器的JS解释部分,但是RyanDahl把V8搬到了服务器上,用于做服务器的软件。 Node.js是一个让JavaScript运行在服务器端的开发平台,它让JavaScript的触角伸到了服务器端,可以与PHP、JSP、Python、Ruby平起平坐。 与Node不同: Node.js不
假人有限元模型
假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用
nodejs学习笔记1
一、什么是NodeJS Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。 Node.js 的包管理器 npm,成为世界上最大的开放源代码的生态系统。 二、NodeJS怎样 Node.js 可以解析JS代码(没有浏览器安全级别的限制)提供很多系统级别的API,如: 文件
Nodejs基础学习(1)
极客学院Nodejs学习 Nodejs解决的问题: 1、Node.js 在前端开发中,主要是作为工具,比如打包工具 Webpack / Gulp 等,都是使用 Node.js 编写的 2、Node.js 并不直接解决前端问题,只是作为前端开发的工具 3、作为前端开发中的工具角色,在没有它之前, js / css 的打包,压缩,一般使用各种命令行工具,但无法做到与 js 的深度整合,...
nodejs基础学习1
ES6常用新语法 ES6新语法 什么是ES6? 由于JavaScript是上个世纪90年代,由Brendan Eich在用了10天左右的时间发明的;虽然语言的设计者很牛逼,但是也扛不住"时间紧,任务重"。因此,JavaScript在早期有很多的设计缺陷;而它的管理组织为了修复这些缺陷,会定期的给JS添加一些新的语法特性。JavaScript前后更新了很多个版本,我们要学的是...
Nodejs学习文档Day1
Nodejs常用apiCrypto 加密Events 事件Net 网络操作OS 操作系统信息Path 处理文件路径Stream 流操作Timers 定时器//timers.js setInterval(function(){ console.log(Math.random()); },100); ...
[nodejs]mongoose学习1
Mongoose学习参考文档——基础篇Mongoose学习参考文档声明:本文系转载,原文链接:转载链接前言:本学习参考文档仅供参考,如有问题,师请雅正一、快速通道1.1 名词解释Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力Model : 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对Entity : 由Model创建的实体,他的操作也会影
Vue+element+Nodejs学习记录(1)
目前的打算是前端用Vue+element,后端用Nodejs的Express框架,实现一个展示页面和后台管理页面。打算记录学习过程。 1.Nodejs介绍 JS和Nodejs 1、ES 定义了语法规则,JS和Nodejs必须遵守 2、js js=ES+web API(DOM,BOM,事件绑定,ajax) 3、node.js node.js=ES+nodejs ...
nodejs学习过程1之nodejs安装配置
Node.js 安装配置 copy于http://www.runoob.com 本章节我们将向大家介绍在window和Linux上安装Node.js的方法。 本安装教程以Node.js v4.4.3 LTS(长期支持版本)版本为例。 Node.js安装包及源码下载地址为:https://nodejs.org/en/download/。 你可以根据不同平台系统选择你需要的No...
nodejs学习日记1
node版本:14.18.0 node框架:express 前端:vue 测试的接口地址为node中routes下的文件名,例如 export const getUserInfo = (data={})=>{ return request.get("/users",data) } 中的users对应为这个文件 需在本地启动数据库,我选择的工具为PHPstudy,数据库工具为Navicat /routes/user.js var express = require('expre.
nodejs学习(1)
一、nodejs模块化 js文件中想要让别的模块(js文件)使用,需要导出 module.exports = 导出的数据 生成一个随机整数小例子 function randomInt(max){ max = max || 100 // 不包含max return parseInt(Math.random() * max) } function randomRange(min, max)...
NodeJS学习笔记—1.CommonJS规范
由于现在web开发,越来越重视代码的复用和抽象的封装,为了解决代码的组织结构、管理、复用和部署等问题,现在普遍采用的机制是模块机制(module)。CommonJS约定桌面应用程序和服务器应...
675



被折叠的 条评论
为什么被折叠?



