在静态页面中使用 Vue.js

不使用Node.js, NPM, Webpack 等, 在静态页中使用Vue.js. 包括路由, 单文件组件.

1. 创建index.html

index.html做为项目的首页, 主要用来定义页面框架, 加载必需的cssscript.

这里使用element-ui的导航菜单组件搭建了一个页面框架.

需要注意的是, <el-menu> 标签要加上 :default-active="$route.path"@select="handleSelect"; 有了这两个属性才能实现路由的跳转.

在菜单项<el-meun-item>标签中要加上index="menu-2-index"属性, 意思就是当前菜单对应的路由.

最后不要忘记"<router-view></router-view>". Vue 组件将会被填充的这里.

script主要引用的有vuevue-router以及element-ui, ajax请求使用的是axios, 如果不喜欢可以更换为jQuery等.

<!DOCTYPE html>
<html lang="en" xmlns:th="http:www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
<title>Vue Test</title>
</head>
<body>
<div id="app">
<el-container style="border: 1px solid #eee">
<el-aside width="200px" style="background-color: rgb(238, 241, 246)">
<el-menu :default-openeds="['1']" :default-active="$route.path" @select="handleSelect">
<el-menu-item index="">
<template slot="title"><i class="el-icon-message"></i>菜单1</template>
</el-menu-item>
<el-menu-item index="/menu-2-index">
<template slot="title"><i class="el-icon-menu"></i>菜单2</template>
</el-menu-item>
<el-menu-item index="/menu-3-index">
<template slot="title"><i class="el-icon-setting"></i>菜单3</template>
</el-menu-item>
</el-menu>
</el-aside>
<el-container>
<router-view></router-view>
</el-container>
</el-container>
</div>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vue-router/dist/vue-router.js "></script>
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script src="./js/util.js"></script>
<script src="./js/route.js"></script>
<script src="./js/main.js"></script>
</body>
</html>

2. 创建单文件组件

单文件组件格式与 Vue 官网实例一致, HTML片段必须使用<template>标签包括.

<template>
<div id="menu1">
<h1>Hello Menu 1</h1>
<h2>{{message}}</h2>
</div>
</template> <script>
exports = {
data: function () {
return {
message: 'Hello Vue!'
}
}
}
</script> <style>
#menu1 {
font-size: 12px;
}
</style>

3. 定义路由配置

组件的加载使用异步方式, util.loadComponent(url), 此方法中传入服务器url, 接收服务器返回的单文件组件, 即HTML片段.

var routes = [{
path: '/menu-1-index',
name: 'menu-1-index',
component: util.loadComponent('../views/menu1.html')
}, {
path: '/menu-2-index',
name: 'menu-2-index',
component: util.loadComponent('./views/menu2.html')
}]; var router = new VueRouter({
routes: routes
});

4. 定义main.js

Vue实例中绑定路由, 并实现handleSelect方法, 用于路由的跳转.

var app = new Vue({
el: '#app',
router : router,
data: function () {
return {
activeIndex:1,
}
},
methods: {
handleSelect : function(key, path) {
console.log(key, path)
this.$router.push(key)
}
}
});

可在附件中下载实例代码: 附件

在静态页面中使用 Vue.js的更多相关文章

  1. Atitit  项目界面h5化静态html化计划---vue.js 把ajax获取到的数据 绑定到表格控件 v2 r33.docx

    Atitit  项目界面h5化静态html化计划---vue.js 把ajax获取到的数据 绑定到表格控件 v2 r33.docx 1. 场景:应用在项目列表查询场景下1 1.1. 预计初步掌握vue ...

  2. 在webpack中配置vue.js

    在webpack中配置vue.js 这里有两种在webpack中配置vue.js的方法,如下: 1.在main.js中引入vue的包: index.html: <!DOCTYPE html> ...

  3. 在django中使用vue.js需要注意的地方

    有接口如下: http://127.0.0.1:8000/info/schemes/ 返回json数据: [ { "name": "(山上双人标准间)黄山经典二日游(魅力 ...

  4. 使用VS2017开发APP中使用VUE.js开发遇到打包出来的android文件 在低版本的android(4.3)中无法正常使用

    使用VS2017开发VUE的APP应用遇到的问题集合 1,  打包出来的apk文件在Android 6.0版本以上手机可以正常打开,在Android 4.3版本手机上无法打开 原因:一开始猜测是不是V ...

  5. 在HTML页面中加载js文件和css文件的方法

    1.在HTML页面加载js文件的方法: function loadScriptFile(filePath){ var script = document.createElement("scr ...

  6. visual studio 2019 中初始化 vue.js 项目

    vs项目模板,webpack模板的创建方式在vs里创建后,npm install的过程会卡很久,暂时原因不明,感觉应该是文件太多,需要写入太多零碎文件. 试了几种初始化方法,还是用最新cli创建最好, ...

  7. Ajax在静态页面中向指定url发送json请求获取返回的json数据

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  8. 静态页面中如何传json数据

    首页传递参数组装成json数据,再编码 var param="{type:'"+type+"',text:'"+select_text+"',sele ...

  9. MVC 访问静态页面 View 下面放JS

    http://blog.csdn.net/qq_17255515/article/details/53293120

随机推荐

  1. JVM — 性能调优

    概念: 一:堆(Heap)和非堆(Non-heap)内存 按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配.堆是在 Java 虚拟机启动时创建的.” ...

  2. antd组件Upload实现自己上传

    前言 在实现图片上传时,可能需要用到Upload,但是它默认的上传方式是加入图片后直接上传,如果要实现最后再一次性上传,需要自定义内容. //添加按钮的样式 const uploadButton = ...

  3. 如何遍历div里面的文本内容,用each方法,

    如何遍历div里面的文本内容,然后进行匹配传来的数据,进行选中div,并进行CSS样式处理, for(i = 0; i< $(".itemMenuRowBox").child ...

  4. HTML的条件注释及hack技术

    在很多时候,前端的兼容性问题,都很让人头痛!幸运的是,微软从去年声明:从2016年1月12日起,微软将停止为IE8(包括IE8)提供技术支持和安全更新.整个前端圈子都沸腾起来,和今年七月份Adobe宣 ...

  5. vuex深入

    多模块  http://www.php.cn/js-tutorial-385084.html Vuex 模块化+命名空间后, 如何调用其他模块的 state, actions, mutations, ...

  6. 47. Permutations II (JAVA)

    Given a collection of numbers that might contain duplicates, return all possible unique permutations ...

  7. Out of memory: Kill process 25280 (php-fpm) score 86 or sacrifice child

    php-fpm 耗尽服务器内存的办法 java服务今天突然宕机,通过 cat /var/log/messages进行查看,发现是系统内存溢出导致系统把java的进程杀掉了 使用top查看系统内存使用情 ...

  8. CentOS上安装Git及配置远程仓库

    首先登陆CentOS服务器,连接上服务器之后我们使用yum remove git 命令删除已安装的Git,若之前没安装过Git则不需要这一步.注意前提是你的CentOS服务器上安装了yum,这是Cen ...

  9. python基础操作---tuple

    #coding:utf-8 tup1 = ('physics', 'chemistry', 1997, 2000); tup2 = (1, 2, 3, 4, 5 ); tup3 = "a&q ...

  10. pandas 的axis参数的理解

    # pandas的axis参数怎样理解? # axis=0 或者 "index": # 如果是单行操作,就指的是某一行 # 如果是聚合操作,指的是跨行cross rows # ax ...