使用Angular2如何整合插件(详细教程)
本文给大家详细分析了Angular2整合其他插件的方法,有兴趣的朋友学习下。前言:现在有很多朋友在接触Angular2的时候,总是不可避免的会使用一些其他的第3方的插件,而这些插件可能都是基于jQuery的,而且也没有对应的angular2的版本,这里我就来讲解一下,在这种情况下,如何整合第3方的jQuery插件。我们以Angular2整合zTree为例来说明整合的思路及过程。zTree官方网站:http://www.treejs.cn/v3/main.php#_zTreeInfo1.一般我在想要将像zTree这种插件集成进来的时候,我会先直接去看zTree它们的在线例子,比如说这个例子:https://github.com/zTree/zTree_v3/blob/master/demo/cn/super/metro.html效果图是这样的:2.看到这个效果之后,我们再来看这个例子的代码:关键代码在这里:$(document).ready(function(){ $.fn.zTree.init($("#treeDemo"), setting, zNodes); });这段代码中使用了jQuery,对吧,那我们要集成zTree进来的话,就必须先把jQuery引入进来。那我们先不管怎么来集成zTree,我们先来解决如何将jQuery引入进来的问题:3.引入jQuery到angular2项目中,当然,如果你使用的插件没有依赖jQuery的话可以跳过这个步骤,不过一般第3方插件都依赖它,对吧。引入jQuery的话,就比较简单,只要在index.html文件中引入进来就可以了:引入进来之后,我们需要测试下,jQuery是否成功引入进来。我们使用ng g c demo命令生成一个组件来测试jQuery是否成功引入:![输入图片说明](https://static.oschina.net/uploads/img/201703/26202750_1UeL.png "在这里输入图片标题")你会看到,angular-cli已经帮我们生成了必要的文件,然后我们打开demo.component.ts文件,在import语句后面添加以下内容:declare var $ : any;import { Component, OnInit } from '@angular/core';declare var $ : any;@Component({selector: 'app-demo',templateUrl: './demo.component.html',styleUrls: ['./demo.component.css']})export class DemoComponent implements OnInit {constructor() { }ngOnInit() {console.log($);}}上面代码添加完成之后,查看浏览器的控制台输出:![输入图片说明](https://static.oschina.net/uploads/img/201703/26203534_TLtD.png "在这里输入图片标题")会发现输出的就是我们平时使用到的jquery对象$。到此,我们就算成功引入jQuery到项目中了。4.将zTree的js库和css库引入到项目中,在index.html文件中我们添加以下代码: "这样之后,我们就可以测试zTree是否正常引入进来了,我们在demo.component.ts文件中的ngOnInit方法中添加以下代码:"console.log($.fn.zTree);"查看控制台会发现,以下输出:![输入图片说明](https://static.oschina.net/uploads/img/201703/26204017_4TLk.png "在这里输入图片标题")在输出的内容我们可以看到,有zTree用来初始化的init方法,这样我们就可以真正的来写一个zTree的例子了。5.zTree例子我们通过查看zTree的初始化代码,会发现,需要3个参数,其中第一个参数是一个jQuery的对象,第二个参数是zTree的配置对象,具体可以查看zTree的官方文档来看有哪些参数可以设置(http://www.treejs.cn/v3/api.php),第三个参数是用来出事zTree节点的数据。这里我们直接使用zTree中demo的代码直接复制到demo.component.ts文件中:import { Component, OnInit } from '@angular/core';declare var $ : any;@Component({ selector: 'app-demo', templateUrl: './demo.component.html', styleUrls: ['./demo.component.css']})export class DemoComponent implements OnInit {setting = { data: { simpleData: { enable: true } } }; zNodes = [ { id: 1, pId: 0, name: "父节点1 - 展开", open: true }, { id: 11, pId: 1, name: "父节点11 - 折叠" }, { id: 111, pId: 11, name: "叶子节点111" }, { id: 112, pId: 11, name: "叶子节点112" }, { id: 113, pId: 11, name: "叶子节点113" }, { id: 114, pId: 11, name: "叶子节点114" }, { id: 12, pId: 1, name: "父节点12 - 折叠" }, { id: 121, pId: 12, name: "叶子节点121" }, { id: 122, pId: 12, name: "叶子节点122" }, { id: 123, pId: 12, name: "叶子节点123" }, { id: 124, pId: 12, name: "叶子节点124" }, { id: 13, pId: 1, name: "父节点13 - 没有子节点", isParent: true }, { id: 2, pId: 0, name: "父节点2 - 折叠" }, { id: 21, pId: 2, name: "父节点21 - 展开", open: true }, { id: 211, pId: 21, name: "叶子节点211" }, { id: 212, pId: 21, name: "叶子节点212" }, { id: 213, pId: 21, name: "叶子节点213" }, { id: 214, pId: 21, name: "叶子节点214" }, { id: 22, pId: 2, name: "父节点22 - 折叠" }, { id: 221, pId: 22, name: "叶子节点221" }, { id: 222, pId: 22, name: "叶子节点222" }, { id: 223, pId: 22, name: "叶子节点223" }, { id: 224, pId: 22, name: "叶子节点224" }, { id: 23, pId: 2, name: "父节点23 - 折叠" }, { id: 231, pId: 23, name: "叶子节点231" }, { id: 232, pId: 23, name: "叶子节点232" }, { id: 233, pId: 23, name: "叶子节点233" }, { id: 234, pId: 23, name: "叶子节点234" }, { id: 3, pId: 0, name: "父节点3 - 没有子节点", isParent: true } ]; constructor() { } ngOnInit() { $.fn.zTree($("#ztree"),this.setting,this.zNodes); }}看上面的代码中, $.fn.zTree($("#ztree"),this.setting,this.zNodes);这里我们用到了jQuery的id选择器,那么我们需要在模板文件demo.component.html中添加一个id为ztree的ul元素至于为什么是ul,可以看zTree的文档,当然你也可以试试别的元素,看能不能实现。上面是我整理给大家的,希望今后会对大家有帮助。相关文章:在微信中如何使用js唤起App?在node.js中如何使用http模块Javascript调试命令有哪些?详细解读在nodeJs中有关文件系统与流在Node.js中子进程有哪些应用场景在node中有关child_process模块(详细教程)
如何使用jQuery与Angular2
JQuery是继prototype之后又一个优秀的Javascript库。它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+),jQuery2.0及后续版本将不再支持IE6/7/8浏览器.
AngularJS诞生于2009年,由Misko Hevery 等人创建,后为Google所收购。是一款优秀的前端JS框架,已经被用于Google的多款产品当中。AngularJS有着诸多特性,最为核心的是:MVVM、模块化、自动化双向数据绑定、语义化标签、依赖注入等等。
两者在不同的场合下使用最佳
1、DOM不是第一优先级的时候
jQuery在DOM上做得很好,可以根据用户交互,添加修改DOM元素。而AngularJS更关注数据展示本身,更新时会尽可能减少对DOM的破坏和重构。当然,整个操作不可能完全的避免DOM,但使用AngularJS就比jQuery对于DOM的工作少多了。
2、考虑到效率的问题
AngularJS,尽管它的学习曲线没有那么平缓,但它强调开发效率,AngularJS中很多特点的设计都是出于提高开发者效率的目的。比如在框架内它就支持单元测试,这样的设计可以让程序员更集中精力在写出可靠的代码上,简化了测试上的麻烦。另外,降低模块间的耦合度也有利于程序员梳理项目逻辑,可以更专注于“为什么”,而不是“怎么做”。这样带来的好处就是代码会更简洁和易读,有利于调试和维护。
3、考虑到声明式语言的优势
jQuery的一个常见问题就是它是命令式编程,就意味着你要告诉计算机如何达成某项目的,其实你想要的就是程序运行的结果。而声明式编程则转移了重点,它只是告诉机器你想要的结果,让机器自己实现这个结果。JavaScript就是一种命令式语言,但HTML,和它指导的AngularJS就是声明式的,只需要告诉计算机你需要的展现形式,至于细节就由机器处理了。这样,完成一个任务的代码就大幅缩减了,代码质量也更高了。
4、综上所述,AngularJS和jQuery之间的比较就如同苹果和橘子的比较,两者是出于不同的目的被创建的,解决的也是不同的问题。当一个项目的重点是数据展示和执行,而不是分析,此时可能AngularJS就会更胜一筹。对于框架的选择,你要考虑到很多因素,需要整体的构思。AngularJS总体上还是一个不错的选择,可以提高程序员的效率,相对减少Web开发中的维护成本。