vue+ vue-router + webpack 踩坑之旅
说是踩坑之旅 其实是最近在思考一些问题 然后想实现方案的时候,就慢慢的查到这些方案 老司机可以忽略下面的内容了
1)起因 考虑到数据分离的问题 因为server是express搭的 自然少不了res.render("xx",data) 这句话的意思就是去查找相应的模板文件然后在用数据去渲染在将渲染好的页面去返回给浏览器,给浏览器去解析,渲染模板其实就是做的替换字符串+拼接字符串的活 各种的模板引擎也有各个优化的点(比如可以将对应的模板编译的函数保存在内存中,然后在通过数据去渲染 这样就不用每次去编译渲染了) 但是这并不是一种前后端分离的方案 我理解的是后端只提供数据接口的api,然后前端通过api去获取数据在去渲染页面,因为最近在学习vue,就想着用vue来这些事情
2) 思考实现的思路 我的第一种想法是在express中配置路由 通过res.sendfile(file) 这个页面返回给前端后,通过vue进行管理(使用vue-rosource去获取特定的数据) 但是当是这样的url user/11 user/22 的时候我们还给前端返回同样的页面 前端怎么根据这个11 22 去获取特定用户的数据去渲染页面呢 其实我们返回的就是模板 接着就了解到vue-router 可以通过$route.params获取后面的11和22 这样我们就能动态的去获取数据渲染模板了 模板其实可以理解为组件 直接在template里面写不友好 在看网上的例子的时候就方面了webpack + vue.loader
3)解决方案 webpack + vue + vue-loader +express(提供后端数据)
4)遇到的各种坑
4.1 babel 配置的问题 (应该是需要配置bebel的转换环境)
vue模板使用es6语法写的 要在webpack中配置 (安装babel-loader babel-preset-es2015 vue-loader)
在加载vue的时候总是报错es6配置有问题 我通过下面的配置解决了这个问题
4.1.1 在webpack.config.js的同级目录下生成.babelrc 内容如下

4.1.2 在webpack.config.js中进行babel的配置 这个是我的webpack.config.js的配置

4.2 在组件中有template报错
发现nodo_modules中vue中package.json中main是dist/vue.common.js 而不是dist/vue.js 在官网上找到了这个问题的答案

