Vue项目三、项目中碰到的问题详解
一、组件的划分创建
方法一:
把页面上需要复用的模块,拆分成组件。比如,页面的header、footer、面包屑、弹出框等拆分成组件。所以在src中应该有一个文件夹(components)专门放这些会复用的组件。
页面中不被复用的模块,比如content主体内容。会被做为一个主页面,在这个主页面中会去导入可复用组件组成一个可以被用户浏览的完整网页。所以在src中应该有一个文件夹(views)专门放这些主体页。
方法二:
把页面上所有的模块能拆分的都拆分成小组件。那些复用的组件,比如页面的header、footer、面包屑、弹出框等,放入一个文件夹(components)。
其它拆分的小组件,按照页面的名称的不同,放入以页命名不同的文件夹,过程:创建一个文件夹(pages),之后创建以页命名不同的文件夹。比如Home页,除了header、footer,可以把代表主体内容的,展示1内容、展示2内容、展示3内容等放入一个文件夹(home),home中再创建一个Home.vue把这些组件导入进来,组成一个可以被用户浏览的完整网页。
二、关于项目静态资源的存放
src目录中有assets文件夹。再src目录外有一static文件夹。那项目中引用的静态资源文件应该如何选择存放位置呢?
assets:资源目录(放置一些图片等),这里的资源会被webpack构建,只支持相对路径形式eg: ../assets/[filename]。更倾向于放置组件(那些可以被复用的模块)中引用的资源(css及img),如果图片足够小会被打包成Base64
static:纯静态资源(不会变动的资源,如图片、字体),不会被webpack构建,必须使用绝对路径引用这些文件eg: /static/[filename],直接被复制到打包目录。页面中(不被复用的vue页面)应用的资源放在这里。
在我们实际的开发中,总的来说:static放不会变动的文件 assets放可能会变动的文件。
三、关于项目组件导入资源文件
css导入-->直接可以用import导入。eg:导入base.css。在script中,用 import './../assets/css/base.css' 直接导入。
组件导入-->import NavHeader from '@/components/Header'
注意:import导入文件地址需要加引号(双引号/单引号),import导入文件后,结尾不需要符号(比如,逗号或者分号)
组件导入后,还要定义组件。用components:{Header,Footer}
四、命名
vue的组件的命名支持驼峰命名,不支持连接线命名,使用是用连接线链接名称,包括属性的命名!
Vue局部注册 或者全局注册 组件时,组件定义要用 分隔命名,用驼峰命名是不生效的
如果组件以驼峰式命名,那么导入的时候,需要用分隔命名加载到Dom中,否则不生效
五、调试神器
安装Vue调试神器 vue-devtools
六、slot的应用
在复用组件中,使用<slot></slot> ,调用单页中直接写将要代替插槽的内容,比如<span>列表</span>
如果使用多个插槽,就需要给插槽制定名字。比如。复用组件中使用<slot name="list"></slot><slot name="id"></slot>,则单页中写代替插槽内容为,<span slot="list">列表</span><span slot="id">id号</span>
七、前端调用后端接口数据
当要调用后台对接接口的时候,如果后台人员还没给到接口时,这时可以自己创建一些测试数据,先保证前端交互是正确的。一般后端会给的接口规范。按照后端给的接口规范,可以做一些测试数据。一般有固定的写法,首先要返回给前端一个状态(status),1表示接收成功,0表示接收失败。然后要返回结果。
我是在static中创建一个goods.json(商品列表信息),然后在里面放一些测试数据。
eg:goods.json
{ //json是一个对象
"status":"", //json中键必须加双引号,值也需要加
"msg":"WOCUOWU",
"result":[
{
"productId":"",
"productName":"小米1",
"productPrice":"",
"productImg":"images/1.jpg"
},
{
"productId":"",
"productName":"小米2",
"productPrice":"",
"productImg":"images/2.jpg"
},
{
"productId":"",
"productName":"小米3",
"productPrice":"",
"productImg":"images/3.jpg"
}
]
}
八、开发环境中,跨域,
在config中的index.js中跨域代理中设置所要跨域的链接。
proxyTable: {
'/goods':{
target: 'http://localhost:3000',
},
'/goods/*':{
target: 'http://localhost:3000',
},
'/users':{
target: 'http://localhost:3000',
},
'/users/*':{
target: 'http://localhost:3000',
},
'/users/*/*':{
target: 'http://localhost:3000',
}
}
注意:若在线上环境就不能用proxyTable要用ngix代理转发。
九、分页
前端需要给后台参数 page当前页 pageSize 一页中要展示几条数据 sort排序(1升序,0降序 )
后台中skip(跳过多少条数据)=(page-1)*pageSize
十、升序降序
在dada中定义一个sortFlag=true,将升降序的标签上加上事件,在事件中
sortGoods(){
this.sortFlag=!this.sortFlag
}
十一、插件 vue-infinite-scroll 制作分页
用法,可以去npm中搜索,里面会有应用方法
十二、关于导航选中样式
<div class="filter stopPop" id="filter" v-bind:class="{'filterby-show':filtershow}">
<dl class="filter-price">
<dt>Price:</dt>
<dd><a href="javascript:void(0)" @click="seleAllP" :class="{'cur':priceCheck=='all'}">All</a></dd>
<dd v-for="(price,index) of priceFilter">
<a href="javascript:void(0)" @click="selePrice(index)" :class="{'cur':priceCheck==index}">{{price.startPrice}} - {{price.endPrice}}</a>
</dd>
</dl>
</div>
data () {
return {
priceCheck:"all", //默认选中all
}
}
seleAllP:function(){
this.priceCheck='all';
},
selePrice:function(index){
this.priceCheck=index;
}
持续更新中......
Vue项目三、项目中碰到的问题详解的更多相关文章
- Vue通信、传值的多种方式,详解
Vue通信.传值的多种方式,详解 转自:https://blog.csdn.net/qq_35430000/article/details/79291287 一.通过路由带参数进行传值 ①两个组件 A ...
- gvoory脚本中关于HttpClient使用详解实例
一.gvoory脚本中关于HttpClient使用详解实例 HttpClient:是一个接口 首先需要先创建一个DefaultHttpClient的实例 HttpClient httpClient=n ...
- 巨人大哥谈Web应用中的Session(session详解)
巨人大哥谈Web应用中的Session(session详解) 虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚session机制的本质,以至不能正确的应用这一技术. ...
- java 日志体系(三)log4j从入门到详解
java 日志体系(三)log4j从入门到详解 一.Log4j 简介 在应用程序中添加日志记录总的来说基于三个目的: 监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作: 跟踪代 ...
- Ocelot简易教程(三)之主要特性及路由详解
作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9664977.html 上篇<Ocelot简易教程(二)之快速开始2>教大家如何快速跑起来一个 ...
- vue-cli 中的 webpack 配置详解
本篇文章主要介绍了 vue-cli 2.8.2 中的 webpack 配置详解, 做个学习笔记 版本 vue-cli 2.8.1 (终端通过 vue -V 可查看) vue 2.2.2 webpack ...
- javascript中=、==、===区别详解
javascript中=.==.===区别详解今天在项目开发过中发现在一个小问题.在判断n==""结果当n=0时 n==""结果也返回了true.虽然是个小问题 ...
- VS2010 Chart控件(一)Chart控件在ASP.NET网站中的应用示例详解(C#语言)
步骤如下: 1. Chart控件(一)Chart控件在ASP.NET网站中的应用示例详解(C#语言)" title="VS2010 Chart控件(一)Chart控件在ASP.NE ...
- 【通信】JDK中的URLConnection参数详解
JDK中的URLConnection参数详解 来自:http://www.blogjava.net/supercrsky/articles/247449.html 针对JDK中的URLConnecti ...
随机推荐
- 关于vyos 防火墙配置
VyOS是一个基于Debian的网络操作系统,是Vyatta的社区fork.Vyatta是博通的企业级的产品,通过这套系统,能在x86平台提供路由,防火墙和×××的功能. 这个系统提供了和其他诸如Ci ...
- fidder 抓包工具设置只拦截指定ip(服务ip)
直接上图:
- [LC] 149. Max Points on a Line
Given n points on a 2D plane, find the maximum number of points that lie on the same straight line. ...
- 吴裕雄--天生自然python学习笔记:pandas模块读取 Data Frame 数据
读取行数据 读取一个列数据的语法为: 例如,读取所有学生自然科目的成绩 : import pandas as pd datas = [[65,92,78,83,70], [90,72,76,93,56 ...
- HDU-1061-Rightmost Digit(快速幂)
快速幂(本代码中的^表示次幂不是异或) Accepted 1061 0MS 1368K 679 B G++ #include "bits/stdc++.h" using names ...
- seckill
京东自动登录 注:本文所做操作皆以京东web为例 包含:xpath,splinter,ocr 遇到的坑: 登录页面通过查看网页元素,能看到账户,密码唯一id,但是执行 12 browser.fill( ...
- mysql 存储过程与存储函数
第一节:存储过程和函数的引入 存储过程和函数是在数据库中定义一些SQL 语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL 语句.存储过程和函数可以避免开发人员重复的编写相同的SQL ...
- MySQL第五次课
/*Mysql第五次课 索引与事务 数据库优化 数据库优化指的就是通过各种途径 提高查询效率 优化方式有多种,但其中之一就是为字段 添加索引 什么是索引? 相当于为某个字段或某几个字段,添加 了目录, ...
- Zabbix 监控进程参考
1)zabbix自动发现占用内存最大top10进程并监控资源 http://blog.csdn.net/ybx13218464908/article/details/47819401
- response 画验证码
代码 import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.Bu ...