一、介绍
vue.js 是 目前 最火的前端框架,vue.js 兼具 angular.js 和 react.js 的优点,并剔除它们的缺点,并且提供了很多的周边配套工具 如vue-router 、vue-resource 、vuex等等 ,通过他们我们可以很轻松的构建一个大型单页应用。
目前Vue版本为:Vue2.0
官网地址:http://vuejs.org.cn/
查看API文档:https://vuefe.cn/v2/api/
对比其他框架:http://vuejs.org.cn/guide/comparison.html
二、环境搭建
我们使用vue-cli脚手架工具构建
#安装 vue-cli npm install -g vue-cli #使用vue-cli初始化项目 vue init webpack vue-vuerouter-demo #进到目录 cd vue-vuerouter-demo #安装依赖 npm install #开始运行 npm run dev
浏览器访问http://localhost:8080
构建完成之后基本目录结构如下:
流程说明:
1、首先会打开首页 也就是我们看到的index.html文件
2、使用webpack打包之后默认加载main.js文件并将其引入到index.html文件中
三、开发
我们在main.js文件中引入相关模块以及组件
import Vue from 'vue' import App from './App' import router from './router' //这里引入的是router目录,会默认识别里面的index.js文件(不能是其他名字) // 引入并使用vue-resource网络请求模块 import VueResource from 'vue-resource' Vue.use(VueResource)
实例化vue对象配置选项路由及渲染App组件
new Vue({ el: '#app', //这里绑定的是index.html中的id为app的div元素 router, render: h => h(App) // 这里的render: h => h(App)是es6的写法 // 转换过来就是: 暂且可理解为是渲染App组件 // render:(function(h){ // return h(App); // }); })
App.vue文件是我们的组件入口,之后所有的开发在这里面进行
<template> <div id="app"> <!-- <hello></hello> --> <div class="nav"> <!-- 使用 router-link 组件来导航. --> <!-- 通过传入 `to` 属性指定链接. --> <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 --> <ul> <li><router-link to="/home">Home</router-link></li> <li><router-link to="/about">About</router-link></li> </ul> </div> <div class="main"> <!-- 路由匹配到的组件将渲染在这里 --> <router-view></router-view> </div> </div> </template> <script> // import Hello from './components/Hello' export default { name: 'app', components: { // Hello } } </script> <style> body{ background-color: #f8f8ff; font-family: 'Avenir', Helvetica, Arial, sans-serif; color: #2c3e50; } .nav{ position: fixed; width: 108px; left: 40px; } .nav ul{ list-style: none; margin: 0; padding: 0; } .nav ul li{ width: 108px; height: 48px; line-height: 48px; border:1px solid #dadada; text-align: center; } .nav ul li a{ text-decoration: none; } .main{ height: 400px; margin-left: 180px; margin-right: 25px; } </style>
要使用路由我们首先要在router/index.js文件中创建路由并配置路由映射 ,并通过export输出router到main.js文件中
// 这里面负责写路由映射,便于管理 // 引入路由模块并使用它 import Vue from 'vue' import VueRouter from 'vue-router' Vue.use(VueRouter) // 创建路由实例并配置路由映射 // path:'*',redirect:'/home' 重定向到path是/home的映射 const router = new VueRouter({ routes:[{ path: '/home', component: require('../components/Home.vue') },{ path: '/about', component: require('../components/About.vue') },{ path:'*',redirect:'/home' }] }) // 输出router export default router;
上面配置了2个组件映射 分别Hme.vue组件和About组件,配置好之后我们就可以开始使用路由了
<!-- 使用 router-link 组件来导航. --> <!-- 通过传入 `to` 属性指定链接. --> <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 --> <ul> <li><router-link to="/home">Home</router-link></li> <li><router-link to="/about">About</router-link></li> </ul>
<!-- 路由匹配到的组件将渲染在这里 --> <router-view></router-view>
点击home和about导航会映射到对应的组件,然后将组件渲染在</router-view>这里面
到此,整个流程我们已经走通了。
接下来我们使用vue-resource网络插件动态加载数据并显示出来
1、先在main.js文件中引入并使用vue-resource网络请求模块
import VueResource from 'vue-resource' Vue.use(VueResource)
2、创建Home.vue组件
我们需要在created钩子函数中去请求网络,这里我们使用豆瓣的API去请求电影列表数据,请求成功之后我们将其数据显示到页面中
<template> <div class="home"> <h1>{{ msg }}</h1> <ul> <li v-for="article in articles"> <div class="m-img inl-block"><img v-bind:src="article.images.small"/></div> <div class="m-content inl-block"> <div>{{article.title}}</div> <div>年份:{{article.year}}</div> <div>类型:{{article.subtype}}</div> </div> </li> </ul> </div> </template> <script> // mounted 钩子函数 这里去请求豆瓣数据 export default { name: 'home', data () { return { msg: '电影列表', articles:[] } }, created:function(){ //这里mounted和created生命周期函数区别 this.$http.jsonp('https://api.douban.com/v2/movie/top250?count=10', {}, { headers: { }, emulateJSON: true }).then(function(response) { // 这里是处理正确的回调 console.log(response); this.articles = response.data.subjects // this.articles = response.data["subjects"] 也可以 }, function(response) { // 这里是处理错误的回调 console.log(response) }); } } </script> <!-- Add "scoped" attribute to limit CSS to this component only --> <style scoped> ul{ list-style: none; margin: 0; padding: 0; } ul li{ border-bottom: 1px solid #999; padding: 10px 0; } .inl-block{ display: inline-block; } .m-img{ } .m-content{ margin-left: 20px; } </style>
3、最后我们运行npm run dev命令查看页面显示效果
OK,可以看到我们的数据成功加载出来了,可以点击左侧的导航来进行导航内容切换
源码下载
总结
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对小牛知识库的支持。
本文向大家介绍vue2.0+vue-router构建一个简单的列表页的示例代码,包括了vue2.0+vue-router构建一个简单的列表页的示例代码的使用技巧和注意事项,需要的朋友参考一下 一: 环境搭建 使用vue-cli脚手架工具构建 安装 vue-cli 使用vue-cli初始化项目 进到目录 安装依赖 开始运行 浏览器访问http://localhost:8080 1、首先会打开首页 也
下边的程序在端口8088上启动了一个网页服务器;SimpleServer会处理/test1url使它在浏览器输出hello world。FormServer会处理/test2url:如果url最初由浏览器请求,那么它就是一个GET请求,并且返回一个form常量,包含了简单的input表单,这个表单里有一个文本框和一个提交按钮。当在文本框输入一些东西并点击提交按钮的时候,会发起一个POST请求。Fo
本文向大家介绍构建一个简单的CaaS系统,包括了构建一个简单的CaaS系统的使用技巧和注意事项,需要的朋友参考一下 在CaaS系统出现前企业应用架构基本被IaaS/SaaS/PaaS等模式垄断,直到Docker的出现为我们打开了另一个扇大门,废话不说了,我们直奔主题。 我们先了解下一个简单的CaaS系统是如何为用户提供服务的: 企业用户上传它的应用代码或其他代码托管方式,我们生成用户应用的镜像,或
本文向大家介绍用Swift构建一个简单的iOS邮件应用的方法,包括了用Swift构建一个简单的iOS邮件应用的方法的使用技巧和注意事项,需要的朋友参考一下 在前几个月内,我一直在做InboxKit的研究,它是关于Inbox平台的IOS SDK。Inbox为和邮件数据的交互提供高层API,使得你可以忽略IMAP,Exchange,MIME的解析以及thread探测(当然还有很多其他事情...),并使
目标 建立一个 lesson1 项目,在其中编写代码。当在浏览器中访问 http://localhost:3000/ 时,输出 Hello World。 挑战 访问 http://localhost:3000/ 时,输出 你好,世界。 知识点 包管理器 npm 。使用 npm 安装包,并自动安装所需依赖。 框架 express 。学习新建 express 实例,并定义 routes ,产生输出。
目标 建立一个lesson1项目,在项目中创建html、css、js、图片等静态文件,编写webpack配置文件,最后生成如下页面: 要求: 1、使用require引入jquery,且页面中要使用jquery来操作DOM,另外html文件要引用js、css、图片文件; 2、输入命令npm run build能正确打包出静态文件,本地打开index.html时页面样式正常且无报错。 挑战 将原页面中
经过很长时间,我终于能够在这个环境下使用VS 2017的开发人员命令提示符通过命令行创建一个简单的Graal原生“HelloWorld”: null 我的下一个目标是生成简单的可执行文件,但带有一些更复杂的依赖关系,例如。下面的vertx示例 https://how-to.vertx.io/graal-native-image-howto/ 理想情况下,我的意图是使用maven插件生成它。如果不可
本文向大家介绍vue-router路由简单案例介绍,包括了vue-router路由简单案例介绍的使用技巧和注意事项,需要的朋友参考一下 官方文档: 旧版:https://github.com/vuejs/vue-router/tree/1.0/docs/zh-cn 新版:http://router.vuejs.org/(2.0版本) 此文是旧版 文件结构图: 基本用法: <router-view>