Pet*_*ovo 2 vue.js vue-router vuejs2
我创建了新的 @vue/cli 4.0.5 应用程序,并在文件 src/router/index.js 中看到:
const router = new VueRouter({
mode: 'history',
base: process.env.BASE_URL,
routes
})
Run Code Online (Sandbox Code Playgroud)
我在本地的 .env 中没有任何 BASE_URL 参数,并且在本地主机下使用命令运行:
npm run serve
Run Code Online (Sandbox Code Playgroud)
我在本地工作没问题
我将 apache(ubuntu 16) 下的实时服务器下的应用程序部署到托管根目录中,也没有使用此参数。
它是什么 ?它与 publicPath ( https://cli.vuejs.org/config/#publicPath )相同吗?
process.env.BASE_URL
由 Vue CLI自动注入到Webpack 配置中,并使用 CLI config ( vue.config.js
) 变量publicPath中指定的值
来自文档:
您的应用程序包将部署到的基本 URL。这相当于 webpack 的
output.publicPath
,但是 Vue CLI 也需要这个值用于其他目的,所以你应该始终使用publicPath
而不是修改 webpackoutput.publicPath
默认情况下,Vue CLI 假设您的应用程序将部署在域的根目录下,例如
https://www.my-app.com/
. 如果您的应用程序部署在子路径中,则需要使用此选项指定该子路径。例如,如果您的应用程序部署在https://www.foobar.com/my-app/
,请将 publicPath 设置为'/my-app/'
因此在 Webpack 中它用于链接到其他资源(图像、字体、代码分割时的代码块)
Vue Router 也有同样的目的,因为它还通过以下方式创建链接(到应用程序的其他部分)<router-link>
例如这条路线:
{
path: "/page1",
name: "Page 1",
component: Page1
}
Run Code Online (Sandbox Code Playgroud)
在你的模板中:
<router-link to="/page1">Page 1</router-link>
Run Code Online (Sandbox Code Playgroud)
如果路由器设置为base: '/'
(默认),链接将呈现为
<a href="/page1" class="">Page 1</a>
Run Code Online (Sandbox Code Playgroud)
但是有了base: '/my-app/'
,链接就变成了
<a href="/my-app/page1" class="">Page 1</a>
Run Code Online (Sandbox Code Playgroud)
您可以在此处阅读有关绝对 URL 与相对 URL 的更多信息
归档时间: |
|
查看次数: |
3674 次 |
最近记录: |