答:Backbone 为复杂Javascript应用程序提供模型(models)、集合(collections)、视图(views)的结构。其中模型用于绑定键值数据和自定义事件;集合附有可枚举函数的丰富API; 视图可以声明事件处理函数,并通过RESTful JSON接口连接到应用程序。
主要组成:
1.model:创建数据,进行数据验证,销毁或者保存到服务器上
2.collection:可以增加元素,删除元素,获取长度,排序,比较等一系列工具方法,说白了就是一个保存 models的集合类
3.view:绑定html模板,绑定界面元素的事件,初始的渲染,模型值改变后的重新渲染和界面元素的销毁等
优势:
应用场景:
最适合的应用场景是单页面应用,并且页面上有大量数据模型,模型之间需要进行复杂的信息沟通。
前端模块规范有: AMD,CMD,CommonJs,UMD
1.浏览器端
AMD是requireJs在推广过程中对模块定义的规范(异步模块规范)
CMD是seaJs在推广过程中对模块定义的规范(普通模块规范)
2.node端
commonJs(同步模块规范)
3.浏览器和node兼容端
UMD(通用模块规范)
4.ES6内置模块化module
import引入一个模块
export [default] 对外暴露一个对象
1.AMD
提前执行(异步加载:依赖先执行)–依赖前置
2.CMD
延迟执行(按需加载)–依赖就近
3.commonJs
加载模块是同步的,只有加载完成后才能执行后面的操作
模块分为:
(1)模块引用(require)
(2)模块定义(exports)
(3)模块标识(module)
ps:AMD和CMD的区别
1、AMD推崇依赖前置,CMD推崇就近依赖
2、执行时机不同:AMD是加载完立即执行,CMD是延迟执行(二者的最大区别)
3、两种规范都可以实现按需加载,但是实现的API不同
webpack 是一个打包工具(module bundler 模块打包器),把脚本开发语言“编译”成浏览器能识别 Javascript 和 CSS。
不同项目在定义脚本模块时使用的规范不同。有的项目会使用CommonJS规范(参考Node.js);有的项目会使用ES6 Modules的模块规范;有的还会使用AMD模块规范(参考RequireJS)。Webpack对这三种都支持。还支持混合使用。
假如有3个js文件,浏览器需要发送三次htttp请求获取这三个文件,然后依次执行,如果其中一个文件因为网络问题而延迟时间,那么整个页面的显示也会被延迟,那么针对大项目里有几十个或者上百个js文件,问题更严重,不但有延迟问题,还会遇到很难维护上百个文件的依赖关系。
打包时webpack最核心的功能,其他的功能都是为了让打包这个功能更好,通过webpack对模块打包,既保留了单个模块的可维护性,又减少了页面的HTTP请求,减少了页面加载时间,从而增加了页面的显示速度,让整个应用的体验更好