对雨(duiyu.net)
网站首页对雨短文关于本站登录注册
Quasar v1.14.7
访问process.env可以在很多方面为您提供帮助: 根据Quasar模式 (SPA/PWA/Cordova/Electron)区分运行时程序
创建于 2020-11-06 23:29:59 发布于 2020-11-23 02:50:35 更新于 2020-11-23 02:50:35

process.env处理

访问process.env可以在很多方面为您提供帮助:

  • 根据Quasar模式 (SPA/PWA/Cordova/Electron)区分运行时程序
  • 根据运行开发或生产构建,区分运行时程序
  • 在构建时根据终端环境变量向其添加标志

Quasar CLI提供的值

名称输入意义
process.env.DEV布尔在开发模式下运行的代码
process.env.PROD布尔在生产模式下运行的代码
process.env.CLIENT布尔在客户端上(不在服务器上)运行的代码
process.env.SERVER布尔在服务器上(不在客户端上)运行的代码
process.env.MODE字符串Quasar CLI 模式 (spa、 pwa、 …)
process.env.NODE_ENV字符串有两个可能的值:productiondevelopment

例子

if (process.env.DEV) {
  console.log(`I'm on a development build`)
}

// process.env.MODE is the <mode> in
// "quasar dev/build -m <mode>"
// (defaults to 'spa' if -m parameter is not specified)
if (process.env.MODE === 'electron') {
  const { remote } = require('electron')
  const win = remote.BrowserWindow.getFocusedWindow()

  if (win.isMaximized()) {
    win.unmaximize()
  }
  else {
    win.maximize()
  }
}

剥离代码

在编译您的网站/应用程序时,会根据process.env评估if()分支,如果表达式为“false”,则会将其从文件中删除。 例:

if (process.env.DEV) {
  console.log('dev')
}
else {
  console.log('build')
}

// running with "quasar dev" will result in:
console.log('dev')
// while running with "quasar build" will result in:
console.log('build')

请注意上面的if在编译时被评估并完全剥离,导致更小的包。

基于process.env导入

您可以将上面学到的内容与动态导入结合起来:

if (process.env.MODE === 'electron') {
  import('my-fancy-npm-package').then(package => {
    // notice "default" below, which is the prop with which
    // you can access what your npm imported package exports
    package.default.doSomething()
  })
}

添加到process.env

您可以通过/ quasar.conf.js文件将自己的定义添加到process.env

// quasar.conf.js

build: {
  env: ctx.dev
    ? { // so on dev we'll have
      API: JSON.stringify('https://dev.api.com')
    }
    : { // and on build (production):
      API: JSON.stringify('https://prod.api.com')
    }
}

然后在您的网站/应用程序中,您可以访问process.env.API,它将指向上面的两个链接之一,基于开发或生产构建类型。

你甚至可以更进一步。 提供来自quasar dev/build环境变量的值:

# we set an env variable in terminal
$ MY_API=api.com quasar build

# then we pick it up in /quasar.conf.js
build: {
  env: ctx.dev
    ? { // so on dev we'll have
      API: JSON.stringify('https://dev.'+ process.env.MY_API)
    }
    : { // and on build (production):
      API: JSON.stringify('https://prod.'+ process.env.MY_API)
    }
}

或者你可以使用我们的@quasar/dotenv 或 @quasar/qenv应用扩展。

Jane
doing fine, how r you?
2020年10月10日 13:54:39
Jane
doing fine, how r you?
32 minutes ago
I just feel like typing a really, really, REALY long message to annoy you...
32 minutes ago
你的昵称
hey, how are you?
0 minutes ago
What you see is what you get.
文章标签
Ice cream
Eclair
Cupcake
Gingerbread
虚位以待...
人最大的对手,就是自己的懒惰;