Vue.js 相关问题
2017-03-17 16:23
260 查看
在尝试了微信小程序后,看了看vue.js的文档,发现两者还是有很多相似的地方,就尝试了一下vue.js,做了个简单的列表和详情,尝试路由,组件化,请求,打包等功能。下面介绍下我在尝试过程中遇到的问题和解决办法。
![](http://img.blog.csdn.net/20170317152718043?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDc4MzUyNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
其中,main.js是整体的入口文件,assets中放的是图片文件,components中放的是公共的组件,目前只用到了2个组件,头文件和轮播组件。views中是路由页面,通过路由切换的页面都在views中。router是路由控制的js文件。有不合理的地方希望看到的人指出,谢谢!
![](http://img.blog.csdn.net/20170317153728977?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDc4MzUyNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20170317153828306?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDc4MzUyNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20170317153832565?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDc4MzUyNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
自定义的小组件可以封装到一个大组件中,下图中引入了轮播组件和头文件组件,通过import进来引入拼装。
![](http://img.blog.csdn.net/20170317154142238?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDc4MzUyNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
然后在app.vue中通过同样的方式引入,就可以显示出来自己的组件了。(Swiper是通过mint-ui做的,具体可查看官方文档)
![](http://img.blog.csdn.net/20170317154817225?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDc4MzUyNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
其中 router的路径按照自己项目路径中配置。然后在router下配置相应的路由路径,如图所示:
![](http://img.blog.csdn.net/20170317155008414?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDc4MzUyNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
这里有一个困扰我很久的问题,需要提示一下,一定要把/*的路由放在最后一个,要不会出现路由链接已经跳转了,但是路由页面却无法跳转的问题。个人认为他是按照顺序匹配的,*是所有跳转规则都符合,所以会一直显示*下的路由页面。一定要注意!
![](http://img.blog.csdn.net/20170317155749308?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDc4MzUyNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
其中getList为请求的方法,Indicator这个组件方法在mint-ui中,具体查看官方文档,是显示加载中风火轮的组件,这里通过jsonp请求,防止跨域问题,(如果未安装vue-resource,this下是没有$http的,所以一定要确保安装),parseList为数据处理,吧处理好的数据放在data中的dataList中,就可以在模板中循环遍历渲染页面了。这里就跟微信小程序相似了,不细说了,具体可查看官方文档。
另外一个就是困扰我的另外一个问题,如何用路由跳转,我这里的解决方法请看代码:
![](http://img.blog.csdn.net/20170317160255574?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDc4MzUyNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
这里是跳转方法 通过拼接好路由路径,push到$router中进行路由跳转,获取id方法如下
![](http://img.blog.csdn.net/20170317160306840?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDc4MzUyNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
这里定义了点击事件,把id传入到了点击事件中来获取id,后面的data-newsId有么有用我也不清楚。。。没有尝试去掉。。。
到这里就可以进行页面跳转了,下图为本demo的跳转的效果图:
![](http://img.blog.csdn.net/20170317160836770?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDc4MzUyNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20170317160841911?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDc4MzUyNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
我的问题是这么解决的。
至此,vue的第一步尝试就算完成了,如果本文中有说的不对,不合理,有错误的地方,请及时指出,一定积极改正,谢谢!
1.整体项目搭建
在尝试静态页引入vue.js后,通过npm搭建了vue的项目,这些网上搜的教程中都会有,主要的问题是在搭好的项目中,没有路由的模块和请求的模块和webpack,需要单独安装。否则是无法配置路由和用请求的。2.项目目录
通过脚手架搭建的项目已经把大部分文件搭建完成,其余的部分按照功能划分其中,main.js是整体的入口文件,assets中放的是图片文件,components中放的是公共的组件,目前只用到了2个组件,头文件和轮播组件。views中是路由页面,通过路由切换的页面都在views中。router是路由控制的js文件。有不合理的地方希望看到的人指出,谢谢!
3.组件
在这个尝试项目中 我引入的是由饿了么前端做的mint-ui,而且暂时只用到了轮播组件。。如果有好用的组件希望大家推荐一下,谢谢!4.自定义组件尝试
自己写的组件需要包在template中,然后比较重要的一点,组件内容必须有一个根节点,就是一定要有个div节点,然后内容在这里面拓展,否则会报错,图片分别为报错信息,错误代码和正确代码。自定义的小组件可以封装到一个大组件中,下图中引入了轮播组件和头文件组件,通过import进来引入拼装。
然后在app.vue中通过同样的方式引入,就可以显示出来自己的组件了。(Swiper是通过mint-ui做的,具体可查看官方文档)
5.配置路由
首先需要在入口文件main.js中引入路由文件,如图所示:其中 router的路径按照自己项目路径中配置。然后在router下配置相应的路由路径,如图所示:
这里有一个困扰我很久的问题,需要提示一下,一定要把/*的路由放在最后一个,要不会出现路由链接已经跳转了,但是路由页面却无法跳转的问题。个人认为他是按照顺序匹配的,*是所有跳转规则都符合,所以会一直显示*下的路由页面。一定要注意!
6.请求数据并通过路由跳转
首先确定是否安装了vue-resource,确定后,我的代码如下:其中getList为请求的方法,Indicator这个组件方法在mint-ui中,具体查看官方文档,是显示加载中风火轮的组件,这里通过jsonp请求,防止跨域问题,(如果未安装vue-resource,this下是没有$http的,所以一定要确保安装),parseList为数据处理,吧处理好的数据放在data中的dataList中,就可以在模板中循环遍历渲染页面了。这里就跟微信小程序相似了,不细说了,具体可查看官方文档。
另外一个就是困扰我的另外一个问题,如何用路由跳转,我这里的解决方法请看代码:
这里是跳转方法 通过拼接好路由路径,push到$router中进行路由跳转,获取id方法如下
这里定义了点击事件,把id传入到了点击事件中来获取id,后面的data-newsId有么有用我也不清楚。。。没有尝试去掉。。。
到这里就可以进行页面跳转了,下图为本demo的跳转的效果图:
7.打包
打包通过npm命令打包就好了,npm run build 就可以在dist下看到自己的文件了,这里可能会出现打包后无法访问的问题,可以尝试下把config下的index.js中的assetsPublicPath:'/' 改为assetsPublicPath:' . ',然后重新打包 尝试,我的问题是这么解决的。
8.放到服务器上
打包完成的文件我直接放到了tomcat下的webapps中 直接访问index就可以查看了。(好像设置在config的index下的端口号并没有影响,我的是3030,我文件放在端口号为8080的tomact下了,不过我还运行着一个3030的tomcat,不知道有没有影响)至此,vue的第一步尝试就算完成了,如果本文中有说的不对,不合理,有错误的地方,请及时指出,一定积极改正,谢谢!
相关文章推荐
- vue.js 关于router-link的相关样式问题
- vue.js的package.json相关问题解惑
- vue.js中自定义过度类名中的个别属性不起作用的问题
- 浅析Node.js中使用依赖注入的相关问题及解决方法
- vue.js 2.0父子组件学习入门套路(推荐相关阅读)
- 解决Vue.js由于延时显示了{{message}}引用界面的问题
- vue.js默认路由不加载linkActiveClass问题的解决方法
- Vue.js相关资料地址
- 【Electron】Electron开发中,与部分jQuery/angularjs/vuejs等外链冲突的问题
- vue项目实践教程3:中间大的五选项底部切换卡制作及相关问题解决
- vue.js中关于下拉框的值默认及绑定问题
- vuejs+mint-ui小问题集
- vue.js在laravel框架模板文件中引入失败问题
- 前端人员必知的Vue.js条件v-if与列表循环v-for相关用法
- vue问题: 解决ERROR in xxx.js from UglifyJs
- web前端学习日记32-----vuejs相关学习
- 解决“UIkit与Vue.js结合使用时,UIkit的图标会显示两个”的问题
- vue 在nginx下页面刷新出现404问题解决和在nginx下页面加载了js但是页面显示空白问题解决
- 分享vue.js devtools遇到一系列问题
- 解决使用vue.js路由后失效的问题