Angular2使用jQuery的方法教程


Posted in jQuery onMay 28, 2017

前言

Angular2是以TypeScript语言作为默认编码语言,所以你看到的全部都是.ts结尾的文件。

那什么是TypeScript

首先,它是一个编译型语言;既然是编译型,那么你像重构、导航、智能提醒这种工具属性就可以发挥出来,所以你会发现使用VS CODE来写Angular简直就是绝配。

同时,TypeScript还带来一些ES6/7才有特性,比如let、const、async等,你无须关心ES几。

最霸气,TypeScript还是一个强类型、泛型、多态等一些面向对象编程的东西。

那,为何我们不选它呢?

当然,说了这么多,这跟主题看似无关,但如果你了解这些,才能看到问题的本质。

首先,第一关键点编译型,既然是编译型,那么你在代码中出现的任何变量、类、函数都是必须要存在,否则TA就会在编译时报错。

但,问题来了,现在的JavaScript世界中已经有那么多现成的第三方库,难道说都不能用了?非也!

TypeScript一开始就照顾这些了,所以就会有一个叫.d.ts的声明文件。MS当然不会让你去编写这一个文件,所以就有一个叫http://definitelytyped.org/ 网站,TA汇集了很多现成类库的第三方.d.ts的声明文件提供我们下载。

方法一

当然是使用最正规军了,用命令安装jQuery的声明文件。

npm install -D @types/jquery

以及使用

import * as $ from 'jquery';

$('body').addClass('');

完美的智能提示,如果你在VS CODE下的话。

方法二

对于一些并未提供 .d.ts 声明文件的类库,我们怎么办?那当然只能自己写了。

什么?自己写?很困难吧!很复杂吧!

没那么一回事,声明文件其实是对一些类库接口的描述,以下是我截取一段jQuery声明文件的部分代码

interface JQueryStatic {
 /**
  * 去掉字符串首尾空格
  *
  * @param str 字符串
  * @see {@link https://api.jquery.com/jQuery.trim/}
  */
 trim(str: string): string;
}

declare var $: JQueryStatic;

我还特意译成中文,这里的含量很少,最关键的就是 declare 它就是把一个变量 $ 定义成类型 JQueryStatic (还是个接口)。

这样,TS编译器在遇到 $ 时会去找该类型,并且你的代码里面不能出现 $.time1() 之类的,因为你的接口,只有一个 $.trim()

等等,jQuery几十个接口,我都要这么写吗?

NO!!!当然不是,除非你想写一个又漂亮、又好看、又是中文、又是完美智能提示的声明文件的话。

否则,你那就拿 any 类型吧,TA就是万能货。你不需要写一个很复杂的声明文件,只需要:

declare var $: any;

简单粗暴有效!

结论

哎~其实是因群里每天都可以看到一句【怎么使用jQuery】;虽然最简单的结果只需要一句话 declare var $: any;,但我还是??锇舌陆?艘淮蠖眩?刹话亚耙蚝蠊??宄??曳?。

另,此解只是抛砖引玉,在很多类库中都是通用的办法。但我建议还是找一些Angular2类库来使用,因为如何更有效的管理JavaScript运行,是一门学问。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家三水点靠木的支持。

jQuery 相关文章推荐
jQuery输入框密码的显示隐藏【代码分享】
Apr 29 jQuery
jQuery使用JSONP实现跨域获取数据的三种方法详解
May 04 jQuery
jQuery表单验证之密码确认
May 22 jQuery
jQuery、layer实现弹出层的打开、关闭功能
Jun 28 jQuery
详解jQuery中关于Ajax的几个常用的函数
Jul 17 jQuery
jQuery实现拼图小游戏(实例讲解)
Jul 24 jQuery
360提示[高危]使用存在漏洞的JQuery版本的解决方法
Oct 27 jQuery
jQuery读取本地的json文件(实例讲解)
Oct 31 jQuery
jQuery利用FormData上传文件实现批量上传
Dec 04 jQuery
使用jQuery动态设置单选框的选中效果
Dec 06 jQuery
如何用webpack4.0撸单页/多页脚手架 (jquery, react, vue, typescript)
Jun 18 jQuery
jquery将json转为数据字典的实例代码
Oct 11 jQuery
Jquery中attr与prop的区别详解
May 27 #jQuery
jQuery插件imgAreaSelect基础讲解
May 26 #jQuery
jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能实例讲解一
May 26 #jQuery
jQuery导航条固定定位效果实例代码
May 26 #jQuery
bootstrap+jQuery实现的动态进度条功能示例
May 25 #jQuery
jQuery滚动插件scrollable.js用法分析
May 25 #jQuery
jQuery Masonry瀑布流布局神器使用详解
May 25 #jQuery
You might like
一个阿拉伯数字转中文数字的函数
2006/10/09 PHP
基于php验证码函数的使用示例
2013/05/03 PHP
php class中public,private,protected的区别以及实例分析
2013/06/18 PHP
php中base64_decode与base64_encode加密解密函数实例
2014/11/24 PHP
PHP递归的三种常用方式
2019/02/28 PHP
JScript中的"this"关键字使用方式补充材料
2007/03/08 Javascript
JS继承 笔记
2011/07/13 Javascript
JavaScript中的值是按值传递还是按引用传递问题探讨
2015/01/30 Javascript
jquery插件unobtrusive实现片段式加载
2015/06/15 Javascript
JS实现仿新浪黄色经典滑动门效果代码
2015/09/27 Javascript
jQuery拖动布局其结果保存到数据库
2015/10/09 Javascript
详解JavaScript的AngularJS框架中的作用域与数据绑定
2016/03/04 Javascript
jQuery leonaScroll 1.1 自定义滚动条插件(推荐)
2016/09/17 Javascript
JavaScript变量作用域_动力节点Java学院整理
2017/06/27 Javascript
BetterScroll 在移动端滚动场景的应用
2017/09/18 Javascript
select2 ajax 设置默认值,初始值的方法
2018/08/09 Javascript
vue动态改变背景图片demo分享
2018/09/13 Javascript
vue-cli项目中使用echarts图表实例
2018/10/22 Javascript
Vue 实现登录界面验证码功能
2020/01/03 Javascript
Vue点击切换Class变化,实现Active当前样式操作
2020/07/17 Javascript
python3使用pyqt5制作一个超简单浏览器的实例
2017/10/19 Python
django实现用户登陆功能详解
2017/12/11 Python
tornado 多进程模式解析
2018/01/15 Python
python 3.7.0 安装配置方法图文教程
2018/08/27 Python
详解Django-channels 实现WebSocket实例
2019/08/22 Python
Python实现栈和队列的简单操作方法示例
2019/11/29 Python
解决pytorch DataLoader num_workers出现的问题
2020/01/14 Python
Python3爬虫ChromeDriver的安装实例
2021/02/06 Python
Vita Fede官网:在意大利手工制作,在纽约市设计
2019/10/25 全球购物
电气工程及其自动化学生实习自我鉴定
2013/09/19 职场文书
校庆活动策划方案
2014/06/05 职场文书
创先争优承诺书
2015/01/20 职场文书
留学推荐信英文范文
2015/03/26 职场文书
2015年车间管理工作总结
2015/07/23 职场文书
漫画「你在春天醒来」第10卷封面公开
2022/03/21 日漫
Python Django / Flask如何使用Elasticsearch
2022/04/19 Python