开发者社区> 穆雄雄> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Nodejs第一讲记录

简介: Nodejs第一讲记录
+关注继续查看

Node.js


Node的简介


  • node是运行在服务端的JS


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


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


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


Hbuilder中安装node插件


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

c3a38a9f09055de2cf091e59452d266d.png

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

db36d02a22d8a0942793613b17430129.png

Hbuilder中添加cmd外部工具


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

ebc09b27d6b8ab94200dd9d47378da0e.png



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


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

30a73ff2f276a165c2e7ef71be50f816.png


Node.js模块化


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


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


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


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



总结:


1.对于Node.js来说,一个js文件就是一个模块


2.在``Node.js中,我们通过require()函数来引用其他模块。require(“路径”),可以传递一个文件的路径作为参数,如果使用 相对路径,必须以.或..开头


3.使用require()函数`引入一个模块后,该函数会返回一个对象,这个对象代表的是引入这个模块。


4.在node中,每一个js文件中的js代码都是独立运行在一个函数中,而不是全局作用域,所以一个模块中的变量和函数在其他模块中无法访问


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

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


module01.js中的内容:

1. console.log("但是");
2. 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文件访问的时候怎么办?


笨方法:

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


显然这种方式太麻烦, 那么我们可以用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执行模块中的代码时,他首先会在代码的最前端 ,添加如下代码:

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



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


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


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


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


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


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


  •    _filename:当前模块完整路径


  •    _dirname:当前模块目录



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【Node.js+koa--后端管理系统】设计评论发布、修改、查询、删除接口
【Node.js+koa--后端管理系统】设计评论发布、修改、查询、删除接口
0 0
读 Node.js 源码深入理解 cjs 模块系统
本文将对 Node.js 源码进行探索,深入理解 cjs 模块的加载过程。
0 0
nodejs版本大文件之断点下载
由于只是做个测试,这里使用了expresss简单搭建了个后台服务,提供文件断点下载。
0 0
Node.js 实现存储服务的下载功能【包含前后端代码】
上传和下载功能是存储服务非常基础的功能,也是存储服务日常使用过程中最常用的功能,比如阿里云的OSS、腾讯云的COS、百度云的BOS等。当然,我们也可以自己研发私有化的对象存储服务,那么就会涉及到除了自己处理客户端逻辑外,还需要自己处理服务器的上传和下载逻辑。
0 0
日志库 winston 的学习笔记 - 创建一个使用 winston 的 Node.js 应用
winston 被设计为一个简单且通用的日志库,支持多种传输。 传输本质上是日志的存储设备。 每个 winston 记录器都可以在不同级别配置多个存储渠道。例如,人们可能希望将错误日志存储在持久的远程位置(如数据库),但所有调试日志都输出到控制台或本地文件。 使用 winston 的推荐方法是创建您自己的记录器。 最简单的方法是使用 winston.createLogger:
0 0
nodejs - 如何完全更新
Nodejs可以毫不犹豫地说一个版本狂魔,时不时就发布一个版本,而且还一直没有一个1.0版本,好囧呀,对于我们这些有强迫症的人来说,的确不是好事。
396 0
laravel记录
1.使用数据库事务的时候需要传递参数,使用了use关键字,否则的话传递不进去,代码如下: public function postVote(Request $request){ $data = $request->all(); $count = DB...
958 0
+关注
穆雄雄
欢迎关注微信公众号:雄雄的小课堂
文章
问答
文章排行榜
最热
最新
相关电子书
更多
探究 Node.js 的服务端之路
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载