在 Angular 2 Component 中使用第三方 JS 库
本文所有内容以 Angular 2 Quick Start 项目为基础,使用 TypeScript 语言。
如上图,最近遇到一个需求,需要在一个刚启动的 Angular 2 项目中使用 snap.svg 操作页面上的 svg 元素做动画。 我粗略的看了下, snap.svg 的实现似乎并没有遵从什么模块规范,就是常见的提供几个全局变量完事。如果真的耿直的在 Component 中去用的话,会在执行 tsc 编译成 js 文件这一过程中报错。 这是因为 TypeScript 编译器并不知道 snap.svg.js 提供了怎样的接口,所以当 ts 代码中出现了 简单的方法
但是 Angular 2 的其他模块都是动态加载的,这里写死在 index.html 就感觉有点弱逼,所以下一步是配置 SystemJS ,然后用它来加载 snap.svg 。 用上 SystemJS如果你和我这里一样,是以 Angular 2 Quick Start 项目为基础,那么你的 SystemJS 配置文件就是项目文件夹下的 systemjs.config.js ,最简的配置只需要添加一行: var map = { ... 'snap-svg': 'third-party/snap.svg-min.js',// 添加此行即可 }; 你的文件名与路径可能跟我不同,右侧是相对于项目文件夹的相对路径,看情况修改即可。 这样一来,我们就可以和 Angular 2 的其它组件一样动态加载 snap.svg 了。 import { Component } from '@angular/core'; Angular 2 的官方文档里,经常能看到上面这种 import 形式。如前文所述, snap.svg 提供的交互方式是全局变量,那么我们的 import 语句还比上面的更简单,最后是这个样子的: import 'snap-svn'; // 1. 加载 snap.svg declare var Snap: any,// 2. 消除 tsc 编译器报错 mina: any; ... var wave = Snap(this.el.querySelector('#wave')); // 3. 在 Component 中使用 snap.svg wave.animate({ transform: waveOverTrans },1500,mina.backout); ... 前端技术发展的飞快,这阵子突然要捡回来头真心大。。。Happy coding~ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |