博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Node全栈开发
阅读量:7030 次
发布时间:2019-06-28

本文共 2593 字,大约阅读时间需要 8 分钟。

hot3.png

引用官方定义

Definition:

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Node.js' package ecosystem, npm, is the largest ecosystem of open source libraries in the world.

node.js是基于Chrome's V8的JavaScript运行环境。使用事件驱动非阻塞io模型,轻量且高效。此外node.js的包管理系统npm是世界上所有开源库中最庞大的。

简单示例

定义文件一hello.js

var pi=Math.PI;exports.area=function(r){	return pi*r*r;}

定义文件二cal.js

var circle=require('./hello.js');console.log('area:'+circle.area(4));

cmd运行node cal.js 输出 area:50.2654....69

hello.js编译后源文件(function(exports,require,module,__filename,__dirname){var pi=Math.PI;exports.area=function(r){	return pi*r*r;}});

require('./hello.js')返回hello中的exports对象,所以自定义模块方法必须绑定到export中,才能被调用。 下面代码在创建自定义js类库underscore.js时考虑了前后端调用多种情况。

(function(){	//window对象	var root=this;	//定义封装对象——	var _=function(obj){	return new wrapper(obj);	};	//用于后端node调用	if(typeof exports!="undefined"){		if(typeof module!="undefined"&&module.exports){			exports=module.exports=_;		}		exports._=_;	//用于前端requireJs调用	}else if(typeof define === 'function'&&define.amd){		define('underscore',function(){			return _;		});	//前端window直接绑定	}else{		root['_']=_;	}}).call(this);

Event事件

Node中的许多核心API建立在傻瓜式的异步事件驱动架构基础上,特定类型的对象(称作'emitters')发出事件注册,当事件触发时,调用对应注册的回调函数。 所有发出注册事件的对象都是EventEmitter类的实例。这些对象暴露eventEmitter.on()方法来注册一个或多个函数。

const myEmitter = new MyEmitter();//注册事件myEmitter.on('event', (a, b) => {  console.log(a, b, this);});//触发事件myEmitter.emit('event', 'a', 'b');输出:a b {}

EventListener按照事件注册的顺序调用所用监听对象 error处理

const myEmitter = new MyEmitter();myEmitter.on('error', (err) => {  console.log('whoops! there was an error');});myEmitter.emit('error', new Error('whoops!'));// Prints: whoops! there was an error

此外需要注意的是单个event默认最多可以注册10个事件。EventEmitter.defaultMaxListeners对于全部EventEmitter实例都起作用。使用emitter.setMaxListeners()可以设置单个event的注册事件数量,并避免trace warning。

Node应用场景:

  1. --使用非关系型数据库的web应用
  2. --I/O密集型系统,非CPU密级型
  3. --非关系型数据库 如Mongodb
  4. --RealTime应用,如chat room
  5. --数据流 (Data Streaming)
  6. --Proxy (代理)
  7. --数据操作实时要求不高的场景,如日志系统

MEAN STACK

安装Mongodb,指定dbpath和logpath 启动一个server,只需要mongod --dbpath "D:\mongodb\db" 即可。但是cmd关闭后,会关闭。

开启windows服务 mongodb安装目录下 新建config.cfg

systemLog:    destination: file    path: D:\mongodb\log\mongod.logstorage:    dbPath: D:\mongodb\db
mongod --config "C:\Program Files\MongoDB\Server\3.4\mongod.cfg" --install
net start MongoDB

启动shell client

mongo

npm包版本查询

npm show packabeName@* version

npm模块安装devDepenendencies 依赖

npm install --save-dev

NodeJs开发环境配置

参考资料:

  1. 《nodejs深入浅出》

转载于:https://my.oschina.net/odetteisgorgeous/blog/834674

你可能感兴趣的文章
说说如何在登录页实现生成验证码功能
查看>>
笔记-softmax、softmax loss
查看>>
FastDFS蛋疼的集群和负载均衡(六)之Nginx高可用集群
查看>>
C语言入门经典读书笔记----第十一章 结构化数据
查看>>
Apache Thrift系列详解(二) - 网络服务模型
查看>>
chrome devtools使用详解——Performance
查看>>
了解一下ES6: 解构赋值&字符串
查看>>
7 - 在 Django Admin 后台发布文章
查看>>
SpringBoot+Mybatis+ Druid+PageHelper 实现多数据源并分页
查看>>
Umeng第三方登录
查看>>
EggBorn.js:一款顶级Javascript全栈开发框架
查看>>
前端开始的那件事——表单
查看>>
【前端】HTML属性
查看>>
js 算法3
查看>>
【Java 容器面试题】谈谈你对HashMap 的理解
查看>>
分组圆角TableView
查看>>
高级Java研发者在解决大数据问题上的一些技巧
查看>>
用 Node 开发一个命令行版本词典--不到十行的代码
查看>>
支持多解码模块的安卓视频播放器AndroidVideoplayer
查看>>
TCP协议详解
查看>>