>  기사  >  웹 프론트엔드  >  Anglejs에서 타사 라이브러리를 사용하는 방법은 무엇입니까? Anglejs에서 타사 라이브러리를 사용하는 방법에 대한 자세한 설명

Anglejs에서 타사 라이브러리를 사용하는 방법은 무엇입니까? Anglejs에서 타사 라이브러리를 사용하는 방법에 대한 자세한 설명

寻∝梦
寻∝梦원래의
2018-09-07 16:36:261804검색

이 글에서는 angularjs타사 라이브러리 사용 방법을 소개합니다. 어떤 타사 라이브러리를 Anglejs에서 사용할 수 있나요?

Angular의 구성 요소와 모듈은 기존의 다양한 타사 라이브러리(예: lodash, moment 등) 사용과 약간 호환되지 않는 것 같습니다. 이는 큰 문제입니다. 그 이유는 TypeScript로 인한 아티팩트 때문입니다. 프런트엔드의 세 가지 요소는 실제로 동일합니다. 어떤 프런트엔드 프레임워크를 사용하든 이러한 타사 라이브러리를 사용할 수 있습니다. lodashmoment 等)使用上有点格格不入,这很大的原因是 TypeScript 造成的假象。三足鼎立的前端其实都是雷同的,不管是哪种前端框架都可以使用到这些第三方类库。

以下我将从另一个视角解释 Angular 如何使用第三方类库的一种经验做法。

一、写在前面

在开始之前,需要先了解一下 TypeScript 模块系统 ——模块是指在其自身作用域里执行,而不是在全局作用域里;模块间是依靠 exportimport 建立关系。编译器在编译过程中,也是依赖这种关系来定位需要编译的文件。

TypeScript 依然还是以 JavaScript 文件的形式发布类库,这会导致类型无法表述,需要配合声明文件对其进行类型描述;因此声明文件成了类库一个必不可少的组成部分。

二、分类

Angular 使用 TypeScript 语言开发,诚如上一小节讲来说,要想让一个类库被运用,要件是有没有声明文件

有声明文件

要分清类库是否有声明文件 *.d.ts,可以从两个方面来确认这件事:

1、类库自带

从 Npm 安装一个依赖包后,可以直接检查其库的 package.json 是否包含 typings 节点,例如 moment

"typings": "./moment.d.ts"

2、TypeSearch检索

TypeScript 提供了一个叫 TypeSearch 网站,可以直接输入关键词检查是否包含该类库的声明文件。

例如 lodash 可以在列表中点击会跳转至 npm 网站,并且会看到这样的一个命令:

npm install --save @types/lodash

无声明文件

这类情况还蛮常见,例如早一点时间 G2 就没有声明文件,这种情况下只能自行编写声明文件。

Angular Cli 创建的项目会包含一个 src/typings.d.ts 声明文件,它会自动包含在全局声明定义中,而把这些类库的声明信息写在这里面再好不过。

一般而言自己很难对一个类库写一个完整的声明文件,这对于成本来说太不合算,因此往往都是只对部分全局对象做一个 any (表示忽略该静态类型检查)亦可,例如:

// src/typings.d.ts
declare var G2: any;

三、如何使用?

声明文件是纽带,依然以这种方式来划分如何使用。

对于有声明文件,无需额外做什么,只需在需要模块的地方使用 import 来导入即可,例如:

import * as moment from 'moment';

moment(); // 当前时间

无声明文件

重要来看无声明文件时怎么做,前面说到使用 any 来表示忽略静态类型检查,意味者无法享受声明文件带来的智能提示快感。

G2 ,我们可以在项目的任意位置直接使用它,但也仅仅只能识别 G2 变量,而实例的方法或属性是不可知的。

// app.component.ts

const g2 = new G2();
g2. // 输入 `.` 后是不会有任何方法或属性

除此之外 TypeScript 编译过程中也不会对 G2 做任何类型检查,G2 是否真的存在只能由自己把握。对于 Angular 而言,是需要额外在 .angular-cli.jsonscripts 节点上明确加载这些模块。(想看更多就到PHP中文网AngularJS开发手册中学习)

// .angular-cli.json
"scripts": [
    "../node_modules/@antv/g2/dist/g2.min.js"
]

TypeScript 编译后依然还是 JavaScript 代码,假如不手动加载 G2 相关 JavaScript 文件,自然在运行过程中会提供未找到 G2 的错误。

总结

从 TypeScript 的视角来看如何使用第三方类库,会有不同的感觉,只是一个简单的非靠谱但有效的描述。希望懂得多的人手下留情。

这里无意黑 G2 的意思,现 G2
아래에서는 Angular가 타사 라이브러리를 사용하는 방법을 또 다른 관점에서 설명하겠습니다.

1. 앞에 작성

