在前端开发中,我们经常需要管理本地的环境变量。环境变量是一些可以影响我们应用程序行为的键值对,例如不同环境下的 API 地址,数据库连接字符串等。在传统的 Node.js 项目中,我们通常会通过 dotenv
等第三方包来管理环境变量。但是 Deno 的设计理念强调无隐式依赖,这意味着它不提供像 require()
全局命名空间一类的功能,因此我们需要自己来处理本地环境变量。
Deno 的环境变量
Deno 提供了 Deno.env
对象来访问环境变量。这个对象是一个包含所有环境变量的键值对的映射。我们可以使用如下语句来访问环境变量:
const env = Deno.env; console.log(env.get('DATABASE_URL'));
需要注意的是,访问环境变量需要给 Deno 运行时传递 --allow-env
权限。
但是这种方式并不能很好的管理环境变量。首先,每次使用环境变量都要从 Deno.env
中获取,非常繁琐。其次,如果我们需要在不同的应用中使用相同的环境变量,那么我们需要在这些应用中分别定义一次。
通过文件来管理环境变量
更好的方式是把环境变量存储到文件中,这样我们可以轻松地引用它们并支持多个应用程序。常见的做法是使用 .env
文件来存储环境变量。
我们可以使用 Deno 内置的 Deno.readTextFileSync()
方法来读取 .env
文件中的环境变量:
-- -------------------- ---- ------- ----- --- - ------------------------------ ----- --------- - ---------------------------- ----- -- - ----- -------- - ---------------- -- ------------- - ---------------- - ----------- - ------------------------- --- - --- - ------ ---- -- ---- -----------------------
这段代码会将 .env
文件解析为一个键值对的对象,并输出到控制台上。需要注意的是,在 .env
文件中,每一行格式为 KEY=VALUE
,可以有多个。
如果想要使用这些环境变量,可以将它们保存到一个全局对象中,比如 globalThis.config
:
globalThis.config = envConfig;
这样可以在应用程序的任何位置使用 config
对象来访问环境变量。
使用 Denon 管理环境变量
在实际开发中,我们可能会遇到需要同时运行多个项目(例如前端和后端),而这些项目又需要使用相同的环境变量。为了避免手动运行多个实例,我们可以使用 Denon 来管理它们。
Denon 是一个类似于 nodemon 的工具,它可以在文件变化时自动重启应用程序并支持多项目运行。
我们可以在 Denon 的配置文件 denon.json
中指定应用程序的环境变量。这个文件应该存在项目的根目录下,例如:
{ "scripts": { "start": { "cmd": "deno run --allow-env --allow-net app.ts", "env": { "DATABASE_URL": "postgresql://user:password@localhost:5432/mydatabase" } } } }
这个配置文件中有一个 scripts
属性,它包含一个 start
命令,定义了应用程序的启动方式。cmd
属性定义了启动命令,env
属性定义了该命令的环境变量。在这个例子中,我们定义了一个名为 DATABASE_URL
的环境变量。
接着,我们可以使用如下命令启动应用程序:
denon start
这个命令会自动读取 denon.json
配置文件,并启动应用程序。启动程序时,Denon 会自动将环境变量注入到应用程序中。在应用程序中,我们可以像访问一般的环境变量一样访问它们。
总结
通过本文的学习,我们了解到了如何使用 Deno 管理本地环境变量。我们可以使用内置的 Deno.env
对象或者通过文件来管理环境变量。如果需要多个项目使用相同的环境变量,我们可以使用 Denon 来管理它们。
相信在实际开发中,这些技巧会非常有用。如果你还没有尝试过 Deno 和 Denon,不妨试试看,相信你一定会有惊喜的发现!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/648b7c1748841e98949cf61e