Nodejs第一讲记录


大家好, 我是雄雄,欢迎关注公众号 :雄雄的小课堂

Node.js

Node的简介

  • node是运行在服务端的JS

  • 基于谷歌 JavaScript运行时建立的一个平台

  • 是一个事件驱动IO服务端JavaScript环境,基于谷歌V8引擎,V8引擎执行JavaScript的速度非常快,性能比较好

如果你是后端程序员,想部署一些高性能的服务,那么学习Node.js也是一个非常好的选择。

Hbuilder中安装node插件

点击工具--》插件安装--》选择nodejs的插件,点击后面的选择,点击安装。

然后选择需要运行的js文件,右击,点击运行方式--》Node Application,即可在控制台中输出内容

Hbuilder中添加cmd外部工具

点击==运行==,选择外部工具,选择外部工具配置 ,点击新建 ,起个名字比如叫【cmd】 ,在要执行的命令活文件里面写C:\\Windows\System32\cmd.exe ,然后下面的浏览工作空间 ,直接选择当前需要操作的项目即可。

使用外部工具的方式运行js文件:

右击js文件, 点击外部工具,选择==cmd== ,这个时候就会打开控制台,然后在控制台中输入node js文件名.js回车即可。

Node.js模块化

ECMAScprit标准的缺陷 1.没有模块系统 2.标准库比较少 3.没有标准接口 4.缺乏管理系统

  • 如果程序设计的规模达到了一定的程度,则必须进行模块化

  • 模块化可以有多种形式,但是至少应该提供能够将代码分割为多个源文件的机制

  • CommonJS的模块功能可以帮我们解决该问题。

总结:

