将您的应用程序升级到Angular 1.5组件及以后!
>本文由Dan Prince和Michaela Lehr进行了同行评审。感谢SitePoint所有的同行评审员制作SitePoint内容的最佳状态! >随着AngularJS的每个新版本,开发团队都试图弥合AngularJs 1.x和2之间的差距。随着AngularJS 1.5的释放,开发人员将能够在结构上编写类似于AngularJS 2.0。
的应用程序。 在本教程中,我们将在AngularJS 1.4中创建一个网格指令。然后,我们将逐步升级到1.5,然后查看如何将其转换为使用2.0版。钥匙要点
从AngularJS 1.4开始:首先在AngularJs 1.4中创建一个简单的网格指令以显示JSON数组,并利用Bootstrap进行布局设计。
升级到AngularJS 1.5:通过更换脚本参考并利用新组件指令助手方法,将您的AngularJS 1.4指令转换为1.5,这简化了配置并准备将来升级。 AngularJS 1.5中的组件优点:AngularJs 1.5中的组件提供句法糖,而不是指令,提供默认配置和简化的方法,这对于过渡到AngularJS 2.0。- >过渡到AngularJS 2.0:由于其与1.x版本的架构差异,需要从划痕开始时从头开始时从头开始,需要其他库和新的设置。
- > 使用AngularJs 2.0组件:使用Typescript在AngularJS 2.0中实现组件,可增强代码的可维护性和可检验性,并承认AngularJS 2.0是基于组件的,并且支持高级功能,例如层次依赖性注入和动态载荷。
- 入门
- >让我们从创建一个称为AngularMigrateApp的项目目录。在此文件夹中,创建一个称为index.html的HTML页面。 这是页面的外观:
- 以及角框架,我们还将利用引导程序设计指令布局。我们直接从CDN中加入了这两个文件。
- 创建网格指令
>让我们创建一个简单的网格指令以显示JSON数组。我们将首先创建一个AngularJS模块。
>我们定义了一个名为“雇员”的常数,该常数包含一个示例数据的数组。然后,我们将此数组注入homectrl,并在控制器的范围上提供。
<span><span><!DOCTYPE html></span> </span><span><span><span><html</span> lang<span>="en"</span> ng-app<span>="myApp"</span> class<span>="no-js"</span>></span> </span><span><span><span><head</span>></span> </span> <span><span><span><title</span>></span>My AngularJS App<span><span></title</span>></span> </span> <span><span><span><link</span> rel<span>="stylesheet"</span> href<span>="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"</span>></span> </span><span><span><span></head</span>></span> </span><span><span><span><body</span>></span> </span> <span><span><span><script</span> src<span>="https://code.angularjs.org/1.4.10/angular.js"</span>></span><span><span></script</span>></span> </span><span><span><span></body</span>></span> </span><span><span><span></html</span>></span> </span>
我们想通过标签名称使用该指令,例如:
>>因此,我们将添加限制选项以指定:
angular<span>.module('myApp', []) </span> <span>.constant('employees', [{ </span> <span>firstName: 'Rima', </span> <span>lastName: 'George', </span> <span>location: 'San Francisco' </span> <span>}, { </span> <span>firstName: 'Shaun', </span> <span>lastName: 'John', </span> <span>location: 'Germany' </span> <span>}, { </span> <span>firstName: 'Rahul', </span> <span>lastName: 'Kurup', </span> <span>location: 'Bangalore' </span> <span>}, { </span> <span>firstName: 'Samson', </span> <span>lastName: 'Davis', </span> <span>location: 'Canada' </span> <span>}, { </span> <span>firstName: 'Shilpa', </span> <span>lastName: 'Agarwal', </span> <span>location: 'Noida' </span> <span>}]) </span> <span>.controller('HomeCtrl', ['$scope', 'employees', function($scope<span>, employees</span>) { </span> $scope<span>.employees = employees; </span> <span>}]) </span>
接下来,我们要将员工数据从视图传递到指令。因此,我们将其添加为绑定:
<span><span><!DOCTYPE html></span> </span><span><span><span><html</span> lang<span>="en"</span> ng-app<span>="myApp"</span> class<span>="no-js"</span>></span> </span><span><span><span><head</span>></span> </span> <span><span><span><title</span>></span>My AngularJS App<span><span></title</span>></span> </span> <span><span><span><link</span> rel<span>="stylesheet"</span> href<span>="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"</span>></span> </span><span><span><span></head</span>></span> </span><span><span><span><body</span>></span> </span> <span><span><span><script</span> src<span>="https://code.angularjs.org/1.4.10/angular.js"</span>></span><span><span></script</span>></span> </span><span><span><span></body</span>></span> </span><span><span><span></html</span>></span> </span>
>现在,我们可以将员工数据作为属性传递给指令:
angular<span>.module('myApp', []) </span> <span>.constant('employees', [{ </span> <span>firstName: 'Rima', </span> <span>lastName: 'George', </span> <span>location: 'San Francisco' </span> <span>}, { </span> <span>firstName: 'Shaun', </span> <span>lastName: 'John', </span> <span>location: 'Germany' </span> <span>}, { </span> <span>firstName: 'Rahul', </span> <span>lastName: 'Kurup', </span> <span>location: 'Bangalore' </span> <span>}, { </span> <span>firstName: 'Samson', </span> <span>lastName: 'Davis', </span> <span>location: 'Canada' </span> <span>}, { </span> <span>firstName: 'Shilpa', </span> <span>lastName: 'Agarwal', </span> <span>location: 'Noida' </span> <span>}]) </span> <span>.controller('HomeCtrl', ['$scope', 'employees', function($scope<span>, employees</span>) { </span> $scope<span>.employees = employees; </span> <span>}]) </span>
>在index.html的主体中添加以下HTML模板脚本。
<span>.directive('myGrid', function() { </span> <span>return { </span> <span>} </span><span>}) </span>
>让我们在index.html内使用myGrid指令。添加以下代码:
<span><span><span><my-grid</span>></span><span><span></my-grid</span>></span> </span>
>我们已经指定了HOMECTRL控制器,并在内部使用了我们的指令。将更改保存并浏览到index.html页面。这是行动中数据网格的演示:
>
>请参阅codepen上的sitepoint(@sitepoint)的笔Angularjs 1.4演示。<span>.directive('myGrid', function() { </span> <span>return { </span> <span>restrict: 'E' </span> <span>} </span><span>}) </span>
>升级到1.5
到目前为止,我们已经使用1.4版创建了一个AngularJS指令,并且运行良好。现在,让我们尝试使用AngularJS 1.5使用相同的代码,看看是否有任何事情破裂。>让我们用1.5版的CDN链接替换现有脚本引用。如果您尝试刷新页面,则所有内容都应该继续正常工作。随着1.x行的新版本,该框架正在更靠近AngularJS 2.0使用组件的工作方式,我们可以在代码中利用它,从而使最终过渡到版本2.0更容易。 在Angularjs 1.5中,组件是指令的句法糖,可照顾默认值并具有更简单的配置。他们应该被替换为替代品,尤其是对于那些希望将来升级的人。
与AngularJS合作时,开发人员通常倾向于使用基于控制器的方法,但这会随着应用程序开始增长而造成许多问题。基于控制器和基于视图的方法会导致重复的NG-Controller/View,但是基于组件的方法通过创建可以组成较大组件而无需重复代码的组件来解决问题。>让我们尝试使用新的组件指令方法并修改我们现有的代码。我们将首先创建一个组件:
>与指示方法(采用函数)不同,组件方法采用对象。我们将通过不同模板中的指令中的相同对象。这是HTML模板:
这是修改的组件代码:
>在上述代码中可以看到,我们传递了我们旧指令中的所有选项。
在index.html页面中创建一个称为mycomp的组件。
<span>.directive('myGrid', function() { </span> <span>return { </span> <span>restrict: 'E', </span> <span>scope: { </span> <span>info: '=info' </span> <span>} </span> <span>} </span><span>}) </span>
保存更改并刷新页面,您应该能够看到数据未显示,但浏览器控制台中也没有错误。
<span><span><span><my-grid</span> info<span>="employees"</span>></span><span><span></my-grid</span>></span> </span>
如果我们查看官方站点的组件和指令之间的比较图表,我们可以看到范围始终是隔离的组件。
这是修改的代码:
>
<span><span><!DOCTYPE html></span> </span><span><span><span><html</span> lang<span>="en"</span> ng-app<span>="myApp"</span> class<span>="no-js"</span>></span> </span><span><span><span><head</span>></span> </span> <span><span><span><title</span>></span>My AngularJS App<span><span></title</span>></span> </span> <span><span><span><link</span> rel<span>="stylesheet"</span> href<span>="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"</span>></span> </span><span><span><span></head</span>></span> </span><span><span><span><body</span>></span> </span> <span><span><span><script</span> src<span>="https://code.angularjs.org/1.4.10/angular.js"</span>></span><span><span></script</span>></span> </span><span><span><span></body</span>></span> </span><span><span><span></html</span>></span> </span>
>
angular<span>.module('myApp', []) </span> <span>.constant('employees', [{ </span> <span>firstName: 'Rima', </span> <span>lastName: 'George', </span> <span>location: 'San Francisco' </span> <span>}, { </span> <span>firstName: 'Shaun', </span> <span>lastName: 'John', </span> <span>location: 'Germany' </span> <span>}, { </span> <span>firstName: 'Rahul', </span> <span>lastName: 'Kurup', </span> <span>location: 'Bangalore' </span> <span>}, { </span> <span>firstName: 'Samson', </span> <span>lastName: 'Davis', </span> <span>location: 'Canada' </span> <span>}, { </span> <span>firstName: 'Shilpa', </span> <span>lastName: 'Agarwal', </span> <span>location: 'Noida' </span> <span>}]) </span> <span>.controller('HomeCtrl', ['$scope', 'employees', function($scope<span>, employees</span>) { </span> $scope<span>.employees = employees; </span> <span>}]) </span>
>请参阅codepen上的sitepoint(@sitepoint)的笔Angularjs 1.5演示。
>升级到2.0
注意:AngularJS 2.0仍在beta中。我们使用的版本是Angular2.0.0-Beta.8。
>让我们用CDN中的2.0版链接替换我们的应用中的AngularJS的现有版本,看看是否有任何破坏:
<span>.directive('myGrid', function() { </span> <span>return { </span> <span>} </span><span>}) </span>
>
如您所见,我们的组件代码与Angular 2.0!
>可以通过包含单个脚本标签的框架来开始使用Angular 1.X,但Angular 2.0的情况已更改。我们需要其他几个库才能运行。尽管可以通过脚本标签分别加载它们,但可以将它们捆绑在一起,以作为生产构建过程的一部分。
>>如果我们查看官方快速启动指南,我们可以看到我们需要其他一些库和开发依赖性才能开始使用2.0。
>让我们创建一个称为angularjs2.0component的文件夹,然后创建一个package.json文件,如下所示
上面的文件显示了AngularJS 2.0应用程序所需的所有依赖项。保存更改并使用npm安装所需的依赖项:
>创建一个名为app的子文件夹,并在内部创建一个名为app.component.js的文件,并具有以下代码:
<span><span><span><my-grid</span>></span><span><span></my-grid</span>></span> </span>
在上面的代码中,我们正在使用Angular Core命名空间NG.CORE创建一个组件。我们已经将组件的选择器定义为my-comp。我们使用相同的html,grid.html作为我们应用的模板。我们已经在组件的构造函数中定义了我们的员工对象。
<span>.directive('myGrid', function() { </span> <span>return { </span> <span>restrict: 'E' </span> <span>} </span><span>}) </span>
<span><span><!DOCTYPE html></span> </span><span><span><span><html</span> lang<span>="en"</span> ng-app<span>="myApp"</span> class<span>="no-js"</span>></span> </span><span><span><span><head</span>></span> </span> <span><span><span><title</span>></span>My AngularJS App<span><span></title</span>></span> </span> <span><span><span><link</span> rel<span>="stylesheet"</span> href<span>="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"</span>></span> </span><span><span><span></head</span>></span> </span><span><span><span><body</span>></span> </span> <span><span><span><script</span> src<span>="https://code.angularjs.org/1.4.10/angular.js"</span>></span><span><span></script</span>></span> </span><span><span><span></body</span>></span> </span><span><span><span></html</span>></span> </span>
这告诉Angular加载我们刚刚创建的组件。
下一步,创建一个名为index.html的文件在应用程序文件夹之外,然后粘贴以下代码:
,但数据仍未显示!
>将其包裹起来 >组件是AngularJS 2.0的主要组成部分,可以说它基于组件的框架是正确的。在1.x行的每个新版本中,我们都在更靠近使用2.0版的应用程序开发应用程序。 >更深入地研究迁移您的AngularJS应用程序,请考虑阅读官方迁移指南。 Angular 2代码也可以用打字稿和DART编写,如果您有兴趣,我建议您分别阅读AngularJS 2的官方指南,分别是Typescript或Dart。
>从AngularJS升级到Angular时,我可能面临什么挑战? 我如何测试我的角度应用程序? Angular提供了一个称为测试台的测试框架,哪个允许您为组件创建动态测试环境。您还可以使用茉莉(Jasmine)(行为驱动的开发框架来测试JavaScript代码,以及测试跑步者Karma。 Angular还支持使用量角器的端到端测试。 有许多可用于学习角度的资源,包括官方的角度文档,在线教程,在线教程,书籍和课程。 Angular社区也非常活跃和支持,有许多论坛,博客和stackoverflow问题可供参考。angular<span>.module('myApp', [])
</span> <span>.constant('employees', [{
</span> <span>firstName: 'Rima',
</span> <span>lastName: 'George',
</span> <span>location: 'San Francisco'
</span> <span>}, {
</span> <span>firstName: 'Shaun',
</span> <span>lastName: 'John',
</span> <span>location: 'Germany'
</span> <span>}, {
</span> <span>firstName: 'Rahul',
</span> <span>lastName: 'Kurup',
</span> <span>location: 'Bangalore'
</span> <span>}, {
</span> <span>firstName: 'Samson',
</span> <span>lastName: 'Davis',
</span> <span>location: 'Canada'
</span> <span>}, {
</span> <span>firstName: 'Shilpa',
</span> <span>lastName: 'Agarwal',
</span> <span>location: 'Noida'
</span> <span>}])
</span>
<span>.controller('HomeCtrl', ['$scope', 'employees', function($scope<span>, employees</span>) {
</span> $scope<span>.employees = employees;
</span> <span>}])
</span>
<span>.directive('myGrid', function() {
</span> <span>return {
</span> <span>}
</span><span>})
</span>
经常询问有关升级到角度组件的问题(常见问题解答)
>
> typescript在Angular中的作用是什么?编译到普通的JavaScript。在Angular中,Typescript提供了静态键入,接口和类,这使代码更可维护和可测试。 TypeScript还提供了使用自动完成,类型检查和源地图支持的更好的工具,从而改善了开发体验。>角度支持移动设备如何通过提供响应迅速的布局和触摸支持来支持移动设备。它还为移动设备(例如懒惰加载和异步模板编译)提供了性能优化。 Angular还支持渐进式Web应用程序(PWA),可以安装在移动设备上并离线工作。
> >有哪些资源可用于学习角度?
以上是将您的应用程序升级到Angular 1.5组件及以后!的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

JavaScript是现代Web开发的基石,它的主要功能包括事件驱动编程、动态内容生成和异步编程。1)事件驱动编程允许网页根据用户操作动态变化。2)动态内容生成使得页面内容可以根据条件调整。3)异步编程确保用户界面不被阻塞。JavaScript广泛应用于网页交互、单页面应用和服务器端开发,极大地提升了用户体验和跨平台开发的灵活性。