시작하기 전에 TypeScript 모듈 시스템을 이해해야 합니다. 모듈은 전역 범위가 아닌 자체 범위에서 실행됩니다. code>와 import는 관계를 설정합니다. 컴파일 프로세스 중에 컴파일러는 이 관계를 사용하여 컴파일해야 하는 파일을 찾습니다. TypeScript는 여전히 JavaScript 파일 형식으로 클래스 라이브러리를 게시하므로 유형을 표현할 수 없으며 유형을 설명하기 위해 선언 파일이 필요하므로 선언 파일은 클래스 라이브러리에 없어서는 안될 부분이 되었습니다.

2. 분류

Angular는 이전 섹션에서 언급했듯이 클래스 라이브러리를 사용하기 위해서는 선언 파일이 있는지 여부가 필수입니다. . 🎜

선언 파일이 있습니다

🎜클래스 라이브러리에 선언 파일 *.d.ts가 있는지 구별하려면 다음 두 가지 측면에서 이를 확인할 수 있습니다. 🎜🎜 1, 클래스 라이브러리가 함께 제공됩니다🎜🎜Npm에서 종속 패키지를 설치한 후 해당 라이브러리의 package.json입력이 포함되어 있는지 직접 확인할 수 있습니다. moment와 같은 노드:🎜rrreee🎜2. TypeSearch 검색🎜🎜TypeScript는 키워드를 직접 입력하여 해당 선언 파일이 있는지 확인할 수 있는 TypeSearch라는 웹사이트를 제공합니다. 클래스 라이브러리가 포함되어 있습니다. 🎜🎜예를 들어 목록에서 lodash를 클릭하면 npm 웹사이트로 이동하고 다음과 같은 명령이 표시됩니다. 🎜rrreee

선언 파일 없음

🎜이런 상황은 꽤 흔한 일입니다. 예를 들어 이전에 G2에는 선언 파일이 없었습니다. 이 경우 선언 파일을 직접 작성하면 됩니다. 🎜🎜Angular Cli로 생성된 프로젝트에는 전역 선언 정의에 자동으로 포함되는 src/typings.d.ts 선언 파일이 포함되며 이러한 클래스 라이브러리 이곳은 면책조항 정보를 입력할 수 있는 좋은 장소입니다. 🎜🎜일반적으로 클래스 라이브러리에 대한 완전한 선언 파일을 작성하는 것은 어렵습니다. 이는 비용 효율적이므로 일부 전역 개체에 대해서는 any일 경우가 많습니다(정적을 무시한다는 의미). 유형 확인)을 사용할 수도 있습니다. 예: 🎜rrreee

3. 어떻게 사용하나요?

🎜스테이트 파일은 링크인데, 사용법은 아직 이렇게 나누어져 있습니다. 🎜🎜선언 파일의 경우 추가 작업을 수행할 필요가 없습니다. 모듈을 가져오려면 import를 사용하세요. 예: 🎜rrreee

선언 파일 없음

🎜 중요 선언 파일이 없을 때 어떻게 해야 하는지 살펴보겠습니다. 앞에서 언급한 것처럼 any를 사용하여 정적 유형 검사 무시를 표시하는 것은 사용자가 선언 파일에서 제공하는 스마트 프롬프트의 즐거움을 누릴 수 없음을 의미합니다. 🎜🎜G2와 마찬가지로 프로젝트 내 어디에서나 직접 사용할 수 있지만 G2 변수만 인식할 수 있고 인스턴스의 메서드나 속성은 불가지론적입니다. 🎜rrreee🎜또한 TypeScript는 컴파일 과정에서 G2에 대한 유형 검사를 수행하지 않습니다. G2가 실제로 존재하는지 여부는 사용자가 직접 판단할 수 있습니다. Angular의 경우 이러한 모듈은 .angular-cli.jsonscripts 노드에 명시적으로 로드되어야 합니다. (자세한 내용은 PHP 중국어 웹사이트🎜AngularJS 개발 매뉴얼🎜을 참조하세요.)🎜rrreee🎜TypeScript는 컴파일 후에도 여전히 JavaScript 코드입니다. G2 관련 항목을 수동으로 로드하지 않으면 말이죠. JavaScript 파일을 사용하면 자연스럽게 실행 중인 프로세스에 G2를 찾을 수 없다는 오류가 발생합니다. 🎜

요약

🎜 TypeScript 관점에서 타사 라이브러리를 사용하는 방법을 살펴보면 다른 느낌을 갖게 될 것입니다. 더 잘 아는 사람들이 자비를 베풀기를 바랍니다. 🎜
여기서 G2를 폄하하려는 의도는 없습니다. 이제 G2가 선언 파일을 제공했습니다. 🎜🎜알겠습니다. 이 기사는 여기서 끝납니다. (자세한 내용을 보려면 PHP 중국어 웹사이트 🎜AngularJS 사용자 매뉴얼🎜을 방문하세요.) 궁금한 점이 있으면 아래에 메시지를 남겨주세요. 🎜🎜🎜

위 내용은 Anglejs에서 타사 라이브러리를 사용하는 방법은 무엇입니까? Anglejs에서 타사 라이브러리를 사용하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.