Skip to content

常见问题

Vue 支持哪个版本?

本包开发期间所用的 Vue 的版本为 ^3.2.37 ,保持高于或等于该版本都不会有使用问题。

如果想在 Vue 2 使用,请尝试安装 @vue/composition-api 以支持组合式 API ,因为目前团队均使用 Vue 3 ,所以对 Vue 2 暂无实际测试,请自行体验。

可以在 JS 项目里使用吗?

可以,本包构建出来后是一个带有 .d.ts 类型支持的 .js 文件,所以也可以在 JavaScript 项目里使用。

集成的工具库是否需要单独安装?

不需要,例如 axios 会自动添加到项目里,可以通过 useAxios() 直接使用,如果开发过程中最终没有使用到,那么在构建编译的时候会被舍弃,不会作为构建产物一起输出。

除了 ali-oss查看详情)。

如果有命名冲突怎么处理?

方法在 import 的时候可以用 as 关键字重命名,例如 packageApackageB 都导出了 fun() 函数,那么就可以这样重命名:

ts
// 用 `as` 关键字重命名
import { fun as funA } from 'packageA'
import { fun as funB } from 'packageB'

// 调用 packageA 里的 fun 方法
funA()

// 调用 packageB 里的 fun 方法
funB()

如果是返回的变量名冲突,可以利用 ES6 的解构重命名来解决,例如 funA()funB() 都返回了 { foo, bar } 这两个变量,可以这样进行重命名:

ts
const { foo: fooA, bar: barA } = funA()
console.log('从 funA 导出的变量', { fooA, barA })

const { foo: fooB, bar: barB } = funB()
console.log('从 funB 导出的变量', { fooB, barB })

如何查询跨端的平台支持?

在每个 API 详情里,都有一段如下的代码:

  • Supported Platforms:
Browser
Electron
App
Server
Scriptlet

这代表该 API 是否支持对应的平台:

平台标识含义
Browser可在浏览器访问的 Web App
Electron基于 Electron 开发的 GUI 桌面程序
App基于 uni-app 开发的 Hybird App
Server基于 Node.js 的服务端程序
Scriptlet基于 Node.js 构建的 Non GUI 脚本程序

如何区分运行时环境?

运行时环境( Runtime Environment )是用于区分代码的运行环境。

通常可由全局变量 process.env.NODE_ENV 获取,常见的变量值为:开发环境 development 和生产环境 production

前端项目

对一个前端项目来说,它的含义理解比较简单:

变量名运行时含义
development开发环境,通常可以理解为执行 npm run dev 启动时的环境
production生产环境,通常可以理解为执行 npm run build 构建打包后,把 dist 目录下的构建产物部署上线后访问的环境

也就是说,对一个页面来说,当你打包的那一刻开始,它就永远处于 production 了。

所以部署上线流程里的 “测试环境” -> “预发环境” -> “生产环境” ,对于 Runtime 来说,本质上都是一个 production 状态,因为上线前需要进行构建打包,上线访问的也都是构建后的静态代码,和项目本身已经没有关系了。

服务端项目

对于服务端项目,这个概念的扩展性就会多了很多。

服务端代码和前端代码不同之处在于,通常情况下都是直接运行代码,例如 Express ,启动服务就是直接运行你的源码,哪怕是 Nest 这种 TypeScript 构建的服务端项目,虽然需要打包后再运行,但启动服务依然也是在项目下面跑编译后的 JavaScript 代码,部署的代码无法脱离项目本身独立运行。

所以服务端不管是本地开发,还是部署上线,启动的时候都是处于一个 “运行时” 的概念,因此运行时变量是可以根据启动命令来指定。

配置运行时环境变量

由于不同操作系统的命令有所差异,我们通常使用 cross-env 这个包来帮我们抹平差异化。

首先你要在项目里将它安装到 devDependencies 里:

bash
yarn add -D cross-env

然后打开项目的 package.json ,在 scripts 部分增加环境区分的脚本代码。

语法为 cross-env NODE_ENV=%ENV_VAR% ,这里的 %ENV_VAR% 就是对应的环境变量。

以 Nest 项目为例,它启动 developmentproduction 的脚本为:

json
{
  "scripts": {
    "start:dev": "cross-env NODE_ENV=development nest start --watch",
    "start:prod": "cross-env NODE_ENV=production node dist/main.js"
  }
}

这样当运行 yarn start:dev 时,服务端代码获取到的环境变量就是 development ,可以查询测试环境的数据库。

运行 yarn start:prod 时,获取到的环境变量就是 production ,可以查询生产环境的数据库。

如果还需要其他环境,按照格式新增你的环境变量代号即可。

前端项目的运行时变量也是类似:

json
{
  "scripts": {
    "dev": "cross-env NODE_ENV=development vite --host",
    "build": "cross-env NODE_ENV=production vite build"
  }
}

这样在本地开发时,启动 yarn dev 就是 development 环境,打包后部署上线就是 production 环境。

可以有更新记录查询吗?

由于 1.0.0 以前的版本属于开发版本,更新和改动会比较频繁,暂时不做更新记录整理,如果有文档上的功能用不了,请检查是否最新版的包,更新到最新版就可以用了。

当前的最新版本为: 0.48.0

有问题如何反馈?

如有功能想新增或者发现 Bug ,请联系本包的维护者 @程沛权

Released under the MIT License.