JavaScript的最新趋势包括TypeScript的崛起、现代框架和库的流行以及WebAssembly的应用。未来前景涵盖更强大的类型系统、服务器端JavaScript的发展、人工智能和机器学习的扩展以及物联网和边缘计算的潜力。

不同JavaScript引擎在解析和执行JavaScript代码时,效果会有所不同,因为每个引擎的实现原理和优化策略各有差异。1.词法分析:将源码转换为词法单元。2.语法分析:生成抽象语法树。3.优化和编译:通过JIT编译器生成机器码。4.执行:运行机器码。V8引擎通过即时编译和隐藏类优化,SpiderMonkey使用类型推断系统,导致在相同代码上的性能表现不同。

JavaScript是现代Web开发的核心语言,因其多样性和灵活性而广泛应用。1)前端开发:通过DOM操作和现代框架(如React、Vue.js、Angular)构建动态网页和单页面应用。2)服务器端开发:Node.js利用非阻塞I/O模型处理高并发和实时应用。3)移动和桌面应用开发:通过ReactNative和Electron实现跨平台开发,提高开发效率。

本文展示了与许可证确保的后端的前端集成,并使用Next.js构建功能性Edtech SaaS应用程序。 前端获取用户权限以控制UI的可见性并确保API要求遵守角色库

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

从C/C 转向JavaScript需要适应动态类型、垃圾回收和异步编程等特点。1)C/C 是静态类型语言,需手动管理内存,而JavaScript是动态类型,垃圾回收自动处理。2)C/C 需编译成机器码,JavaScript则为解释型语言。3)JavaScript引入闭包、原型链和Promise等概念,增强了灵活性和异步编程能力。

我使用您的日常技术工具构建了功能性的多租户SaaS应用程序(一个Edtech应用程序),您可以做同样的事情。 首先,什么是多租户SaaS应用程序? 多租户SaaS应用程序可让您从唱歌中为多个客户提供服务