1.对于Node.js来说,一个js文件就是一个模块 2.在``Node.js中,我们通过require()函数来引用其他模块。require(“路径”),可以传递一个文件的路径作为参数,如果使用 相对路径,必须以.或..开头 3.使用require()函数`引入一个模块后,该函数会返回一个对象,这个对象代表的是引入这个模块。4.在node中,每一个js文件中的js代码都是独立运行在一个函数中,而不是全局作用域,所以一个模块中的变量和函数在其他模块中无法访问

在一个文件中引入另一个文件, 使用require函数引入别的模块,语法如下:

var md = require("./Module01.js");
console.log(md);

module01.js中的内容:

console.log("但是");
exports.x= 10;

在Node中,每个js文件中的js代码都是独立运行在一个函数中的,而不是全局作用域的,所以一个模块中的变量和函数是不能在别的模块中调用, 如果在A文件中有这样的声明var a = 10 ,那么在B文件中是无法直接调用,那么此时需要修改A文件代码为:exports.a = 10, 则在B文件中即可调用(console.log(md.a);

函数也是一样的原理,如果想要在B文件中调用,则需要在函数的前面加exports关键词。

console.log("但是");
exports.x= 10;
exports.fn = function(a,b){return a+b;
};
var md = require("./Module01.js");
console.log(md.x);
console.log(md.fn(10,10));

问题分析

如果有多个字段或者方法需要暴露出来供别的js文件访问的时候怎么办?

笨方法:

exports.name = "王炎霸";
exports.age = 18;
exports.sayName = function(name){console.log("传过来的姓名是:"+name);};

显然这种方式太麻烦, 那么我们可以用module.exports的方法来编写:

module.exports={name : "张三",age :14,sayName:function(name){console.log("原来的名字是:"+this.name);//调用上面的name属性console.log("传过来的姓名是:"+name);   //接收参数name的值输出}
}

调用的代码:

console.log(md.sayName("李四"));

在Node 中有一个全局对象global,它的作用与网页中的window类似,在全局中创建的变量都会作为global的属性保存, 在全局总创建的函数都会作为global的函数保存

局部变量:

var num = 10;

全局变量:

num = 10; 

获取全局变量:

console.log(global.a);

总结

1.实际上当node执行模块中的代码时,他首先会在代码的最前端 ,添加如下代码:

function (exports, require, module, __filename,__dirname) {//模块中的代码
}

而在代码的最低端则会添加一对{}

2.实际上模块中的代码都是包装在一个函数中执行的,并且在函数执行时,同时传递了5个实参。

3.查看长度  console.log(arguments.length);

  • exports:该对象用来将变量或函数暴露在外部

  • require:该函数用来引入外部模块

  • module:代表当前模块本身,exports就是module的属性,既可以使用exports导出,也可以使用modult.exports导出

  • _filename:当前模块完整路径

  • _dirname:当前模块目录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/323963.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET Core 使用Cookie验证身份

ASP.NET Core 1.x提供了通过Cookie 中间件将用户主体序列化为一个加密的Cookie,然后在后续请求中验证Cookie并重新创建主体,并将其分配给HttpContext.User属性。如果您要提供自己的登录界面和用户数据库,可以使用作为独立功能的Cookie中间件。…

Node.JS第二讲笔记

大家好,欢迎关注微信公众号:雄雄的小课堂package包包结构包其实就是一个压缩文件,解压之后还原为目录,符合规范的目录,应该包含如下文件:package.json:描述文件bin:可执行的二进制文件lib&#…

asp.net core MVC 过滤器之ActionFilter过滤器(二)

简介 Action过滤器将在controller的Action执行之前和之后执行相应的方法。 实现一个自定义Action过滤器 自定义一个全局异常过滤器需要实现IActionFilter接口 public class ActionFilter : IActionFilter { public void OnActionExecuted(ActionExecutedContext context) …

【最全最详细】publiccms使用教程

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂拉取项目(项目部署阶段)1.首先需要从gitee中拉取项目,地址为:public cms项目地址 ,在idea中点击文件--》新建--》来自版本控制的项…

越努力越幸运,三年了!!!

“大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂”今天非常的开心,因为考了三年的驾照终于考完了。在大厅候考的时候,从10.40等到了1.40,坐在下面能看到LED上有自己的名字,但是前面等待的有200多人………

为什么我们要使用Async、Await关键字

前不久,在工作中由于默认(xihuan)使用Async、Await关键字受到了很多质问,所以由此引发这篇博文“为什么我们要用Async/Await关键字”,请听下面分解: Async/Await关键字 Visual Studio(.net fra…

一次惊险的跳槽面试经历(阿里/美团/头条/网易/有赞...)

转载自 一次惊险的跳槽面试经历(阿里/美团/头条/网易/有赞...) 每次说因为生活成本的时候面试官都会很惊奇,难道有我们这里贵?好想直接给出下面这张图,厦门的房价真的好贵好贵好贵。。。 面试过程 有兴趣加入阿里的欢迎发简历…

利用bladex+avue实现一对多的关系

“大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂”今天,记录一篇技术文章吧,也是解决了好久才解决掉的(说来也惭愧)。涉及技术前端:vue,element ui后端框架&#xff…

.NET中的高性能应用

本文要点 .NET自4.0以来得到了大幅的性能提升,很值得重新考虑一下基于旧版本.NET框架所做的假定。在讨论性能时垃圾回收是个重复出现的主题,它带来了许多CLR和语言的提升,比如引用返回和ValueTask在内存分配上更细粒度度量的性能分析API会成…

利用bladex+avue实现下拉数据源展示

“ 大家好,我是雄雄,欢迎关注微信公众号:????雄雄的小课堂???? ”昨天给大家整理了下如何使用bladex实现多表查询的方法,今天我们趁热打铁,顺便看看下拉列表的实现。 需求 我们经常会有这样的需求,…

汇编语言(一)之反转字符串输出

BASED ADDRESSING反转输出 程序运行: 代码: datas segmentstring db BASED ADDRESSING$ count dw $-string-1 ;计算string的长度,$为当前地址,-1为去掉字符串结束符$srcsTip db SRC string:$ dstsTip db 0…

前后端分离项目部署上线详细教程

“ 大家好,我是雄雄,欢迎关注微信公众号:????雄雄的小课堂???? ”今天,给大家分享的是,SpringbootVue项目如何部署上线的详细步骤。 代码编辑器 前端:Webstorm 2021.1.2 后端:IntelliJ …

.Net Core2.0下使用Dapper遇到的问题

今天成功把.Net Framework下使用Dapper进行封装的ORM成功迁移到.Net Core 2.0上,在迁移的过程中也遇到一些很有意思的问题,值得和大家分享一下。下面我会还原迁移的每一个过程,以及在此过程中遇到的问题和处理这些问题的方法。 一、迁移前的…

汇编语言(二)之数值求和

输入一串数字,求和 运行结果: 程序代码: datas segmentx db ? y db ? z db ?xInputPrompt db Enter a number x$ yInputPrompt db 0dh,0ah,Enter a number y$ zOutputPrompt db 0dh,0…

avue中怎样隐藏新增和编辑的按钮

“大家好,我是雄雄,欢迎关注微信公众号:????雄雄的小课堂????”????‍♂️今天给大家分享的技术是:avue中如何设置新增和编辑的按钮隐藏掉。????‍????涉及技术????前端:avue????后端&…

.NET跨平台实践:Linux .Net Core自宿主应用程序瘦身记

一,.NET Core 自宿主应用程序个头有点大 发布.NET Core应用程序有两个方式,一种是“便携式”,一种是“自宿主式”。便携式发布时,目标程序不带.net core运行环境,所以“个头”很小,可能只有几十K几百K字节…

汇编语言(三)之判断数值是否大于42H并统计个数

在内存中一串数值,判断数值是否大于42H并统计个数 程序运行: 代码: datas segmentidata equ 100hnums db idata dup(41h,42h,43h,42h,41h,43h,30h)count dw $-numsup dw 0down dw 0upNumber …

idea打war的问题

大家好,我是雄雄,欢迎关注微信公众号:👉雄雄的小课堂👈。 👨‍🏫前言 今天,记录个到现在为止还没搞清的问题,这个问题浪费了我几个小时的时间,基本上昨天晚上…

汇编语言(四)之比较字符串

输入两个字符串,比较字符串是否相同 程序运行: 代码: datas segmentstring1MaxLength db 0ffh,0 string1 db 100h dup(?)string1Number dw 0 string2MaxLength db 0ffh,0 string2 db 100h dup(?) string2Number…

.NET平台微服务项目汇集

最近博客园出现了一篇文章《微服务时代之2017年五军之战:Net PHP谁先死》,掀起了一波撕逼,作者只是从一个使用者的角度来指点江山,这个姿势是不对的。.NET Core就是专门针对模块化的微服务架构而设计,在微服务架构这方…