为了账号安全,请及时绑定邮箱和手机立即绑定

进击Node.js基础(一)

Scott 全栈工程师
难度中级
时长 3小时27分
学习人数
综合评分9.50
664人评价 查看评价
9.8 内容实用
9.4 简洁易懂
9.3 逻辑清晰
  • 作用域和上下文不是一回事! 作用域: 作用域和调用函数、访问变量的能力有关。分为全局作用域和私有作用域。 上下文: JS有函数定义时的上下文,和函数运行是时的上下文。并且上下文可以改变 和this关键字有关。是调用当前可执行函数的引用; this:JavaScript 语言的关键字,代表函数运行时自动生成的一个内部对象。只能在函数内部使用 this 的值: 1. 指向调用函数的当前对象(通常指向当前函数的拥有者) 2. 指向global(browser中的window) 3. 构造函数中的this指向它所创建的对象实例 更改上下文方法(更改this指向的内容,可方便地实现继承): call(list); apply(array); //更改上下文 var pet={ words:'...', speak:function(say){ console.log(say+' '+ this.words); } } var dog={ words:'Wang' } pet.speak.call(dog,'speak') //继承 function Pet(words){ this.words=words; this.speak=function(){ console.log(this.words) } } function Dog(words){ Pet.call(this,words) } var dog=new Dog('Wang'); dog.speak();
    查看全部
  • JS中容易出现变量被覆盖,方法被替代的情况(既被污染)。特别是存在依赖关系时,容易出现错误。这是因为JS缺少模块管理机制,来隔离实现各种不同功能的JS片段,避免它们相互污染。 为此我们经常采用命名空间的方式,把变量和函数限制在某个特定的作用域内,人肉约定一套命名规范来限制代码,保证代码安全运行。jQuery中有许多变量和方法,但是无法直接访问,必须通过jQuery调用。 Commonjs不同于jQuery,Commonjs是一套规范,约定了js如何组织,如何编写。大部分标准在拟定和讨论之中,首先把执行不同任务的代码块和代码文件看为独立的模块,每一个模块都是一个单独的作用域,但不是孤立的,可能存在依赖关系。每个模块分为三个部分,定义、标识和引用。这套规范与现实产品如node.js相互影响,良性循环。 nodejs基于commonjs实现了模块管理系统。node中每一个js文件都是一个独立的模块,在其内部不需要有命名空间,不需要担心变量的污染和方法定义时的隔离。同时模块之间可以组合形成更强大的模块或功能包。npm即是用来管理各种功能包的。
    查看全部
  • require返回一个模块对象(即刚才的exports);exports是module.exports的一个辅助方法,最终赋值给modu.exports;module.exports是最终供调用者调用的对象;如果module.exports已经有同名方法,exports上的就会被忽略;一般开发建议用exports
    查看全部
  • v4.4.0的 nodejs版本 和这门课程的一些语法有些出入<br> 当然还是能够兼容之前的语法<br> 例如 匿名函数 function(){} -> ()=>{}<br> 例如 变量的命名 var -> const<br> var的命名和const是有区别的,const是不可变的变量。 还有非常好用的占位符console.log(`Server running at http://${hostname}:${port}/`);<br> 不需要 用+拼接
    查看全部
  • 额 看了 一堆还是不能 开始后端
    查看全部
  • 再回到_http_server的490看req的过程 this.addListener('connection', connectionListener); function connectionListener(socket) 中 var req = parser.incoming; 再找parser得到: var parser = parsers.alloc(); var parsers = common.parsers; var common = require('_http_common'); 转向_http_common.js文件中寻找.parses.alloc() 里面的parse var HTTPParser = process.binding('http_parser').HTTPParser; parser.incoming = new IncomingMessage(parser.socket); var IncomingMessage = incoming.IncomingMessage; var incoming = require('_http_incoming'); 转向_http_incoming.js中IncomingMessage; 定义了一些this的静态属性,集成了Steam.Readable
    查看全部
    2 采集 收起 来源:HTTP 源码解读

    2015-08-17

  • 在http.js中参数requestListener是我们传入的回调函数 在_http_server中244行this.addListener('request', requestListener); 490中self.emit('request', req, res);,出现req和res 439中var res = new ServerResponse(req); 103中定义函数function ServerResponse(req), 在该函数体中定义了继承util.inherits(ServerResponse, OutgoingMessage);并将OutgoingMessage的this指向res OutgoingMessage指_http_outgoing.js中OutgoingMessage 在_http_outgoing.js中 在66出现function OutgoingMessage()函数定义,并将this也就是res的许多属性赋值。 并继承nodejs的stream类
    查看全部
    2 采集 收起 来源:HTTP 源码解读

    2015-08-17

  • /*首先createServer函数调用的是http.js里面63行的函数 exports.createServer = function(requestListener) { return new Server(requestListener); }; 在61行可看到var Server = exports.Server = server.Server; 在38行可看到var server = require('_http_server'); 所以此时转向_http_server.js文件,找server.Server 在239行可看到function Server(requestListener) 的定义,此时的参数requestListener还是createServer传进来得回调函数 util.inherits(Server, net.Server);//Server继承net.Server 转向net.js文件 在1018行定义了function Server(options, connectionListener)函数 在1216行定义了Server.prototype.listen(),实际上创建的调用的是这个listen函数
    查看全部
    2 采集 收起 来源:HTTP 源码解读

    2015-08-17

  • 1分26秒的时候打开的是什么命令行?
    查看全部
  • url是uri的子集。
    查看全部
  • 序列化:querystring.stringify() 反序列化:querystring.parse() 转义:querystring.escape() 反转义:querystring.unescape()
    查看全部
  • 第一步:通过chrome://net-internals/#dns查看到你曾经查看的网络的dns缓存记录; 如果找不到缓存记录,或者缓存失效了 第二步:chrome会查找操作系统自身的dns缓存 如果操作系统自身的缓存也没找到 第三步:尝试读取本地的host文件 如果在host里面也没找到相应的配置项 第四步:浏览器向系统发起一个dns调用
    查看全部
    2 采集 收起 来源:HTTP知识先填坑

    2015-05-06

  • npm install -g n ->安装n模块,来管理和选择node版本。
    查看全部
    2 采集 收起 来源:Mac下安装Nodejs

    2018-03-22

  • 大家好,很感谢有这样的平台
    查看全部
  • @模块与包管理工具 js的天生缺陷——缺少模块化管理机制 ·表现>> JS中容易出现变量被覆盖,方法被替代的情况(既被污染)。特别是存在依赖关系时,容易出现错误。这是因为JS缺少模块管理机制,来隔离实现各种不同功能的JS判断,避免它们相互污染。 ·解决>> 经常采用命名空间的方式,把变量和函数限制在某个特定的作用域内,人肉约定一套命名规范来限制代码,保证代码安全运行。jQuery中有许多变量和方法,但是无法直接访问,必须通过jQuery,$调用 各个方法。 【Commonjs规范】 不同于jQuery,Commonjs是一套规范,约定了js如何组织,如何编写,包括包,二进制,套接字,单元测试等等。大部分标准在拟定和讨论之中,首先把执行不同任务的代码块和代码文件看为独立的模块,每一个模块都是一个单独的作用域,但不是孤立的,可能存在依赖关系。每个模块分为三个部分,定义、标识和引用。这套规范与现实产品如node.js相互影响,良性循环。 【NodeJs的模块管理机制】 基于commonjs实现了模块管理系统。node中每一个js文件都是一个独立的模块,在其内部不需要有命名空间,不需要担心变量的污染和方法定义时的隔离。同时模块之间可以组合形成更强大的模块或功能包。npm即是用来管理各种功能包的。

    查看全部

举报

0/150
提交
取消
课程须知
我们的教程面向的同学是:有 JavaScript 基础的同学,如果有过任何后台语言开发的经验更适合,对于有基础的同学,可以快进跳着看教程,不必拘束于每一分钟都听,很多时候其实是思路,思路打通了,很多技术细节也就不用纠结了。
老师告诉你能学到什么?
从 Node.js 基础知识入手,比如安装,环境配置、开发环境等,进一步熟悉 Node.js API ,一些 HTTP 知识,并且对模块的概念和使用更加熟悉,从而进阶到模块或者插件的开发,最终能够借助 Node.js 快速实现特定的需求。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!