# 与外部代码的连接

就像浏览器中的 JavaScript 一样，Deno 可以从 URL 直接导入代码库

在导入代码库的时候，不需要提供 `--allow-net` 权限，Deno 运行时有着特殊权限来下载模块并缓存到磁盘

## 如何导入特定版本？

在 URL 中指定版本

```
https://unpkg.com/liltest@0.0.5/dist/liltest.js
```

## 到处导入 URL 容易出现错误

在项目的每个文件导入 URL 是很麻烦，并且容易出错的事情

解决方案是在一个中心化的 `deps.ts` 中重新导出所依赖的外部库，它与 Node 的 `package.json` 有相同的作用

实例：

```typescript
// deps.ts
export {
    assert,
    assertEquals,
    assertStrContains,
} from "https://deno.land/std/testing/asserts.ts";

// XX.ts 
import  { assertEquals, runTests, test } from "./deps.ts";
```

这种设计避免了由包管理软件、集中的代码存储库和多余的文件格式所产生的复杂性

## 依赖宕机的解决方案

这种直接使用 URL 导入远程代码库的方法虽然在开发环境用的很爽，但是在生产环境很脆弱，生产级软件总是应该打包(vendor)所有依赖
