Vue全家桶开发笔记
state 中没有属性的情况下,新增属性不会触发mutations修改。
例:
commit('change', {
c: 3,
d: 4,
});
state: {
test: {
a: 1,
b: 2,
}
},
mutations: {
change(state, payload) {
state.test.c = payload.c; // 直接新增属性不会触发
state.test = Object.assign(state.test, payload); // 浅拷贝不会触发
}
}
解决方案
state.test = { state.test, ...payload };
vue-cli打包后,css里的背景图片无法找到资源
解决方法:
https://github.com/vuejs/vue-cli/issues/179
@margox
在build目录下新建一个cssPathResolver.js,内容如下:
module.exports = function (source) {
if (process.env.NODE_ENV === 'production') {
return source.replace('__webpack_public_path__ + "static', '"..')
} else {
return source
}
}
webpack.base.conf.js里的img部分改为
{
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loaders: [
{
loader: path.resolve(__dirname, 'cssPathResolver')
},
{
loader: 'url-loader',
query: {
limit: 10000,
name: utils.assetsPath('img/[name].[hash:7].[ext]')
},
},
],
},
build后图片加载是相对路径,无法找到图片
图片大小大于10K。
在build文件夹webpack.base.conf.js修改url-loader的limit。
{
loader: 'url-loader',
query: {
limit: 150000,
name: utils.assetsPath('img/[name].[hash:7].[ext]')
},
}
或者可在src文件夹同级的目录建立static
<img src='static/xxxx.jpg'>
给v-for遍历产生的元素绑定事件,并动态添加style。
例:
<ul v-for='result of results'>
<li>
<div class='cut'>
<img :src='result.src'>
</div>
</li>
</ul>
当图片加载时,记录当前图片原始宽高,处理后传值给style。
首先需求是,在加载图片时记录当前图片原始宽高,所以img标签需要加上@load绑定onload事件。
<ul v-for='result of results'>
<li>
<div class='cut'>
<img @load='load' :src='result.src'>
</div>
</li>
</ul> <script>
export default {
data() {
results: [
{ src: 'src', style: null },
{ src: 'src', style: null },
{ src: 'src', style: null },
],
},
methods: {
load(e) {
const img = e.target;
const [naturalWidth, naturalHeight] = getNatural(img); function getNatural(img) {
let nWidth;
let nHeight;
if (img.naturalWidth) {
nWidth = img.naturalWidth;
nHeight = img.naturalHeight;
}
//省略兼容html 4
return [nWidth, nHeight];
}
},
},
};
</script>
问题来了,这时候load方法虽然获取到了图片的原始宽高,但是传值给style则是个问题。如果要传当前元素的宽高,则需要在模板部分修改:
<img @load='load(result)' :src='result.src'>
这时传的值result会覆盖了event事件。导致load方法出错。
如果需要传event事件需要改成这样:
<img @load='load(result, $event)' :src='result.src'>
load方法就能同时接受当前遍历对象及触发事件。
ps:methods里面的方法有个默认声明的对象event,里面的属性和$event传过来的一样,但是官方文档没写,不建议使用。
此时在load方法里添加处理style的逻辑:
methods: {
load(item, e) {
const img = e.target;
const [naturalWidth, naturalHeight] = getNatural(img);
//省略函数
if (naturalWidth >= narturalHeight) {
margin = ((naturalWidth * 100) / narturalHeight) / 2;
item.style = { marginLeft: `-${margin}px`, height: '100px' };
} else {
item.style = { marginLeft: 'margin-left: -60px', height: '100px' };
}
},
},
这里也要注意style是个对象。同时,属性的值不能有分号,否则不会渲染style。
Vue全家桶开发笔记的更多相关文章
- 基于Vue全家桶开发的前端组件管理平台
项目背景 项目背景是外包类建站公司里,设计环节沉淀了大量可复用组件,设计师往往只需要微调组件就拼凑出页面,交付给前端,理论上这些组件在前端也可以复用,但实际上前端每次都要重新实现整个页面,浪费很多人力 ...
- Vue全家桶高仿小米商城
大家好,我是河畔一角,时隔半年再次给大家带来一门重量级的实战课程:<Vue全家桶高仿小米商城>,现在很多公司都在参与到商城的构建体系当中,因此掌握一套商城的标准开发体系非常重要:商城的开始 ...
- 【实战】Vue全家桶(vue + axios + vue-router + vuex)搭建移动端H5项目
使用Vue全家桶开发移动端页面. 本博文默认已安装node.js. github链接 一.准备工作 安装vue npm install vue 安装脚手架vue-cli npm install -g ...
- 用 Vue 全家桶二次开发 V2EX 社区
一.开发背景 为了全面的熟悉Vue+Vue-router+Vuex+axios技术栈,结合V2EX的开放API开发了这个简洁版的V2EX. 在线预览 (为了实现跨域,直接npm run dev部署的, ...
- Vue 全家桶 + Electron 开发的一个跨三端的应用
代码地址如下:http://www.demodashi.com/demo/11738.html GitHub Repo:vue-objccn Follow: halfrost · GitHub 利用 ...
- [在线+源码]vue全家桶+Typescript开发一款习惯养成APP
# vue-ts-daily 基于Vue.js的2.5.13版本和TypeScript编写的模仿原生应用的WebApp. [源码地址](https://github.com/xiaomuzhu/vue ...
- Vue全家桶之组件化开发
Vue全家桶之组件化开发 一.组件 组件 (Component) 是 Vue.js 最强大的功能之一 组件可以扩展 HTML 元素,封装可重用的代码 二. 组件注册 2.1 全局注册 Vue. ...
- Vue全家桶
简介 “简单却不失优雅,小巧而不乏大匠”. Vue.js 是一个JavaScriptMVVM库,是一套构建用户界面的渐进式框架.它是以数据驱动和组件化的思想构建的,采用自底向上增量开发的设计. 为什么 ...
- 使用vue全家桶制作博客网站
前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用vue全家桶制作的博客网站 概述 该项目是基于vue全家桶(vue.vue-router.vuex.v ...
随机推荐
- adb 调试命令
一.抓log 1. cat /proc/kmsg:抓kernel log(串口log) 2. 进入工程模式:adb shell am start -n com.mediatek.engineermo ...
- docker 学习(四) springboot + docker
下面演示: 在Windows上新建一个简单的Springboot工程,生成docker iamge,然后在本地的docker上运行: (1):登录到 https://start.spring.io/, ...
- bzoj2159
树形dp+第二类斯特林数 又是这种形式,只不过这次不用伯努利数了 直接搞肯定不行,我们化简一下式子,考虑x^n的组合意义,是把n个物品放到x个箱子里的方案数.那么就等于这个i=1->n,sigm ...
- json : json数据解析(一)
在项目中经常用到json格式的数据转换与解析,先前写过一些小例子,现在整理下,以备后用和帮助后来者. 言归正传: 使用到的jar包 :json-lib-2.4-jdk15.jar,当然你也可以用自己版 ...
- Java编程环境eclipse配置
一. 下载并安装JDK https://www.cnblogs.com/zhangchao0515/p/6806408.html 二.下载并解压Eclipse https://www.cnblogs. ...
- HDOJ-2045
不容易系列之(3)—— LELE的RPG难题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
- JAVA基础--JAVA API集合框架16
一.Map集合 1. map集合介绍 Collection集合的特点: 集合中存储的所有元素都是单一元素,元素和元素之间没有必然的关系.因此我们把Collection集合也称为单列集合. Map集合: ...
- CodeForces——Game with string(STL stack栈)
Two people are playing a game with a string ss, consisting of lowercase latin letters. On a player's ...
- 关于`babel-loader`和`babel-core`版本兼容性问题
1. 安装babel-loader和babel-core出现问题 1.1 安装babel的转换工具包: npm i babel-core babel-loader babel-plugin-trans ...
- 64位Win7中7zip无法关联文件的问题
问题1:win7x64中安装了7zip,在解压文件右键打开无法关联文件. 解决方法1:在开始菜单中打开7-zip File Manage->工具 ->选项 ->7-zip 勾选“添加 ...