Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
前端MV*杂谈
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
koppt
September 09, 2014
Technology
230
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
前端MV*杂谈
koppt
September 09, 2014
Other Decks in Technology
See All in Technology
初海外で注意すべきこと12選!!!安全快適なre:invent生活にするために
yuuuuuuu168
1
160
USB PDを使ってスマホを労わりたい
raspython3
0
180
V8のArray.prototype.flatを最大約20倍速くするまでと、巨大OSSへの大規模コミットの道のり
riyaamemiya
0
290
DWH の限界突破! AI エージェント向け爆速リアルタイムデータ基盤 ClickHouse
jozono
1
470
二歩目のフロントエンド・ウェブアクセシビリティ
camiha
2
570
「事実」を「計測」して、「解釈」する 〜AWS Lambdaのメモリ最適解の見つけ方〜
maimyyym
0
170
脆弱性診断って、何をしているの? 〜弱点を見つけて、会社の改善につなげるまで〜
keeg
0
920
パスキーの自動テストはどこまでいけるのか
teamlab
PRO
0
210
Local CI × GitHub Actions
gogutan
2
190
宣言型部分更新は何を解決しどこへ向かうのか
shuta13
1
450
QA4AI 2026-Oct 生成AI時代の品質保証
tokuty
1
860
Metadata - Section 1: HTML Basics
mohab1
0
120
Featured
See All Featured
How to make the Groovebox
asonas
2
2.5k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3.1k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
300
Designing Powerful Visuals for Engaging Learning
tmiket
1
610
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
570
Design in an AI World
tapps
1
350
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
550
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
270
WCS-LA-2024
lcolladotor
0
890
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
Transcript
前端MV*杂谈
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
Part One 前端历史杂谈
石器时代 石器时代 石器时代 石器时代 1 1 1 1 Part 1:
Part 1: Part 1: Part 1: 前端历史杂谈 前端历史杂谈 前端历史杂谈 前端历史杂谈
石器时代 石器时代 石器时代 石器时代 1 1 1 1 Part 1:
Part 1: Part 1: Part 1: 前端历史杂谈 前端历史杂谈 前端历史杂谈 前端历史杂谈 静态页面 <html> <head> <title>手游宝测试一</title> </head> <body> <h1>主标题</h1> <p>段落内容</p> </body> </html>
石器时代 石器时代 石器时代 石器时代 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>
石器时代 石器时代 石器时代 石器时代 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等
石器时代 石器时代 石器时代 石器时代 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等
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
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
Part 1: Part 1: Part 1: Part 1: 前端历史杂谈 前端历史杂谈
前端历史杂谈 前端历史杂谈 铁器时代 铁器时代 铁器时代 铁器时代 2 2 2 2
Part 1: Part 1: Part 1: Part 1: 前端历史杂谈 前端历史杂谈
前端历史杂谈 前端历史杂谈 AJAX 典型例子:GMail 铁器时代 铁器时代 铁器时代 铁器时代 2 2 2 2
Part 1: Part 1: Part 1: Part 1: 前端历史杂谈 前端历史杂谈
前端历史杂谈 前端历史杂谈 铁器时代 铁器时代 铁器时代 铁器时代 2 2 2 2 Javascript 基础库
Part 1: Part 1: Part 1: Part 1: 前端历史杂谈 前端历史杂谈
前端历史杂谈 前端历史杂谈 铁器时代 铁器时代 铁器时代 铁器时代 2 2 2 2 JS代码模块化 代码膨胀、重复的代码也越来越多。(命名空间) 单页面应用(SPA)越来越多,产生一个问题:并非所有 的功能都需要在页面加载时全部载入。(模块加载器: SeaJs、requireJs) AMD、CMD规范
Part 1: Part 1: Part 1: Part 1: 前端历史杂谈 前端历史杂谈
前端历史杂谈 前端历史杂谈 工业时代 工业时代 工业时代 工业时代 3 3 3 3
Part 1: Part 1: Part 1: Part 1: 前端历史杂谈 前端历史杂谈
前端历史杂谈 前端历史杂谈 工业时代 工业时代 工业时代 工业时代 3 3 3 3 小伙伴们开始思考一些问题 如何更好的模块化开发 业务数据如何组织 界面和业务数据之间通过何种方式进行交互
MV*框架
Part 1: Part 1: Part 1: Part 1: 前端历史杂谈 前端历史杂谈
前端历史杂谈 前端历史杂谈 工业时代 工业时代 工业时代 工业时代 3 3 3 3 库和框架 库 库 库 库:一种工具,我提供了,你可以不使用,即使用了,也 不会影响你自己的代码结构。 框架 框架 框架 框架:面向一个领域,提供一套解决方案,如果你用我, 就得按照我的方式来办事。 库:jQuery、Underscore 框架:dojo、Sencha
Part two 前端MV*初探
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
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
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
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 没有;
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
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 有双向绑定的关系;
Part 2: Part 2: Part 2: Part 2: 前端 前端
前端 前端MV MV MV MV* * * *初探 初探 初探 初探 MV MV MV MV* * * *框架对比 框架对比 框架对比 框架对比 2 2 2 2 MVC框架
Part 2: Part 2: Part 2: Part 2: 前端 前端
前端 前端MV MV MV MV* * * *初探 初探 初探 初探 MV MV MV MV* * * *框架对比 框架对比 框架对比 框架对比 2 2 2 2
Part 2: Part 2: Part 2: Part 2: 前端 前端
前端 前端MV MV MV MV* * * *初探 初探 初探 初探 MV MV MV MV* * * *框架对比 框架对比 框架对比 框架对比 2 2 2 2 AngularJS 2009年,Google开发 特点: 声明式的HTML 双向数据绑定 单元测试 弱:神奇的“脏检测”、调试麻烦、太多概念
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,不利于做单元测试;
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;
Part 2: Part 2: Part 2: Part 2: 前端 前端
前端 前端MV MV MV MV* * * *初探 初探 初探 初探 MV MV MV MV* * * *框架对比 框架对比 框架对比 框架对比 2 2 2 2 大小和依赖
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编 程背景知识的程序员来说比较有意义;由于约定由于配置,所以可 以节省很多不必要的代码。
Part three AngularJS
Part 2: Part 2: Part 2: Part 2: 前端 前端
前端 前端MV MV MV MV* * * *初探 初探 初探 初探 AngularJS AngularJS AngularJS AngularJS 1 1 1 1 DEMO 简单的应用 简单的应用 简单的应用 简单的应用
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
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
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
Part 2: Part 2: Part 2: Part 2: 前端 前端
前端 前端MV MV MV MV* * * *初探 初探 初探 初探 双大括号绑定的表达式 双大括号绑定的表达式 双大括号绑定的表达式 双大括号绑定的表达式 AngularJS模版的核心功能——绑定 这个绑定告诉AngularJS需要运算其中的表达式并将结果插入 DOM中 AngularJS AngularJS AngularJS AngularJS 1 1 1 1
Part 2: Part 2: Part 2: Part 2: 前端 前端
前端 前端MV MV MV MV* * * *初探 初探 初探 初探 稍微复杂的应用 稍微复杂的应用 稍微复杂的应用 稍微复杂的应用 AngularJS AngularJS AngularJS AngularJS 1 1 1 1
Part 2: Part 2: Part 2: Part 2: 前端 前端
前端 前端MV MV MV MV* * * *初探 初探 初探 初探 稍微复杂的应用 稍微复杂的应用 稍微复杂的应用 稍微复杂的应用 DEMO AngularJS AngularJS AngularJS AngularJS 1 1 1 1
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
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
Part 2: Part 2: Part 2: Part 2: 前端 前端
前端 前端MV MV MV MV* * * *初探 初探 初探 初探 AngularJS AngularJS AngularJS AngularJS 1 1 1 1
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
Part 2: Part 2: Part 2: Part 2: 前端 前端
前端 前端MV MV MV MV* * * *初探 初探 初探 初探 Filter Filter Filter Filter(过滤器) (过滤器) (过滤器) (过滤器) AngularJS AngularJS AngularJS AngularJS 1 1 1 1
Part 2: Part 2: Part 2: Part 2: 前端 前端
前端 前端MV MV MV MV* * * *初探 初探 初探 初探 AngularJS AngularJS AngularJS AngularJS绑定事件 绑定事件 绑定事件 绑定事件 AngularJS AngularJS AngularJS AngularJS 1 1 1 1
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
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
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
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
Part 2: Part 2: Part 2: Part 2: 前端 前端
前端 前端MV MV MV MV* * * *初探 初探 初探 初探 AngularJS AngularJS AngularJS AngularJS指令 指令 指令 指令 2 2 2 2 AngularJS中要如何操作DOM呢?
Part 2: Part 2: Part 2: Part 2: 前端 前端
前端 前端MV MV MV MV* * * *初探 初探 初探 初探 AngularJS AngularJS AngularJS AngularJS指令 指令 指令 指令 3 3 3 3 $ $ $ $ Directives Directives Directives Directives
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上的这种递归操作非常类似于 编译式语言编译源代 码的过程。
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
PPT PPT PPT PPT写不完,下次再分享吧 写不完,下次再分享吧 写不完,下次再分享吧 写不完,下次再分享吧~~~ ~~~ ~~~ ~~~
下次分享主题: 下次分享主题: 下次分享主题: 下次分享主题: Web Components & Polymer Web Components & Polymer Web Components & Polymer Web Components & Polymer