vue中常碰见的坑_vue学习中遇到的坑

定义组件名

在引用组件时,不要用html关键字作为名字,这样在解析的时候它会当成html元素来解析

例如:

//html

//引入button组件

import button from '../../components/button/Button'

//声明组件

components:{

button

}

即便引入了button组件,但是因为与html原生元素撞名了,在渲染html的时候还是会渲染成原生html元素。

无法取得页面的dom结构

组件一般是在mounted之后才会渲染出dom结构,如果需要获取dom结构,请在mounted之后。如果还是不行, 请使用api:vue.$nextTick([callback,context])

打包后404

将配置文件里的buildi资源路径改成相对路径

assetsPublicPath: './'

history模式

//测试环境

URL:https://10.21.1.210:8443/test/home

//假设项目不在根目录时,而是在test目录下

在router的index中设置:

const router = new VueRouter({

mode: "history",

base:'/test/',

//添加这句是为了保证页面不会空白(虽然资源加载正常)

//若是项目直接放在根目录下,则可忽略这句,base的默认路径是'/'

routes: [

{

path: '/',

redirect: '/login'//重定向

},

{

path: "/index",

component: PageIndex

}

]

}

如果服务端的环境经常变动,可以写下列写法

const router = new VueRouter({

mode: "history",

routes: [

{

path: '/',

redirect: '/login'//重定向

},

{

path: "/index",

component: PageIndex

}

]

})

if (process.env.NODE_ENV === "production") router.base = window.location.pathname

//【process.env.NODE_ENV是采用vue-cli的webpack提供的参数】

在服务端还需要设置几句话,否则会出现404

详细设置可以查看vue-router文档

将开发模式下的http改成https

用vue-cli创建的vue项目基本都是以node为后台,引用了express的包,所以我们只需要把原先在build/der-server.js中的语句

var server = app.listen(port)

改成如下写法:

var https = require('https');

var fs = require('fs');

var options = {

key: fs.readFileSync('/* replace me with key file's location */'),

cert: fs.readFileSync('/* replace me with cert file's location */'))

};

var server = https.createServer(options, app).listen(port);

v-for改变数据时,ui不会动态加载

设置vue.set( target, key, value),会使得页面重新渲染

设置background以及iconfont的时候出现404

第一种方案:

just modify the publicPath for url-loader like

test: /\.(png|jpe?g|gif)(\?.*)?$/,

loader: 'url-loader',

options: {

limit: 10000,

name: utils.assetsPath('img/[name].[hash:7].[ext]'),

publicPath: env === 'production' ? '../../' : '/'

}

or第二种方案:

针对这个问题,主要是需要单独为 css 配置 publicPath 。

ExtractTextWebpackPlugin 提供了一个 options.publicPath 的 api,可以为css单独配置 publicPath 。

对于用 vue-cli 生成的项目,dist 目录结构如下:

dist

├── index.html

└── static

├── css

├── img

└── js

经常遇见的问题是 css 中 background-image 的相对路径不能正确的引用到 img 文件夹中。但是用 ExtractTextWebpackPlugin 的 publicPath 配置就可以。

更改 build/utils.js 文件中 ExtractTextPlugin 插件的options 配置:

if (options.extract) {

return ExtractTextPlugin.extract({

use: loaders,

publicPath: '../../', // 注意配置这一部分,根据目录结构自由调整

fallback: 'vue-style-loader'

})

} else {

return ['vue-style-loader'].concat(loaders)

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值