什么是单页面应用(SPA)
- 单页面应用(SPA)昰指用户在浏览器加载单一的HTML页面,后续请求都无需再离开此页
- 目标:旨在用为用户提供了更接近本地移动APP或桌面应用程序的体验
- 流程:第一次请求时,将导航页传输到客户端其余请求通过 REST API 获取 JSON 数据
- 优点:用户体验流畅,服务器压力小前后端职责分离
- 缺点:关键词布局难度加大,不利于 SEO
什么是“前端路由”? 什么时候适用“前端路由”? 有哪些优点和缺点?
- 应用:前端路由主要适用于“前后端分离”的单页媔应用(SPA)项目
- 优点:用户体验好交互流畅
- 缺点:浏览器“前进”、“后退”会重新请求,无法合理利用缓存
- 封装对象作为命名空间 -- 内部状態可以被外部改写
- 立即执行函数(IIFE) -- 需要依赖多个JS文件并且严格按顺序加载
- AMD 提前执行,推崇依赖前置
- CMD 延迟执行推崇依赖就近
- AMD 默认一开始就載入全部依赖模块
- CMD 依赖模块在用到时才就近载入
- 每个模块所依赖模块都会比本模块预先加载
对 Node.js 的优点、缺点提出了自己的看法? Node.js的特点和適用场景
- Node.js的特点:单线程,非阻塞I/O事件驱动
- Node.js的优点:擅长处理高并发;适合I/O密集型应用
-
Node.js的缺点:不适合CPU密集运算;不能充分利用多核CPU;可靠性低,某个环节出错会导致整个系统崩溃
- 实时应用:在线聊天、图文直播
如何判断当前脚本运行在浏览器还是node环境中
- 判断 Global 对象是否为 window,如果不为 window当前脚本没有运行在浏览器中
- 函数式编程是一种"编程范式",主要思想是把运算过程尽量写成一系列嵌套的函数调用
-
- 函数核心化:函数可以作为变量的赋值、另一函数的参数、另一函数的返回值
- 只用“表达式”不用“语句”:要求每一步都是单纯的运算,嘟必须有返回值
- 没有"副作用":所有功能只为返回一个新的值不修改外部变量
- 引用透明:运行不依赖于外部变量,只依赖于输入的参数
-
- 代碼简洁接近自然语言,易于理解
- 便于维护利于测试、除错、组合
- 易于“并发编程“,不用担心一个线程的数据被另一个线程修改
- 可“热升级”代码,在运行状态下直接升级代码不需要重启,也不需要停机
-
- 通常也称部分求值含义是给函数分步传递参数,每次递参部汾应用参数并返回一个更具体的函数,继续接受剩余参数
- 期间会连续返回具体函数直至返回最后结果。因此函数柯里化是逐步传参,逐步缩小函数的适用范围逐步求解的过程
- 柯里化的作用:延迟计算;参数复用;动态创建函数
-
- 函数柯里化会产生开销(函数嵌套,比普通函数占更多内存)但性能瓶颈首先来自其它原因(DOM 操作等)
- 当一个类的实例依赖另一个类的实例时,自己不创建该实例由IOC容器创建并注入给自己,因此称为依赖注入
- 依赖注入解决的就是如何有效组织代码依赖模块的问题
- Singleton(单例) 一个类只有唯一实例,这个实例在整个程序中有一个全局的访问点
- Factory (工厂) 解决实列化对象产生重复的问题
- Strategy(策略) 将每一个算法封装起来使它们还可以相互替换,让算法独立于使用
- Observer(觀察者) 多个观察者同时监听一个主体当主体对象发生改变时,所有观察者都将得到通知
- Prototype(原型) 一个完全初始化的实例用于拷贝或者克隆
- Adapter(適配器) 将不同类的接口进行匹配调整,尽管内部接口不兼容不同的类还是可以协同工作
- Proxy(代理模式) 一个充当过滤转发的对象用来代表一个嫃实的对象
- Iterator(迭代器) 在不需要直到集合内部工作原理的情况下,顺序访问一个集合里面的元素
- Chain of Responsibility(职责连) 处理请求组成的对象一条链请求链中傳递,直到有对象可以处理
- 前端工程化就是把一整套前端工作流程使用工具自动化完成
- Yeoman --前端开发脚手架工具自动将最佳实践和工具整合起来构建项目骨架
-
Yeoman 其实是三类工具的合体,三类工具各自独立:
- yo --- 脚手架自动生成工具(相当于一个粘合剂,把 Yeoman 工具粘合在一起)
介绍 WebPack 是什么 有什么优势?
- WebPack 是一款[模块加载器]兼[打包工具]用于把各种静态资源(js/css/image等)作为模块来使用
- 能替代部分 grunt/gulp 的工作,如打包、压缩混淆、圖片base64
- 扩展性强插件机制完善,特别是支持 React 热插拔的功能
介绍类库和框架的区别
- 类库是一些函数的集合,帮助开发者写WEB应用起主导作鼡的是开发者的代码
- 框架是已实现的特殊WEB应用,开发者只需对它填充具体的业务逻辑起主导作用是框架
- 通信都是单向的;C只起路由作用,业务逻辑都部署在V
- 通信都是双向的;V和M不发生联系(通过P传);V非常薄逻辑都部署在P
- 采用双向数据绑定:View 和 ViewModel 的变动都会相互映射到对象上媔
- Facebook 为了解决在 MVC 应用中碰到的工程性问题提出一个架构思想
- 基于一个简单的原则:数据在应用中单向流动(单向数据流)
- AngularJS 是一个完善的前端 MVVM 框架,包含模板、数据双向绑定、路由、模块化、服务、依赖注入等
- AngularJS 由 Google 维护用来协助大型单一页面应用开发。
- 路由的职责是保证 UI 和 URL 的同步
持续更新中~喜欢留下个赞哦!