小丸子总结node.js的一些问题
原谅我的node.js功底还很弱。
1.什么是错误优先的回调函数?
设计一个回调函数的时候,第一个参数是err,用于优先解决错误,后面再传递参数。
fs.readFile(filePath, function(err, data) { if (err) {//handle the error}// use the data object
});
2.如何避免回调地狱?
- 可以使用promise
- 可以使用q的库实现promise或者同步
之前的工大淘APP实现的时候砽的是promise。
3.如何用Node来监听80端口?
只有超级用户权限才可以监听80用户端口,普通用户权限减一还是监听1024以上端口吧。
网上的大大说:
目前,如果你一定要让你的应用监听80端口的话,你可以有通过在Node应用的前方再增加一层反向代理 (例如nginx)来实现,如下图所示。否则,建议你直接监听大于1024的端口。
nginx在domeos项目的时候使用过啦。代理服务器来接受请求,分发给内网上的服务器。
4.什么是事件循环?
http://www.ruanyifeng.com/blog/2014/10/event-loop.html
看完感觉之前太稚嫩了。、
5.哪些工具可以用来保证一致的编程风格?
JSLint
ESLint
自己的代码出错了可以检查到
7.使用NPM有哪些好处?
管理依赖
8.什么是stub?举个使用场景?
大大说:
在单元测试中:Stub是完全模拟一个外部依赖,而Mock常用来判断测试通过还是失败。
9.什么是测试金字塔?对于HTTP API,如何利用测试金字塔?
大大说:
测试金字塔指的是: 当我们在编写测试用例时,底层的单元测试应该远比上层的端到端测试要多
我还从来没有测试过。
10.你最喜欢的HTTP框架,并说明原因?
express。因为只用过这一个。
11.你觉得 Node.js 与PHP比较,在做一个博客网站,你觉得谁更适合,又为什么?
node.js特点
- 单线程(并发数大)
- 事件驱动
- 异步IO (虽然这会产生很多困扰)
jsV8 引擎 ,执行速度快
这样的话,node.js就比较适合 实时交互(并发多,速度快) & 数据量很小的交互(避免阻塞) &后台数据处理逻辑简单(后台处理很久,会阻塞)
博客系统还是很符合的。
大二的时候使用PHP开发过一个电商管理系统,当时实现的时候也是模拟了一个路由界面(相当于MVC中的controller层),但是还是觉得逻辑上有些混乱。
今年用node.js写工大淘的时候,使用express框架,感觉田生就是以路由为中心的。写起来逻辑很清晰。
node.js还适合做中间件,接受http请求,转发给真正的服务器。利用了它强大的并发能力和路由。
如果后台计算量特别大等CPU密集业务,还是交给php来实现吧。
12.你觉得异步编程会带来哪些困扰,那异步代码又有哪些优点?
的确遇到了很多困扰,之前的博客中也提到过解决方法之类的。
我曾经在群里问大大:如何在node.js中实现同步。
大大说:node.js本身就是异步的,这是它的特点,你要倒行逆施吗。
我才明白,我用类库,来限制node.js下的所有任务都同步执行,那我用node.js是干什么呢?我直接使用php不就好了。
后来发现,在node.js中有一两层嵌套还是可以忍受的,然后使用promise来限制一些逻辑。放弃使用同步流程控制。
13. Node.js的模块包管理require的使用,exports与module.exports之前区别与联系。
之前一直这么用:
导出
exports.name = function() {console.log('My name is Lemmy Kilmister');
};
引用
var rocker = require('./rocker.js');
rocker.name(); // 'My name is Lemmy Kilmister'
其实,Module.exports才是真正的接口,exports只不过是它的一个辅助工具。 最终返回给调用的是Module.exports而不是exports。
所有的exports收集到的属性和方法,都赋值给了Module.exports。当然,这有个前提,就是Module.exports本身不具备任何属性和方法。如果,Module.exports已经具备一些属性和方法,那么exports收集来的信息将被忽略。
修改rocker.js如下:
module.exports = 'ROCK IT!';
exports.name = function() {console.log('My name is Lemmy Kilmister');
};
再次引用执行rocker.js
var rocker = require('./rocker.js');
rocker.name(); // TypeError: Object ROCK IT! has no method 'name'
报错
如果你想你的模块是一个特定的类型就用Module.exports。如果你想的模块是一个典型的“实例化对象”就用exports。
所以说如果使用Module.exports的话,就必须是特定的类型了。那还是算了吧。
推荐使用 exports。
14.你了解Node.js的内存泄漏吗?
回调函数没有执行完毕,一直留在人物队列的时候,就形成闭包,内部的数据就一直占有内存。如果数据多了,会产生内存泄漏!
这里有工具可以检测。内存泄露定位工具。
小丸子总结node.js的一些问题相关推荐
- Node.js 简单入门
目录 一. 什么是Nodejs 二. Nodejs组成图(对比jdk) 三. Nodejs的安装 四. 第一个Nodejs程序 五. Node实现请求响应 六. Node操作MYSQL数据库 1. 安 ...
- node.js(node.js+mongoose小案例)_实现简单的注册登录退出
一.前言 通过node.js基本知识对node.js基本知识的一个简单应用 1.注册 2.登录 3.退出 二.基本内容 1.项目结构搭建如图所示 2.这个小案列中用到了art-template子模板以 ...
- 在node.js中,使用基于ORM架构的Sequelize,操作mysql数据库之增删改查
Sequelize是一个基于promise的关系型数据库ORM框架,这个库完全采用JavaScript开发并且能够用在Node.JS环境中,易于使用,支持多SQL方言(dialect),.它当前支持M ...
- [转]Getting Start With Node.JS Tools For Visual Studio
本文转自:http://www.c-sharpcorner.com/UploadFile/g_arora/getting-started-with-node-js-tools-for-visual-s ...
- 由Node.js事件驱动模型引发的思考
引言 近段时间听说了Node.js,很多文章表述这个事件驱动模型多么多么优秀,应用在服务器开发中有很大的优势,本身对此十分感性去,决定深入了解一下,由此也引发了一些对程序设计的思考,记录下来. 什么是 ...
- 百度语音合成 js html,Node.js结合百度TTS接口实现文字转语音功能
今天工作的时候偶然发现了百度的TTS Restful接口(TTS是TextToSpeech,说白了就是文本转语音的功能).该接口如下,浏览器中可以直接访问: http://tts.baidu.com/ ...
- js ftpclient linux server,Node.JS用Socket实现FTP Server服务器和Client客户端
通信过程 FTP协议其实就是主机和服务通过Socket进行固定格式的通信过程,当某客户端连接到FTP 服务器后,客户端发送指令: [参数] 服务会按以下格式返回: [参数或说明] 例如以下是FileZ ...
- 【强势来袭】Node.js(nodejs)实现“一口多用”(含用户创建、登录、鉴权token) 一个文件解决所有常态化需求
注意,前情提示: 本代码基于<Node.js(nodejs)对本地JSON文件进行增.删.改.查操作(轻车熟路)> 传送门Node.js(nodejs)对本地JSON文件进行增.删.改.查 ...
- 【敏捷开发】Node.js(nodejs)实现一个接口完成增删改查聚合接口4个功能,最大限度节省接口数量,正所谓“一口多用”(基础版、免登陆、无鉴权)
注意,前情提示: 本代码基于<Node.js(nodejs)对本地JSON文件进行增.删.改.查操作(轻车熟路)> 传送门Node.js(nodejs)对本地JSON文件进行增.删.改.查 ...
最新文章
- 【AI参赛经验】汉字书法识别比赛经验心得——by:microfat_htu
- python 调用c++ boost
- 【问题解决】老外ESP32TTS语音合成库AquesTalk ESP32测试成功
- 1687: 数组操作(非常规思维)
- Laravel- 数据库迁移
- mysql 1117_1117Mysql prepare预处理语句
- 编写程序模拟“主人”喂养“宠物”的场景,利用多态的思想!!!
- Linux内存管理:Fixmaps(固定映射地址)和ioremap
- Flash Player版本相关问题
- Python与C:指针与按址传递
- DOS-强制结束进程命令(ntsd命令/taskkill命令)使用教程
- unity3D跑酷游戏源码,支持安卓+IOS双端 unity2019 C#语言开发
- 风尘若幻_封装win7_sp3(终于可以和大家见面了,欢迎试用-谢谢支持!!!)
- Python读写LMDB文件
- 今有物不知其数三三数之JAVA_今有物不知其数.三三数之剩二.五五数之剩三.七七数之剩二.问物几何? 题目和参考答案——青夏教育精英家教网——...
- 超详细从零记录Hadoop2.7.3完全分布式集群部署过程
- 软件测试是什么工作状态,软件测试,现在主要的工作内容是干什么?
- 数据增强方式mosaic(基于yolo4)代码实现python
- easypoi导入excel实践方法:
- 计算机教子好考吗,考进985的孩子:父母都是这样教育孩子,这些方法比刷题管用...