node的特色
- 他是一个JavaScript的运行环境
- 依赖于Chrome V8 引擎进行代码解释
- 事件驱动
- 非堵塞
- 单线程
- 轻量,适用于实时数据交互
exports和module.exports的区别
- exports是对module.exports引用
- node为每一个模块提供一个exports变量,他指向module.exports
- 不能将它直接指向一个值,那样会改变他的指向
- 若是exports和module.exports同时存在,那么只显示module.exports
http请求和响应的报文格式和常见http状态码
- 请求: 请求行,请求头,空行,请求体
- 响应: 状态行,响应头,空行,响应头
- 编码格式 1.. 表示请求已发送 2.. 表示请求成功 3.. 表示等待用户进一步操做,重定向 4.. 表示页面加载错误 5.. 表示服务器错误
MIME类型有什么用
- http协议中定义文档性质及格式的标准
- 服务器经过MIME告知响应内容什么类型,而浏览器经过MIME类型来缺点如何让处理文档
模块加载机制
Nodejs遵循commonjs规范的模块加载机制,使用require加载文件,使用exports和module.exports导出文件css
NPM的做用html
- 容许用户从NPM服务器下载别人编写的第三方包到本地使用
- 容许用户从NPM服务器下载并安装别人编写的命令行程到本地使用
- 容许用户将本身编写的包或命令行程序上传到NPM服务器供别人使用
url组成
协议+域名+端口+pathname+search+hash前端
fs文件操做模块可否删除一个非空目录,若是不能应该怎么作
不能 它只能删除空的目录 若是目录不为空,他必须先遍历文件夹,删除里面的内容,而后若是还有文件夹,继续遍历 从而递归执行操做,只有当里面的内容所有清空后,才会删除一个目录html5
exports 中Router要解决的问题?
- 能够认为他是一个处理中间件和控制器的微型app,他拥有和app相似的方法
- 他解决了把模块暴露给其余模块被滥用的风险
npm start命令,应该在哪里配置,在哪里能够正确运行?
- 在package.json 中的script中配置npm命令
- key是npm的自定义命令名称
- value是真正终端中执行的命令
- 在使用npm 运行自定义命令时, 须要确保命令路径的位置上拥有package.json文件
express生成器的做用是什么
能够经过express-generator能够快速建立一个应用骨架,包含一整套配置好的服务器配置,文件和文件夹,包括静态资源的暴露,路由和模板引擎的配置,以及错误页面的处理node
请回答, 前端Ajax请求后端接口/api/getNews, 接口过程当中, 都发生了什么?
首先前端代码运行在浏览器中,由浏览器的XMLHTTPRequest发起一个请求, 若是经过了跨域的检测, 进行http链接, 发送请求信息, 服务器触发对应监听的"/api/getNews"接口的回调函数, 执行其中的代码, 最后res返回响应的内容等给本次请求的地方.webpack
请求对象中包含哪些内容
请求协议,请求方式,请求地址,请求头,请求头web
响应对象中包含哪些内容
响应协议,响应状态码,响应状态信息,响应头,相应数据ajax
express的优势
Express的优势是线性逻辑:数据库
- 路由和中间件完美结合
- 经过中间件形式把业务逻辑细分,简化
- 随随便便的一个请求,经过一系列中间件处理后再响应给客户,在复杂的逻辑也线性了
###什么是中间件express
-
Express是一个自身功能及其简单,彻底由路由和中间件构成的文本开发框架
-
他就是在操做各类中间件处理复杂的逻辑
-
非内置的中间件经过require导入就可使用了
-
经常使用第三方中间件:
- cookie-parser
- ejs
- express-session
- http-errors
- Multer
- Nodemon
- config-lite
express 缺点是什么
- express是基于callback来组合业务逻辑
- callback有两大缺点:
- 不可组合
- 异常不可捕获
同步/异步
同步操做
因此线程都得等待,只有上一段代码执行完毕,而后下一段代码才会执行,堵塞线程
异步操做
不会等待,当有程序在执行过程当中,后面的代码继续执行,当异步操做成功,通常使用回调函数来处理异步成功的动做
ejs
EJS是JavaScript的模板库,用来从json数据生HTML文件
koa
优势:
- 借助promise和generator的能力,丢掉callback,完美解决异步组合问题和异步异常捕获问题
- koa把router,view等功都移除了,更加轻量级
缺点
- Connect/Express 的中间件基本不能重用,基本要重写
pug
- pug是一款健壮,灵活,功能丰富的HTML模板引擎,专门为Node.js平台开发
- 是一种经过缩减方式编写代码,不须要考虑闭合标签,能够提升速度和复用性
设计一个先后端交互的流程?
前端编写HTML+CSS代码之后, 经过JS的Ajax进行网路请求, 请求后台指定的数据接口, 根据业务需求, 能够还须要传递参数等信息, 获取数据之后, 进行JSON解析和DOM建立展现. 服务器端 编写接口, 接收参数等, 链接数据库, 根据业务逻辑编写业务代码, 返回不一样的数据
分页功能,先后的如何交互
分页功能分先后端
- 前端
- 先后端配合
cookie和session区别
session是区别于数据库存在的一种服务器临时存储技术, 它主要存储一些无需持久化的数据, 好比临时的登陆状态信息等 cookie是存在于浏览器上的一种浏览器本地存储的方式, 同域名下的cookie不一样标签页能够共享, 默认过时时间是浏览器关闭时, 并且在进行http请求时, 会自动带上浏览器所有的cookie发给后台, 后台也能够获取cookie, 设置能够在响应时, 想浏览器中设置cookie。
解决跨域
当ajax请求所在的域名或者接口和请求目标的域名或者接口有一个不一样,即发生跨域
解决
- 若是可让后台改码,可让后台开启跨域支持/使用jsonp处理
- cors设置set.heaader
- webpack设置跨域
为何进行模块化
- 是目前前端的开发趋势
- 有更好的维护性,可复用性等好处
模块化和组件化的区别
- 组件化让一些小功能通用性和可复用性来抽象组件
- 组件化更多的关注UI部分,好比用户看到的弹出框,页脚,确认按钮等,这些组件能够组合成新的组件,又能够和其余组件组合组合成新的组件
- 一些小模块的复用
- 模块化是按照业务逻辑划分大模块
- 模块化侧重于数据的封装,一组相关的组件定义成一个模块,一个json对象能够是一个模块
AMD 和 CMD
AMD 依赖前置 CMD 就近依赖
常见的web优化有哪些?
- 减小代码重复
- 压缩 css,js
- 减小图片大小数量
- 减小http请求,合理设置缓存
- CDN加速
- 反向代理
- js减小DOM操做,编码使用eval和function,减小做用域链查找
koa与express的区别?该如何选择?
websocket是什么
他是html5新增的协议,创建浏览器和服务器之间不受限制的双向通道
websocket的优势:
- 持双向通讯,实时性更强。
- 减小通讯量,只要创建起websocket链接,就一直保持链接,在此期间能够不断的传送消息,直到关闭请求。
- 节约带宽。
为何要进行先后端分离?
- 提高开发效率,由于能够先后端并行开发,而不是像之前的强依赖
- 能够实现真正的先后端解耦(前端能够根据用户不一样时期的体验需求迅速改版,后端对此毫无压力。同理,后端进行的业务逻辑升级,数据持久方案变动,只要不影响到接口,前端能够绝不知情。)、增长代码的维护性及易读性
- 先后端开发人员的职责更加专一:前端倾向于呈现,着重处理用户体验相关的问题;后端则倾向于业务逻辑、数据处理和持久化等。