美文网首页
Nodejs知识

Nodejs知识

作者: benbensheng | 来源:发表于2019-04-17 14:18 被阅读0次

1.

supervisor 无需重启服务器,代码改变后直接刷新
安装 cnpm install -g supervisor
使用 supervisor app.js

2.

image.png

3.

Node.js 的模块和包机制的实现参照了 CommonJS 的标准

  • 什么是模块
    一个Node.js 文件就是一个模块,这个文件可能是 JavaScript 代码、 JSON 或者编译过的 C/C++ 扩展
    通过require 函数获取了这个模块,然后才能使用其中的对象。
  • 创建模块和引用

第一种
var name;
exports.setName=function(thyName){
name=thyName;
}
exports.sayHello=function(){
console.log('hello'+name);
}
引用模块
var myMoudle=require("./moudle"); //注意./是必须的
myMoudle.setName('ben');
myMoudle.sayHello(); //helloben

第二种
function hello(){
var name;
this.setName=setName=function(thyName){
name=thyName;
}
this.sayHello=function(){
console.log('hello'+name);
}
}
module.exports=hello;

引用模块
var myMoudle=require("./moudle");
var hello =new myMoudle();
hello.setName('ben');
hello.sayHello();

  • 解释
    module.js 通过 exports 对象把 setName 和 sayHello 作为模块的访
    问接口在 其他js 中通过 require('./module') 加载这个模块,然后就可以直接访问 module.js 中 exports 对象的成员函数了。
  • 特点
    单次加载

var hello1 = require('./module');
hello1.setName('BYVoid');
var hello2 = require('./module');
hello2.setName('BYVoid 2');
hello1.sayHello();
运行后发现输出结果是 Hello BYVoid 2,这是因为变量 hello1 和 hello2 指向的是同一个实例,因此 hello1.setName 的结果被 hello2.setName 覆盖,最终输出结果是由后者决定的。

moudle里面的函数自动执行,变量得向外暴露
moudle.js
var ben=10;
console.log(ben);
app.js
var Person=require("./moudle"); //10

4

node debug debug.js,将会启动调试工具


image.png

5

全局对象
process 是一个全局变量,即 global 对象的属性。它用于描述当前 Node.js 进程状态
的对象,提供了一个与操作系统的简单接口
process.nextTick(callback)
将 callback 添加到"next tick 队列"。 一旦当前事件轮询队列的任务全部完成,在next tick队列中的所有callbacks会被依次调用。


image.png
image.png

6

继承 EventEmitter
大多数时候我们不会直接使用 EventEmitter,而是在对象中继承它。包括 fs、 net、http 在内的,只要是支持事件响应的核心模块都是 EventEmitter 的子类

7MVC

模型是对象及其数据结构的实现,通常包含数据库操作。
视图表示用户界面,在网站中通常就是 HTML 的组织结构。
控制器用于处理用户请求和数据流、复杂模型,将输出传递给视图


image.png

相关文章

网友评论

      本文标题:Nodejs知识

      本文链接:https://www.haomeiwen.com/subject/rsavmqtx.html