也就是想支持template方式的就要引入dist/vue.js
4.3 vue-router的版本问题 下面是vue-router2的官方的翻译文档 介绍vue-router2
4.4 页面路由后url变化的处理
当访问index.html后 我们点击下面的router-link的时候 url会发生变化 也就是从index.html变成 index.html/first 应该是我这的配置出现了问题 为什么没有变成index.html#first这种 这个问题不是很明白 在url变成这种的时候 去刷新页面就会走express的路由,不存在这个路由就会报错 我的解决方案是添加一个末尾的中间件 返回index.html
5)总结
其实踩坑是一个学习的过程,vue官网的例子也大致的看过但是实际用的时候还是不一样,最好的方式就是在官网上去找一些例子 然后自己在本地重新的弄一遍算是一个学习过程 上面的方案可以大致的一个简单的单页应用 也实现了前后端分离 还有就是官网的例子要好好看
6)总结的学习资料
6.1 webpack相关
webpack入坑之旅(这里面的vue-router是vue1.0的)
webpack傻瓜指南(里面的三篇文章都不错)
6.2 vue相关
vue-resource 官网 vue-resource全攻略
6.3 一篇博友的踩坑文章
vue+ vue-router + webpack 踩坑之旅的更多相关文章
- webpack踩坑之旅
1.安装webpack失败问题 错误原因: 这主要是我以普通用户的身份进行webpack的全局安装,权限不够. [普通用户] 说白了就是通过运行window+r+cmd进入的命令行 解决方式: 用管理 ...
- webpack入坑之旅(五)加载vue单文件组件
这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack,在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webpack入坑之旅(一)不 ...
- vue踩坑之旅 -- computed watch
vue踩坑之旅 -- computed watch 经常在使用vue初始化组件时,会报一些莫名其妙的错误,或者,数据明明有数据,确还是拿不到,这是多么痛苦而又令人忍不住抓耳挠腮,捶胸顿足啊 技术点 v ...
- vue项目移植tinymce踩坑
转载:https://segmentfault.com/a/1190000012791569?utm_source=tag-newest 2019-2-18 貌似这篇文章帮了大家一些小忙最近tinym ...
- webpack入坑之旅(六)配合vue-router实现SPA
这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack,在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webpack入坑之旅(一)不 ...
- 我的微信小程序入门踩坑之旅
前言 更好的阅读体验请:我的微信小程序入门踩坑之旅 小程序出来也有一段日子了,刚出来时也留意了一下.不过赶上生病,加上公司里也有别的事,主要是自己犯懒,就一直没做.这星期一,赶紧趁着这股热乎劲,也不是 ...
- webpack入坑之旅(四)扬帆起航
这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack,在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webpack入坑之旅(一)不 ...
- webpack入坑之旅(三)webpack.config入门
这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack,在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webpack入坑之旅(一)不 ...
- webpack入坑之旅(二)loader入门
这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack 在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webpack入坑之旅(一)不 ...
随机推荐
- Red Gate(SQLToolbelt)SQL Server的安装与注册(破解)
Red Gate(SQLToolbelt)是SQL Server辅佐工具 1.SQL Compare 比较和同步SQL Server数据库结构 2.SQL Data Compare 比较和同步SQL ...
- Nhibernate 4.0 教程入门
Nhibernate 4.0 教程 目录 1. 下载Nhibernate 4.04. 1 2. 入门教程... 2 3. 测试项目详解... 3 4. 总结.. ...
- Java 循环中标签的作用
continue和break可以改变循环的执行流程,但在多重循环中,这两条语句无法直接从内层循环跳转到外层循环.在C语言中,可以通过goto语句实现多重循环的跳转,但在非循环结构中使用goto语句会使 ...
- 详解CSS的相对定位和绝对定位
CSS的相对定位和绝对定位通常情况下,我们元素的position属性的值默认为static 就是没有定位,元素出现在正常的文档流中,,这个时候你给这个元素设置的left,right,bottom,to ...
- ScrollView中嵌套GridView,ListView只显示一行的解决办法
转载:http://blog.csdn.net/luohai859/article/details/39347583 关于为什么只显示一行,个人理解是:如果单独使用GridView和ListView, ...
- Power BI官方视频(2) Power BI嵌入到应用中的3种方法
今天给大家介绍3种将Power BI嵌入到应用中的方法. 本文原文地址:Power BI官方视频(2) Power BI嵌入到应用中的3种方法 Power BI系列文章地址:微软Power BI技术文 ...
- JSONP详解
0.关于JSONP 什么的JSONP JSONP(JSON with Padding)是资料格式 JSON 的一种“使用模式”,可以让网页从别的网域要资料.另一个解决这个问题的新方法是跨来源资源共享. ...
- 分析MariaDB初始化脚本mysql_install_db
在初始化MySQL的过程中经常会碰到各种问题,如 FATAL ERROR: Could not find ./bin/my_print_defaults ERROR: Can't create/wri ...
- Last-Modified、If-Modified-Since 实现缓存和 OutputCache 的区别
先梳理三个概念: OutputCache:页面输出缓存,一般 ASP.NET 应用程序会用到. Last-Modified:Http 响应头(Http Reponse Header),由服务器发给客户 ...
- 用大白话聊聊JavaSE -- 自定义注解入门
注解在JavaSE中算是比较高级的一种用法了,为什么要学习注解,我想大概有以下几个原因: 1. 可以更深层次地学习Java,理解Java的思想. 2. 有了注解的基础,能够方便阅读各种框架的源码,比如 ...