常见问题
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
关键字重命名,例如 packageA
和 packageB
都导出了 fun()
函数,那么就可以这样重命名:
// 用 `as` 关键字重命名
import { fun as funA } from 'packageA'
import { fun as funB } from 'packageB'
// 调用 packageA 里的 fun 方法
funA()
// 调用 packageB 里的 fun 方法
funB()
如果是返回的变量名冲突,可以利用 ES6 的解构重命名来解决,例如 funA()
和 funB()
都返回了 { foo, bar }
这两个变量,可以这样进行重命名:
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 )是用于区分代码的运行环境。
通常可由全局变量 p
获取,常见的变量值为:开发环境 development
和生产环境 production
。
前端项目
对一个前端项目来说,它的含义理解比较简单:
变量名 | 运行时含义 |
---|---|
development | 开发环境,通常可以理解为执行 npm run dev 启动时的环境 |
production | 生产环境,通常可以理解为执行 npm run build 构建打包后,把 dist 目录下的构建产物部署上线后访问的环境 |
也就是说,对一个页面来说,当你打包的那一刻开始,它就永远处于 production
了。
所以部署上线流程里的 “测试环境” -> “预发环境” -> “生产环境” ,对于 Runtime 来说,本质上都是一个 production
状态,因为上线前需要进行构建打包,上线访问的也都是构建后的静态代码,和项目本身已经没有关系了。
服务端项目
对于服务端项目,这个概念的扩展性就会多了很多。
服务端代码和前端代码不同之处在于,通常情况下都是直接运行代码,例如 Express
,启动服务就是直接运行你的源码,哪怕是 Nest
这种 TypeScript 构建的服务端项目,虽然需要打包后再运行,但启动服务依然也是在项目下面跑编译后的 JavaScript 代码,部署的代码无法脱离项目本身独立运行。
所以服务端不管是本地开发,还是部署上线,启动的时候都是处于一个 “运行时” 的概念,因此运行时变量是可以根据启动命令来指定。
配置运行时环境变量
由于不同操作系统的命令有所差异,我们通常使用 cross-env 这个包来帮我们抹平差异化。
首先你要在项目里将它安装到 devDependencies
里:
yarn add -D cross-env
然后打开项目的 package.json
,在 scripts
部分增加环境区分的脚本代码。
语法为 cross-env NODE_ENV=%ENV_VAR%
,这里的 %ENV_VAR%
就是对应的环境变量。
以 Nest 项目为例,它启动 development
和 production
的脚本为:
{
"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
,可以查询生产环境的数据库。
如果还需要其他环境,按照格式新增你的环境变量代号即可。
前端项目的运行时变量也是类似:
{
"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 ,请联系本包的维护者 @程沛权 。