Ember.js 确实提供了一套自己的类系统,称为 Ember 对象模型 (Ember Object Model)。这个模型基于 JavaScript 的原型继承,但添加了一些额外的功能和概念,以提供更强大和灵活的对象模型。
在 Ember 中,每个对象都是一个 Ember 对象,它们继承自 Ember.Object 基类。Ember 对象有一个特殊的属性 content
,它是实际的数据对象,用于存储模型的属性。
对于属性值的自动更新,Ember 使用了依赖跟踪系统。当一个 Ember 对象的属性依赖于另一个对象或属性时,当依赖的对象或属性发生变化时,Ember 会自动更新该属性的值。
例如,假设你有以下的 Ember 对象:
let user = Ember.Object.extend({
firstName: 'John',
lastName: 'Doe',
fullName: Ember.computed('firstName', 'lastName', function() {
return this.get('firstName') + ' ' + this.get('lastName');
})
}).create();
在这个例子中,fullName
是一个计算属性,依赖于 firstName
和 lastName
。如果 firstName
或 lastName
的值发生变化,fullName
的值会自动更新。
至于普通的 JavaScript 标准类,它们没有内置的依赖跟踪系统。如果你需要类似的功能,你可能需要手动实现它,或者使用某个库或框架来提供这种功能。
Ember.js 的对象模型不仅仅提供了自动更新属性值的依赖跟踪系统,还引入了一些其他有用的特性。其中之一就是混合(mixins)。混合是一种将多个类的属性和方法组合到一个类中的机制。这使得开发者可以在不修改原有类的情况下,为类添加新的功能。
混合是通过 Ember.Mixin类实现的。混合类可以包含多个属性和方法,这些属性和方法会被添加到混合的目标类中。以下是一个使用混合的示例:
//定义一个混合
let userMixin = Ember.Mixin.create({
firstName: 'John',
lastName: 'Doe',
fullName: Ember.computed('firstName', 'lastName', function() {
return this.get('firstName') + ' ' + this.get('lastName');
}),
greet: function() {
console.log(`Hello, my name is ${this.get('fullName')}.`);
}
});
// 将混合应用到另一个类
let User = Ember.Object.extend(userMixin);
//创建一个 User实例
let user = User.create();
user.greet(); //输出:Hello, my name is John Doe.
在这个例子中,我们定义了一个名为 userMixin
的混合,其中包含 firstName
、lastName
和 greet
属性。然后,我们将这个混合应用到 User
类中。这样,User
类就会拥有混合中定义的所有属性和方法。
除了混合,Ember.js还提供了其他高级功能,如类之间的继承、命名空间和模块化等。这些功能使得 Ember.js成为构建大型应用程序的理想选择。然而,这些功能超出了本文的讨论范围,将在未来的文章中详细介绍。
总之,Ember.js 的对象模型为开发者提供了一个强大、灵活且易于使用的框架。通过依赖跟踪、混合等特性,Ember.js帮助开发者更高效地管理复杂应用程序中的数据和逻辑。尽管 JavaScript标准类没有类似的功能,但通过 Ember.js,开发者可以充分利用这些优势。在接下来的文章中,我们将更深入地探讨 Ember.js的高级功能,帮助您更好地理解和使用这个框架。
Ember JS提供一套自己的类系统,普通的javascript标准类不能自动更新属性值,Ember JS的类会自动触发观察者,自动更新属性值、自动刷新模板上的属性值。如果一个类是Ember JS提供的可以看到前缀命名空间是Ember.Object。 Ember类定义使用extend()方法,创建类实例使用create()方法,可以在方法传入参数,但是参数要以hash列表方式传入。
Ember JS重写了标准JavaScript的数组类Array,并且为了与标准JavaScript类区别命名为Ember.Enumerable(API介绍)
Ember JS还扩展了String属性的特性,提供了一系列特有的处理方法,API介绍。
关于类的命名规则在此不做介绍,自己网上找一份Java的命名规则的教材看看即可。
开始之前先做好准备工作,首先创建一个HTML文件,并引入Ember JS所必须的文件(后面会介绍一种更加简单的方法去搭建EmberJS的项目方法,当然如果你有时间也可以提前去了解,这种方式是使用Ember CLI搭建EmberJS的项目)。
Ember 是你的数码创意剪贴簿:无论是网页、照片、或是 app,它都可尽揽其中,只需将你要保留的图片拖拽进来即可。可以分门别类整理,添加注释反馈,还可以通过各种网络服务来共享你的图片。
Ember 专为 Mac 平台上像你一样的创意人士打造。这一切只是开始,希望你喜欢。
功能特性
· 整理你的想法和设计灵感
拖拽本地或网络图片,使用收藏夹整理,亦可为它们添加标签。智能收藏功能可通过标签或其他元数据来归类整理你的全部资料。
· 订阅你最爱的网站
使用订阅来更直观的浏览网页。可将图片直接存储到你的 Ember 资料库,还可以与好友和同事共享。
· 制作剪贴簿,收集喜爱的设计
Ember 无需运行*即可通过强大的 Safari 和 Chrome 浏览器插件来直接将网页存储到 Ember 资料库。更可以直接从浏览器将图片发送到收藏夹。Ember 使用浏览器宽度设定来进行截取,你看到的就是你截取并保存的。
Ember 内置自适应式浏览器,让你可以在截取网页时自由设定自适应式网页的宽度。“元素选择”模式让你移动鼠标即可截取页面上相应的区域。更配有便利的预设帮你的爱机(iOS 设备)设定浏览器宽度。
Ember Js ——一个用于创建 web 应用的 JavaScript MVC 框架,采用基于字符串的Handlebars模板,支持双向绑定、观察者模式、计算属性(依赖其他属性动态变化)、自动更新模板、路由控制、状态机等。 Ember使用自身扩展的类来创建Ember对象、数组、字符串、函数,提供大量方法与属性用于操作。
每一个Ember应用都使用各自的命名空间,避免冲突。
Ember采用可嵌套的视图层,使视图变得有层次。
· 屏幕截图
使用 Ember 截取屏幕,图像会自动命名并出现在你的资料库中。你可以进行全屏、倒计时全屏、区域和窗口图像截取。
· 直接在图片上涂写反馈
美观的涂画和文字工具让你可以直接在图片上留下反馈意见。裁剪和旋转功能让你的图片尺寸完美、整齐划一。
· 全屏操作
不受干扰地使用 Ember 工作。
· 与好友和同事共享
可以通过电子邮件、信息、AirDrop、Twitter、Facebook、Tumblr、Flickr 和 CloudApp 发送你的图片
· 自动识别 iPhone 和 iPad 截图
资料库整理从此变得简单:只需将你爱机(iOS 设备)内的 PNG 文件拖拽进来,Ember 即可为你自动整理并将它们分类为“手机”和“平板”!
什么是Ember.js?
Ember.js是一个开源的JavaScript客户端框架,用于开发Web应用程序并使用MVC(模型 - 视图 - 控制器)架构模式。在Ember.js中,路由用作模型,handlebar模板作为视图,控制器处理模型中的数据。
历史
Ember.js的原始名称是SproutCore MVC框架。它由Yehuda Katz开发,最初于2011年12月发布。
几年以来Ember以及ember项目群都有了飞速的发展。
暂时来说它和Angular/Backbone//CanJS/React等 [2] 都是当前最流行的MVC框架.
Ember现在有了好几个小伙伴!
EmberCli、Ember以及EmberData。
EmberCli提供命令行工具协助创建Ember 项目。
EmberData为Ember中的数据存储/处理等提供了一整套的解决方案。
· 从 LittleSnapper 导入
Ember 可以导入 LittleSnapper 资料库,并将它们添加到你的 Ember 资料库。
这一切都只是 Ember 的开始,今后还会不断为你带来改进和更多新功能。在 Twitter 上关注 @EmberApp 或在程序内订阅简报来了解 Ember 的最新信息!
若想不打开 Ember 即截取屏幕,请在“偏好设置”中开启“总是启用浏览器扩展”选项。
为什么要使用Ember?
Ember.js是一个开源的JavaScript框架(MIT许可证)。
它是一个灵活的框架,包含快速网页的概念。它允许加快您的应用程序的性能,而不重新加载整个页面。
它具有类似于HTML的handlebars模板库,还嵌入了改变显示的表达式。
与其他Javascript库相比,Ember.js应用程序的大小较小。
完全支持数据绑定,它创建两个属性之间的链接,当一个属性更改时,另一个属性将更新为新值。
特征
Ember.js用于创建可重用和可维护的JavaScript Web应用程序。
Ember.js视图通过使用Handlebars模板创建,并且易于开发前端设计。
它在声明路由资源期间自动确定路由和控制器。
Ember.js消除了样板(必须包含在各个地方的代码段,没有任何改动),并提供标准的应用程序架构。
Ember.js具有HTML和CSS作为开发模型的核心。
路由是Ember.js的核心功能,用于管理URL。
它具有广泛的视图类型支持。
Ember.js使用模板来帮助自动更新模型,如果应用程序的内容更改。