Vue2.0项目实战语法
一、安装配置依赖
1) vue init webpack-simple 项目名称 2) cnpm install 3 ) npm run dev 4 ) cnpm install vuex vue-router axios -D 5 ) cnpm install style-loader css-loader -D 6 ) 需要在webpack.config.js中加入 { test: /\.css$/, loader: 'style-loader!css-loader' } 7 ) |
二、做vue项目流程
1) 规划组件结构 (Nav.vue、Header.vue、Home.vue) 2) 编写路由(vue-router) 3 ) 编写具体每个组件的功能 |
三、项目结构
1) 在src中建立components存放组件的文件夹 2) assets存放 |
四、组件篇-comonents
1) 在src中建立components存放组件的文件夹 2) 在components中建立*.vue文件 3 ) 在App.vue中导入*.vue (import NavView from './components/Nav.vue') 4 ) export default{ components:{ NavView } } 5) 在template中显示 <div id="app"> <NavView></NavView> </div> |
五、路由篇-router
1) 在需要跳转的地方,加入<router-link> to:路由地址,tab是会自动在a标记的上一层生成li,active-class高亮的class设置 <router-link to='/home' tag="li" active-class="active"> <a href="#">首页</a> </router-link> 2) 在要显示的地方路由切换内容的地方放入,<router-view> 3) 在main.js中引入 import VueRouter from 'vue-router'; import RouterConfig from './router.config.js' //配置router的参数文件 Vue.use(VueRouter); new Vue({ el: '#app', router, render: h => h(App) }); const router = new VueRouter({ mode:'history', scrollBehavior:() =>({y:0}), //切换路由的时候,内容都从顶上开始读 routes:RouterConfig }) 4) 在src中建立一个router.config.js文件 5) router.config.js完善里面的配置 import Home from './components/Home.vue' import Follow from './components/Follow.vue' import Column from './components/Column.vue' export default[ { path:'/home', component:Home }, { path:'/follow', component:Follow }, { path:'/column', component:Column },{ path:'/', redirect:'/home' //默认跳转到首页 },{ path:'*', redirect:'/home' //404默认页面 } ] |
六、vuex状态管理
1) 在src下建立store文件夹 √ 2) 在store中建立index.js √ import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) import mutations from './mutations' import actions from './actions' export default new Vuex.Store({ modules:{ mutations }, //把actions导出去 actions }) 3) 在main.js加入vuex的代码 √ import Vue from 'vue' import App from './App.vue' import VueRouter from 'vue-router' import RouterConfig from './router.config.js' import store from './store/' //默认会找到store文件的index.js Vue.use(VueRouter) const router = new VueRouter({ mode:'history', routes:RouterConfig }) new Vue({ el: '#app', router, store, render: h => h(App) }) 4) 在store中新建一个actions.js √ export default{ showHeader:({commit})=>{ //需要有types.js,但是这个项目去掉了types.js commit('showHeader') //commit到了mutations里面去了 }, hideHeader:({commit})=>{ //需要有types.js,但是这个项目去掉了types.js commit('hideHeader') //commit到了mutations里面去了 }, } 5) 在store中新建一个mutations.js √ import getters from './getters' const state = { header:true //以上来是ture } const mutations = { showHeader(state){ state.header = true }, hideHeader(state){ state.header = false } } export default{ state, mutations, getters } 6) 在store中新建一个getters.js √ export default{ headerShow:(state)=>{ return state.header; } } 7) 在要触发的地方,加入代码App.vue √ <NavView v-show="'headerShow'"></NavView> import {mapGetters, matpActions} from 'vuex' computed:mapGetters([ 'headerShow' ]), 8) 在App.vue中的exprot中加入监听路由的变化的代码 √ watch:{ $route(to,from){ if(to.path=='/user-info'){ //通知actions,状态哪个变量应该消失了为false //需要发起,$store是从main.js里的store来的 //然后需要导出到index.js里 this.$store.dispatch('hideHeader') //发出去之后actions.js接收 }else{ this.$store.dispatch('showHeader') } } } |
七、数据交互篇-axios
1 ) 在main.js进入axios import axios from 'axios' //关于axios配置 //1.配置发送请求的信息 axios.interceptors.request.use(function (config){ store.dispatch('showLoading') return config; },function(error){ return Promise.reject(error) }) //2.配置请求回来 axios.interceptors.response.use(function (response){ store.dispatch('hideLoading') return response; },function(error){ return Promise.reject(error) }) //把axios对象挂到Vue原型上 Vue.prototype.$http = axios 2) 在Home.vue中加入数据交互代码 export default { data(){ return{ arrList:[] } }, components:{ BannerView }, mounted(){ //获取数据 this.fetchDate() }, methods:{ fetchDate(){ var _this = this; this.$http.get('src/data/index.data').then(function(res){ _this.arrList.push = res.data }).catch(function(err){ console.log('Home',err) }) } } } |
八、文章的详情页制作篇
1 ) 在home.vue路由跳转代码中加入 <router-link :to="'/article/'+item.id"> <h2>{{item.title}}</h2> <p>{{item.detail}}</p> </router-link> 2)在router.config.js中写上相应的路由配置 { path:'/article/:id', component:Article } 3)在详情页article.vue接收参数,回显数据 data(){ return { articleData:[ ] } }, mounted(){ var reg=/\/article\/(\d+)/; var id = this.$route.path.match(reg)[1]; this.fetchData(id); //获取路由的id,放出数据交互函数 }, methods:{ fetchData(id){ var _this = this; this.$http.get('../src/data/article.data').then(function(res){ console.log(res.data[id-1]) }).catch(function(err){ console.log('文章详情页',err) }) } } 3)解决data里有html和样式的情况 <p v-html="articleData.content"></p> 4 ) 显示图片 <img :src="articleData.author_face"> 5)如何处理时间戳 建立一个文件夹为filters过滤器,在2.0就只能自己写过滤器了 {{articleData.time | normalTime}} filters:{ normalTime:function(val){ var oDate=new Date(); oDate.setTime(val); var y=oDate.getFullYear(); var m=oDate.getMonth()+1; var d=oDate.getDate(); var h=oDate.getHours(); var mm=oDate.getMinutes(); var s=oDate.getSeconds(); return y+'-'+m+'-'+d+' '+h+':'+mm+':'+s; } } 因为会有很多的过滤器,所以在filters文件夹下建立一个index.js,和normalTime.js index.js import {normalTime} from './normalTime' module.exports = { normalTime } normalTime.js export const normalTime=(time) =>{ if(time){ var oDate = new Date(); oDate.setTime(time) var y =oDate.getFullYear(); var m= oDate.getMonth()+1; var d = oDate.getDate(); var h = oDate.getHours(); var mm = oDate.getMinutes(); var s = oDate.getSeconds(); return y + '-' + m + '-' + d + ' ' + h + ':' + mm + ':' + s; } } 在main.js中,全局引入 import filters from './filters' |
九、过渡动画篇
1 ) 在App.vue中,修改代码 <transition name="slide-down"> <router-view></router-view> </transition> 2)在css中加入样式 .slide-down-enter-active, .slide-down-leave-active { transition: all .4s ease; opacity: .7; transform: translate3d(0, 6rem, 0); } .slide-down-enter, .slide-down-leave-active { opacity: .1; transform: translate3d(0, 6rem, 0); } |
十、语法篇
1 ) 在style标签中导入其他css @import './assets/css/index.css' (目前同一个文件离引入两个css就报错了) 解决他在是在main.js,用require(‘./assets/css/base.css’) 全局引用 2) |
十一、项目注意与优化
1) 第三方库的js或者是css,最好用link和script在index.html中引入,避免打包的时候太大 2) axios是不能直接use的 3) index.html引入的连接地址需要写绝对路径 <script src="http://localhost:8080/src/assets/js/rem.min.js"></script> 4) 返回按钮的处理 <a href="#" onclick="window.history.go(-1)">返回</a> 5 ) 如何在vue里使用jquery 在main.js中加入 import $ from ‘./jquery.min.js’即可 |
Vue2.0项目实战语法的更多相关文章
- vue2.0项目实战(1)基础入门
最近公司的H5项目准备重构,部门老大说前端使用vue2.0来开发,所以就准备把整个项目的开发过程记录下来,一方面是为了记录开发过程中遇到的坑,另一方面也加强自己写作的能力. 什么是 Vue? 简要介绍 ...
- vue2.0项目实战(4)生命周期和钩子函数详解
最近的项目都使用vue2.0来开发,不得不说,vue真的非常好用,大大减少了项目的开发周期.在踩坑的过程中,因为对vue的生命周期不是特别了解,所以有时候会在几个钩子函数里做一些事情,什么时候做,在哪 ...
- 前端 高级 (二十五)vue2.0项目实战一 配置简要说明、代码简要说明、Import/Export、轮播和列表例子
一.启动服务自动打开浏览器运行 二.配置简要说明 1.node_modules 安装好的依赖文件,中间件等,所在位置 2.package.jason 配置当前项目要安装的中间件和依赖文件 { &quo ...
- vue2.0项目实战(3)使用axios发送请求
在Vue1.0的时候有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource. 关于为什么放弃推荐? -> 尤 ...
- vue2.0项目实战使用axios发送请求
在Vue1.0的时候有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource. 关于为什么放弃推荐? -> 尤 ...
- vue2.0项目实战(5)vuex快速入门
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.Vuex 也集成到 Vue 的官方调试工具 ...
- vue2.0项目实战(2)使用 vue-cli 搭建项目
Vue-cli是官方推荐的快速构建单页应用的脚手架.官方给的建议,如果你是初次尝试Vue,哪就老老实实用普通的书写引入js文件,这里牵扯太多的东西,例如webpack .npm .nodejs 等等, ...
- 前后端分离之vue2.0+webpack2 实战项目 -- webpack介绍
webpack的一点介绍 Webpack 把任何一个文件都看成一个模块,模块间可以互相依赖(require or import),webpack 的功能是把相互依赖的文件打包在一起.webpack 本 ...
- vue2.0与实战开发
慕课网实战 百度云 web前端实战: Node.js入门到企业Web开发中的应用 Web前端性能优化 让你的页面飞起来 前端跳槽面试必备技巧 前端JavaScript面试技巧全套 node.JS 线上 ...
随机推荐
- eFrameWork学习笔记-eOleDB
eOleDB是eFrameWork框架下基础的数据访问类,用于执行SQL语句,返回DataTable,分页,返回数据库所有库,库的所有表,表的所有列,Json导入.导出等. HTML: <div ...
- C#学习(1):类型约束
where T : class泛型类型约束 类型参数约束,.NET支持的类型参数约束有以下五种: where T : struct | T必须是一个结构类型 where T : class T必须是一 ...
- vue + echarts画圈圈
<div class="chart-bar-left" id= "chartbar-left" style="margin-top:1%;&qu ...
- ES6学习之ES5之后新增的字符串方法
1.字符串模板:用法:`${变量名}` (好像是C#6.0中也引入了类似的方法.C#中的用法:$"我是{变量名}" ---> $"我叫{name}" ,相 ...
- MongoDB账号管理及实践
此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 目前蜂巢(云计算基础服务)MongoDB上已经有数十个实例,其中不少是企业用户或公司内部产品用户的.用户多了 ...
- 深入了解java虚拟机(JVM) 第八章 常见的jvm调优策略
一般来说,jvm的调优策略是没有一种固定的方法,只有依靠我们的知识和经验来对项目中出现的问题进行分析,正如吉德林法则那样当你已经把问题清楚写出来,就已经解决了一半.虽然JVM调优中没有固定的策略,但是 ...
- 点击input消除默认背景颜色:focus
1.在谷歌浏览器会出现默认点击input框黄色背景,如何去除? //消除google浏览器黄色框 input:-webkit-autofill, input:-webkit-autofill:hove ...
- 完全卸载mysql数据库教程
转自:https://jingyan.baidu.com/article/f96699bbaa8fc1894f3c1b5a.html 1,控制面板——>所有控制面板项——>程序和功能,卸载 ...
- linux系统解决boot空间不足
有时候更新Linux系统是会碰到boot空间不足的错误,原因基本上是安装时boot空间设置问题可以通过删除旧的内核来释放boot空间. ubuntu: 1.查看当前使用内核版本号 unam ...
- c++之选择排序和冒泡排序实现
1.冒泡排序 冒泡排序就是通过对比前一个和后一个数的大小,按照规则进行顺序的调换.每一轮对比之后最大或者最小值都会浮到最上面或者沉到最低下. 如:对这一数组进行冒泡排序:int a[5]{34,12 ...