原谅我的node.js功底还很弱。

1.什么是错误优先的回调函数?

设计一个回调函数的时候,第一个参数是err,用于优先解决错误,后面再传递参数。

fs.readFile(filePath, function(err, data) {  if (err) {//handle the error}// use the data object
});

2.如何避免回调地狱?

  1. 可以使用promise
  2. 可以使用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的一些问题相关推荐

  1. Node.js 简单入门

    目录 一. 什么是Nodejs 二. Nodejs组成图(对比jdk) 三. Nodejs的安装 四. 第一个Nodejs程序 五. Node实现请求响应 六. Node操作MYSQL数据库 1. 安 ...

  2. node.js(node.js+mongoose小案例)_实现简单的注册登录退出

    一.前言 通过node.js基本知识对node.js基本知识的一个简单应用 1.注册 2.登录 3.退出 二.基本内容 1.项目结构搭建如图所示 2.这个小案列中用到了art-template子模板以 ...

  3. 在node.js中,使用基于ORM架构的Sequelize,操作mysql数据库之增删改查

    Sequelize是一个基于promise的关系型数据库ORM框架,这个库完全采用JavaScript开发并且能够用在Node.JS环境中,易于使用,支持多SQL方言(dialect),.它当前支持M ...

  4. [转]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 ...

  5. 由Node.js事件驱动模型引发的思考

    引言 近段时间听说了Node.js,很多文章表述这个事件驱动模型多么多么优秀,应用在服务器开发中有很大的优势,本身对此十分感性去,决定深入了解一下,由此也引发了一些对程序设计的思考,记录下来. 什么是 ...

  6. 百度语音合成 js html,Node.js结合百度TTS接口实现文字转语音功能

    今天工作的时候偶然发现了百度的TTS Restful接口(TTS是TextToSpeech,说白了就是文本转语音的功能).该接口如下,浏览器中可以直接访问: http://tts.baidu.com/ ...

  7. js ftpclient linux server,Node.JS用Socket实现FTP Server服务器和Client客户端

    通信过程 FTP协议其实就是主机和服务通过Socket进行固定格式的通信过程,当某客户端连接到FTP 服务器后,客户端发送指令: [参数] 服务会按以下格式返回: [参数或说明] 例如以下是FileZ ...

  8. 【强势来袭】Node.js(nodejs)实现“一口多用”(含用户创建、登录、鉴权token) 一个文件解决所有常态化需求

    注意,前情提示: 本代码基于<Node.js(nodejs)对本地JSON文件进行增.删.改.查操作(轻车熟路)> 传送门Node.js(nodejs)对本地JSON文件进行增.删.改.查 ...

  9. 【敏捷开发】Node.js(nodejs)实现一个接口完成增删改查聚合接口4个功能,最大限度节省接口数量,正所谓“一口多用”(基础版、免登陆、无鉴权)

    注意,前情提示: 本代码基于<Node.js(nodejs)对本地JSON文件进行增.删.改.查操作(轻车熟路)> 传送门Node.js(nodejs)对本地JSON文件进行增.删.改.查 ...

最新文章

  1. 【AI参赛经验】汉字书法识别比赛经验心得——by:microfat_htu
  2. python 调用c++ boost
  3. 【问题解决】老外ESP32TTS语音合成库AquesTalk ESP32测试成功
  4. 1687: 数组操作(非常规思维)
  5. Laravel- 数据库迁移
  6. mysql 1117_1117Mysql prepare预处理语句
  7. 编写程序模拟“主人”喂养“宠物”的场景,利用多态的思想!!!
  8. Linux内存管理:Fixmaps(固定映射地址)和ioremap
  9. Flash Player版本相关问题
  10. Python与C:指针与按址传递
  11. DOS-强制结束进程命令(ntsd命令/taskkill命令)使用教程
  12. unity3D跑酷游戏源码,支持安卓+IOS双端 unity2019 C#语言开发
  13. 风尘若幻_封装win7_sp3(终于可以和大家见面了,欢迎试用-谢谢支持!!!)
  14. Python读写LMDB文件
  15. 今有物不知其数三三数之JAVA_今有物不知其数.三三数之剩二.五五数之剩三.七七数之剩二.问物几何? 题目和参考答案——青夏教育精英家教网——...
  16. 超详细从零记录Hadoop2.7.3完全分布式集群部署过程
  17. 软件测试是什么工作状态,软件测试,现在主要的工作内容是干什么?
  18. 数据增强方式mosaic(基于yolo4)代码实现python
  19. easypoi导入excel实践方法:
  20. 计算机教子好考吗,考进985的孩子:父母都是这样教育孩子,这些方法比刷题管用...

热门文章

  1. SecureCRT 64位安装与破解
  2. 你想三年后过上什么样的生活?
  3. 25.SwiftyJSON转换JSON的注意
  4. 《A Byte of Python》PDF版电子书下载
  5. ueditor 取消工具栏悬浮
  6. mybatis-generator-gui 一款 mybatis generator 的图形界面工具
  7. delete请求数据详解
  8. RegularExpressionValidator 控件
  9. 工作范围说明书与需求规格说明书
  10. 利用Python批量下载自己喜欢听得音乐