★★★ 如何使用原生 Node.js 操做 cookie?
★★ 什么是 Node.js?我们在哪里使用它?
★★ 为什么要使用 Node.js?
★★★ Node.js 有哪些特点?
★★★ setImmediate 和 setTimeOut 区别在哪里?
★★★ 如何更新 Node.js 的版本?
★★ 为什么 Node.js 是单线程的?
★★ 什么是回调函数?
★★★ 什么叫做回调地狱? 如何阻止回调地狱?
★★ Node.js 和 ajax 的区别是什么?
★★★ nextTick 和 setImmediate 的区别是什么?
★★ 请使用 Node.js 原生的 HTTP 模块创建一个 web Server。
★★★★ koa 中间件的实现原理
★★★ 请使用 Node.js 编写代码实现遍历文件夹并输出所有的文件名
★★★★ 图片上传到服务器的过程
★★★ token 存储在 localStorage 里,当过期时过期的 token 怎么处理?
★★★★★ koa 和 express 的区别
★★★ MySQL 和 MongoDB 的区别,他们都是怎么查询语句的,具体讲讲怎么查询的?
★★★★ 了解 eggjs 吗?
★★★ 什么是服务端渲染,服务端渲染的优点?
★★★ 如何在 Node.js 中操作 MongoDb 数据库
★★★ 谈谈 socket 的三种常见使用方式
★★★ 前后端数据交互的常见使用方式
★★★ Node.js 优缺点以及适用场景
★★★ 如何使用原生 Node.js 操做 cookie?
★★ 什么是 Node.js?我们在哪里使用它?
★★ 为什么要使用 Node.js?
nodejs 会让我们的编程工作变得简单,它主要包含如下几点几个好处:
1). 执行快速 2). 永远不会阻滞。 3). 异步处理机制。 4). 避免并行所带来的问题。
★★★ Node.js 有哪些特点?
特点:单线程、事件驱动、非阻塞 I/O
★★★ setImmediate 和 setTimeOut 区别在哪里?
★★ 如何更新 Node.js 的版本?
★★ 为什么 Node.js 是单线程的?
★★★ 什么是回调函数?
★★ 什么叫做回调地狱? 如何阻止回调地狱?
Node.js 和 ajax 的区别是什么?
★★★ nextTick 和 setImmediate 的区别是什么?
★★ 请使用 Node.js 原生的 HTTP 模块创建一个 web Server。
/* 示例代码 */ const http = require('http') const port = 3000 const server = http.createServer((req, res) => { res.statusCode = 200 res.setHeader('Content-Type', 'text/plain') res.end('Hello World') }) server.listen(port, () => { console.log(`Server is running on http://127.0.0.1:${port}/`) })
★★★★ koa 中间件的实现原理
★★★ 请使用 Node.js 编写代码实现遍历文件夹并输出所有的文件名
const fs = require('fs') const path = require('path') const getAllFile = function (dir) { function traverse(dir) { fs.readdirSync(dir).forEach(file => { const pathname = path.join(dir, file) if (fs.statSync(pathname).isDirectory()) { traverse(pathname) } else { console.log(file) } }) } traverse(dir) }
★★★★ 图片上传到服务器的过程
后台业务
后台代码试例,express 环境
var express = require('express') var router = express.Router() var fs = require('fs') var path = require('path') /* 用于处理非表单的文件数据流 */ var multer = require('multer') // 配置数据流向的文件,绝对路径,相对于根目录 var upload = multer({ dest: 'upload/' }) // 创建一个接收为编码的二进制数据流的方法实例 接收 name 为 newimg 字段的上传文件,最大接收为 1 var cpUpload = upload.fields([{ name: 'newimg', maxCount: 1 }]) // 接口 router.post('/add', cpUpload, (req, res) => { // 前端发送请求后,服务器已经接受到了前端传递过来的图片数据,保存在 files 对象下 // 加上 cpUpload,数据就会从这个方法所设置的地址流过来,生成一个本地临时空间,类似于虚拟 DOM // 获取这段数据 var img = req.files.newimg[0] // fs 模块读取临时空间的数据 var readStream = fs.createReadStream(img.path) // 设置图片存入的路径,并给文件名前面加上一个时间轴,防止命名重复 var imgpath = `/cdn/${Date.now()}-${img.originalname}` // 创建一个写入图片数据的地址 var writeStram = fs.createWriteStream( path.resolve(__dirname, `../public${imgpath}`) ) // 设置一个 pipe 管道,将读取的数据解析并注入到写入地址 readStream.pipe(writeStram) // 监听注入地址的 close 事件,表示注入完毕 writeStram.on('close', () => { // 返回给前端一个图片地址 res.json({ err: 0, msg: 'success', data: { img: imgpath } }) }) }) module.exports = router
★★★ token 存储在 localStorage 里,当过期时过期的 token 怎么处理?
★★★★★ koa 和 express 的区别
★★★ MySQL 和 MongoDB 的区别,他们都是怎么查询语句的,具体讲讲怎么查询的?
区别
查询语句
db.users.find({ username: '张三', age: 27 })
select * from users where "username" = "张三" and age = 27
★★★★ 了解 eggjs 吗?
★★★ 什么是服务端渲染,服务端渲染的优点?
★★★ 如何在 Node.js 中操作 MongoDb 数据库
★★★ 谈谈 socket 的三种常见使用方式
★★★ 前后端数据交互的常见使用方式
★★★ Node.js 优缺点以及适用场景
优点
缺点
适用场景
工具类应用:海量的工具,小到前端压缩部署,大到桌面图形界面应用程序
总而言之,NodeJS 适合运用在高并发、I/O 密集、少量业务逻辑的场景。