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 ...
随机推荐
- 4.Redis持久化方案
1.1 RDB持久化 RDB方式的持久化是通过快照(snapshotting)完成的,当符合一定条件时Redis会自动将内存中的数据进行快照并持久化到硬盘. RDB是Redis默认采用的持久化方式. ...
- numpy.ravel() 与 numpy.flatten()
两者都可实现将多维数组降位一维的功能 numpy.flatten()返回拷贝,对拷贝所做的修改不会影响原始矩阵 numpy.ravel()返回视图,会影响原始矩阵 1)ravel() In [16]: ...
- 花生壳的ddns 关键时刻又掉链子,准备迁到阿里万网
https://www.oray.com/news/affiche/?aid=628 免费版花生壳服务故障 因免费版机房线路节点负荷突然暴增,导致花生壳免费版登录缓慢或异常,或出现域名指向到127.0 ...
- OpenWrt编译后生成的bin文件:jffs2与squashfs、factory与sysupgrade
OpenWrt编译后会生成多个bin文件,比如 openwrt-ar71xx-generic-tl-wr841nd-jffs2-factory.bin 8126464 openwrt-ar71xx-g ...
- 企业级rancher搭建Kubernetes(采用rancher管理平台搭建k8s)
一.简介 Rancher简介 来源官方:https://www.cnrancher.com/ Rancher是一个开源的企业级容器管理平台.通过Rancher,企业再也不必自己使用一系列的开源软件去从 ...
- python 堡垒机讲解及实例
paramiko模块,该模块基于SSH用于连接远程服务器并执行相关操作. SSHClient:用于连接远程服务器并执行基本命令 #coding:utf-8 import paramiko ssh=pa ...
- 编程语言十万个为什么之java web的基础概念
1.什么是JAVA Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, Ja ...
- Linux IO多路复用
监听文件描述符的状态来进行相应的读写操作,3个函数: 123 selectpollepoll 123456789 int (int nfds, fd_set *readfds, fd_set *wri ...
- 腾讯自动化测试的AI智能
引子: 本文是林奕在腾讯 DevDays 2018 分享内容的脱敏整理,介绍了 CSIG 测试开发中心(前 SNG 测试开发中心)在自动化测试领域所做的智能化尝试. 大致分成下面几部分: 使用AI面对 ...
- 蚂蚁金服招聘-无线测试开发(20k-36k/月)
蚂蚁金服-支付宝国际事业部-高级测试开发工程师/测试专家 工作年限:三年以上学历要求:本科期望层级:P6/P7工作地点:上海,杭州,深圳等为什么选择加入我们? 我们的岗位有何不同?1.国际化远景:随着 ...