Upgrade to Pro — share decks privately, control downloads, hide ads and more …

前端MV*杂谈

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on. →
Avatar for koppt koppt
September 09, 2014

 前端MV*杂谈

Avatar for koppt

koppt

September 09, 2014

Other Decks in Technology

Transcript

  1. 1 1 1 1 前端历史杂谈 2 2 2 2 前端MV

    MV MV MV* * * *初探 3 3 3 3 AngularJS AngularJS AngularJS AngularJS 4 4 4 4 Web Components Web Components Web Components Web Components
  2. 石器时代 石器时代 石器时代 石器时代 1 1 1 1 Part 1:

    Part 1: Part 1: Part 1: 前端历史杂谈 前端历史杂谈 前端历史杂谈 前端历史杂谈
  3. 石器时代 石器时代 石器时代 石器时代 1 1 1 1 Part 1:

    Part 1: Part 1: Part 1: 前端历史杂谈 前端历史杂谈 前端历史杂谈 前端历史杂谈 静态页面 <html> <head> <title>手游宝测试一</title> </head> <body> <h1>主标题</h1> <p>段落内容</p> </body> </html>
  4. 石器时代 石器时代 石器时代 石器时代 1 1 1 1 Part 1:

    Part 1: Part 1: Part 1: 前端历史杂谈 前端历史杂谈 前端历史杂谈 前端历史杂谈 静态页面+简单逻辑 <html> <head> <title>手游宝测试二</title> </head> <body> <input id="firstNameInput" type="text" /> <input id="lastNameInput" type="text" /> <input type="button" onclick="greet()" /> <script language="JavaScript"> function greet() { var firstName = document.getElementById("firstNameInput").value; var lastName = document.getElementById("lastNameInput").value; alert("Hello, " + firstName + "." + lastName); } </script> </body> </html>
  5. 石器时代 石器时代 石器时代 石器时代 1 1 1 1 Part 1:

    Part 1: Part 1: Part 1: 前端历史杂谈 前端历史杂谈 前端历史杂谈 前端历史杂谈 结合服务器混合模式 <form method="post" action="username.php"> <p>First Name: <input type="text" name="firstName" /></p> <p>Last Name: <input type="text" name="lastName" /></p> <input type="submit" value="Submit" /> </form> 服务端技术:CGI、ASP、JSP、PHP等
  6. 石器时代 石器时代 石器时代 石器时代 1 1 1 1 Part 1:

    Part 1: Part 1: Part 1: 前端历史杂谈 前端历史杂谈 前端历史杂谈 前端历史杂谈 结合服务器混合模式 <html> <body> <p>Hello world!</p> <p> <?php echo "Hello 手游宝!" ?> </p> </body> </html> 服务端技术:CGI、ASP、JSP、PHP等
  7. Part 1: Part 1: Part 1: Part 1: 前端历史杂谈 前端历史杂谈

    前端历史杂谈 前端历史杂谈 组件化萌芽 <html> <head> <link rel="stylesheet" href="//code.jquery.com/ui/1.11.1/themes/smoothness/jquery-ui.css"> <script src="//code.jquery.com/jquery-1.10.2.js"></script> <script src="//code.jquery.com/ui/1.11.1/jquery-ui.js"></script> <link rel="stylesheet" href="/resources/demos/style.css"> <script> $(function() { $( "#datepicker" ).datepicker(); }); </script> </head> <body> <p>Date: <input type="text" id="datepicker"></p> </body> </html> 把不同的功能模块独立成一个JS,然后根据页面需要引用。 石器时代 石器时代 石器时代 石器时代 1 1 1 1
  8. Part 1: Part 1: Part 1: Part 1: 前端历史杂谈 前端历史杂谈

    前端历史杂谈 前端历史杂谈 组件化萌芽 <html> <body> <form runat="server"> <p>Enter a number from 1 to 100: <asp:TextBox id="tbox1" runat="server" /> <asp:Button Text="Submit" runat="server" /> </p> <p> <asp:RangeValidator ControlToValidate="tbox1" MinimumValue="1" MaximumValue="100" Type="Integer" Text="The value must be from 1 to 100!" runat="server" /> </p> </form> </body> </html> 扩展HTML标签(HTML Component)DEMO 石器时代 石器时代 石器时代 石器时代 1 1 1 1
  9. Part 1: Part 1: Part 1: Part 1: 前端历史杂谈 前端历史杂谈

    前端历史杂谈 前端历史杂谈 铁器时代 铁器时代 铁器时代 铁器时代 2 2 2 2
  10. Part 1: Part 1: Part 1: Part 1: 前端历史杂谈 前端历史杂谈

    前端历史杂谈 前端历史杂谈 AJAX 典型例子:GMail 铁器时代 铁器时代 铁器时代 铁器时代 2 2 2 2
  11. Part 1: Part 1: Part 1: Part 1: 前端历史杂谈 前端历史杂谈

    前端历史杂谈 前端历史杂谈 铁器时代 铁器时代 铁器时代 铁器时代 2 2 2 2 Javascript 基础库
  12. Part 1: Part 1: Part 1: Part 1: 前端历史杂谈 前端历史杂谈

    前端历史杂谈 前端历史杂谈 铁器时代 铁器时代 铁器时代 铁器时代 2 2 2 2 JS代码模块化 代码膨胀、重复的代码也越来越多。(命名空间) 单页面应用(SPA)越来越多,产生一个问题:并非所有 的功能都需要在页面加载时全部载入。(模块加载器: SeaJs、requireJs) AMD、CMD规范
  13. Part 1: Part 1: Part 1: Part 1: 前端历史杂谈 前端历史杂谈

    前端历史杂谈 前端历史杂谈 工业时代 工业时代 工业时代 工业时代 3 3 3 3
  14. Part 1: Part 1: Part 1: Part 1: 前端历史杂谈 前端历史杂谈

    前端历史杂谈 前端历史杂谈 工业时代 工业时代 工业时代 工业时代 3 3 3 3 小伙伴们开始思考一些问题 如何更好的模块化开发 业务数据如何组织 界面和业务数据之间通过何种方式进行交互
  15. Part 1: Part 1: Part 1: Part 1: 前端历史杂谈 前端历史杂谈

    前端历史杂谈 前端历史杂谈 工业时代 工业时代 工业时代 工业时代 3 3 3 3 库和框架 库 库 库 库:一种工具,我提供了,你可以不使用,即使用了,也 不会影响你自己的代码结构。 框架 框架 框架 框架:面向一个领域,提供一套解决方案,如果你用我, 就得按照我的方式来办事。 库:jQuery、Underscore 框架:dojo、Sencha
  16. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 MV MV MV MV* * * *框架 框架 框架 框架 1 1 1 1 MV MV MV MV* * * *框架 框架 框架 框架 前端MVC、MVP、MVVM框架 目的:WebApp
  17. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 MV MV MV MV* * * *框架 框架 框架 框架 1 1 1 1 MVC模式 Model View Controller Business logic and data UI Components Request & Relay
  18. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 MV MV MV MV* * * *框架 框架 框架 框架 1 1 1 1 MVP模式 Model View Presenter Business logic and data UI Components Handle all UI events
  19. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 MV MV MV MV* * * *框架 框架 框架 框架 1 1 1 1 MVP模式 特点: �用户直接与View交互; �View 与 Presenter 之间是一对一的对应关系; �View 与 Presenter 有关联,但与 Model 没有;
  20. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 MV MV MV MV* * * *框架 框架 框架 框架 1 1 1 1 MVVM模式 Model View ViewModel Business logic UI Components Expose methods maintian the state of the view
  21. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 MV MV MV MV* * * *框架 框架 框架 框架 1 1 1 1 MVVM模式 特点: �用户直接与View交互; �View 与 ViewModel 之间是多对一的对应关系; �View 与 ViewModel 有双向绑定的关系;
  22. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 MV MV MV MV* * * *框架对比 框架对比 框架对比 框架对比 2 2 2 2 MVC框架
  23. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 MV MV MV MV* * * *框架对比 框架对比 框架对比 框架对比 2 2 2 2
  24. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 MV MV MV MV* * * *框架对比 框架对比 框架对比 框架对比 2 2 2 2 AngularJS 2009年,Google开发 特点: 声明式的HTML 双向数据绑定 单元测试 弱:神奇的“脏检测”、调试麻烦、太多概念
  25. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 MV MV MV MV* * * *框架对比 框架对比 框架对比 框架对比 2 2 2 2 Backbone CoffeeScript 作者 Jeremy Ashkenas 创建的; Backbone 和 Underscore 好基友; 轻量、快速、内存占用小; 可扩展性强; 弱: �本身提供的功能少,需要借组第三方插件; �不支持双向数据绑定,意思是需要你编写大量的代码来处 理模型更新之后触发的视图更新; �视图可以直接操作DOM,不利于做单元测试;
  26. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 MV MV MV MV* * * *框架对比 框架对比 框架对比 框架对比 2 2 2 2 ember 核心开发是 Yehuda Katz,他也是 jQuery 的核心开发者; Ember 主张约定优于配置,也就是说不需要编写大量的样板代码; 性能是Ember设计的主要目标; 弱: � API稳定性不够; � Handlebars为了保持模板和数据模型的一致,用了太多的 <script>标签来污染DOM;
  27. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 MV MV MV MV* * * *框架对比 框架对比 框架对比 框架对比 2 2 2 2 大小和依赖
  28. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 MV MV MV MV* * * *框架对比 框架对比 框架对比 框架对比 2 2 2 2 总结 Angular Angular Angular Angular 拥有强大的HTML扩展能力,而且有强大的社区,有Google作支 撑,它不但适用于快速原型开发,也适用于大型生产应用。 Backbone Backbone Backbone Backbone 崇尚极简主义,体积小,提供了构建应用所需要的最小集。 Ember Ember Ember Ember 综合能力比较强,对在Java、C#等面向对象语言中,有过MVC编 程背景知识的程序员来说比较有意义;由于约定由于配置,所以可 以节省很多不必要的代码。
  29. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 AngularJS AngularJS AngularJS AngularJS 1 1 1 1 DEMO 简单的应用 简单的应用 简单的应用 简单的应用
  30. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 ng-app ng-app ng-app ng-app指令 指令 指令 指令 标记 AngularJS 脚本的作用域 AngularJS AngularJS AngularJS AngularJS 1 1 1 1
  31. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 AngularJS AngularJS AngularJS AngularJS脚本标签 脚本标签 脚本标签 脚本标签 angular.js 脚本运行后会寻找含有 ng-app 指令的HTML标 签,然后启动 app。 AngularJS AngularJS AngularJS AngularJS 1 1 1 1
  32. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 ng-model ng-model ng-model ng-model指令 指令 指令 指令 建立双向数据绑定,如果改变了input文本框中的值,模型中 的数据也将自动更新,反之亦然。 AngularJS AngularJS AngularJS AngularJS 1 1 1 1
  33. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 双大括号绑定的表达式 双大括号绑定的表达式 双大括号绑定的表达式 双大括号绑定的表达式 AngularJS模版的核心功能——绑定 这个绑定告诉AngularJS需要运算其中的表达式并将结果插入 DOM中 AngularJS AngularJS AngularJS AngularJS 1 1 1 1
  34. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 稍微复杂的应用 稍微复杂的应用 稍微复杂的应用 稍微复杂的应用 AngularJS AngularJS AngularJS AngularJS 1 1 1 1
  35. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 稍微复杂的应用 稍微复杂的应用 稍微复杂的应用 稍微复杂的应用 DEMO AngularJS AngularJS AngularJS AngularJS 1 1 1 1
  36. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 $scope $scope $scope $scope $scope 是一个将视图绑定到控制器的对象。在MVC结构 中,$scope对象相当于模型Model,它提供了一个绑定到 DOM元素的执行上下文。 AngularJS AngularJS AngularJS AngularJS 1 1 1 1
  37. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 $scope是一个对象,是Angular 表达式执行的上下文。 $scope是通过Controller的参数注入进来的,这个$scope只 在当前的Controller中有效。 $scope $scope $scope $scope AngularJS AngularJS AngularJS AngularJS 1 1 1 1
  38. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 AngularJS AngularJS AngularJS AngularJS 1 1 1 1
  39. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 ng-controller ng-controller ng-controller ng-controller指令 指令 指令 指令 通过 ng-controller 指定控制器,控制器是一个JS函数,我们 可以向Controller注入$scope对象,并为$scope对象添加行 为。 AngularJS AngularJS AngularJS AngularJS 1 1 1 1
  40. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 Filter Filter Filter Filter(过滤器) (过滤器) (过滤器) (过滤器) AngularJS AngularJS AngularJS AngularJS 1 1 1 1
  41. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 AngularJS AngularJS AngularJS AngularJS绑定事件 绑定事件 绑定事件 绑定事件 AngularJS AngularJS AngularJS AngularJS 1 1 1 1
  42. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 依赖注入和 依赖注入和 依赖注入和 依赖注入和XHR XHR XHR XHR Angular提供一个内置的ajax服务$http,如果要使用$http等 内置的服务,则需要通过依赖注入的方式来操作。 AngularJS AngularJS AngularJS AngularJS 1 1 1 1
  43. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 ng- ng- ng- ng-view view view view指令 指令 指令 指令 AngularJS AngularJS AngularJS AngularJS 1 1 1 1
  44. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 $routeProvider $routeProvider $routeProvider $routeProvider服务,会自动判断使用 服务,会自动判断使用 服务,会自动判断使用 服务,会自动判断使用pushstate pushstate pushstate pushstate还是 还是 还是 还是hashbang hashbang hashbang hashbang AngularJS AngularJS AngularJS AngularJS 1 1 1 1
  45. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 AngularJS AngularJS AngularJS AngularJS思维 思维 思维 思维 2 2 2 2 传统前端开发思维 • 以JQuery为代表 • 以DOM DOM DOM DOM为中心 • 关注VIEW层的变化和用户操作 • 我有这样一个DOM,我想让它做XX 新一代前端开发思维 • 以AngularJS为代表 • 以Data Data Data Data为中心 • 聚焦于数据的变更 • MVW = Model + View + WhatEver
  46. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 AngularJS AngularJS AngularJS AngularJS指令 指令 指令 指令 2 2 2 2 AngularJS中要如何操作DOM呢?
  47. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 AngularJS AngularJS AngularJS AngularJS指令 指令 指令 指令 3 3 3 3 $ $ $ $ Directives Directives Directives Directives
  48. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 指令 指令 指令 指令就是一些附加在HTML元素上的自定义标记(例如:属性、元 素、或CSS类),它告诉AngularJS的HTML编译器($compile) 在元素上附加某些指定的行为,甚至操作DOM、改变DOM元素, 以及它的各级子节点。 Directives Directives Directives Directives(指令) (指令) (指令) (指令) AngularJS AngularJS AngularJS AngularJS指令 指令 指令 指令 3 3 3 3 对于 对于 对于 对于HTML HTML HTML HTML模板来说, 模板来说, 模板来说, 模板来说," " " "编译 编译 编译 编译" " " "意味着什么? 意味着什么? 意味着什么? 意味着什么? 对于AngularJS来说,“编译”意味着把监听事件绑定在HTML元素 上,使其可以交互。 我们使用"编译"这个术语的原因就在于,把指 令关联到DOM上的这种递归操作非常类似于 编译式语言编译源代 码的过程。
  49. Part 2: Part 2: Part 2: Part 2: 前端 前端

    前端 前端MV MV MV MV* * * *初探 初探 初探 初探 Directives Directives Directives Directives(指令) (指令) (指令) (指令) AngularJS AngularJS AngularJS AngularJS指令 指令 指令 指令 3 3 3 3 DEMO 具体例子可参考 具体例子可参考 具体例子可参考 具体例子可参考: : : : AngularUI for AngularJS AngularUI for AngularJS AngularUI for AngularJS AngularUI for AngularJS
  50. PPT PPT PPT PPT写不完,下次再分享吧 写不完,下次再分享吧 写不完,下次再分享吧 写不完,下次再分享吧~~~ ~~~ ~~~ ~~~

    下次分享主题: 下次分享主题: 下次分享主题: 下次分享主题: Web Components & Polymer Web Components & Polymer Web Components & Polymer Web Components & Polymer